# Mapping Endpoint pyPOS -> POS Gateway (Phase 1)

Tanggal: 2026-04-09

## Ringkasan

Saat ini gateway baru yang tersedia:

1. `POST /pos_gateway/PosGatewayApi/ingest`
2. `GET|POST /pos_gateway/PosGatewayStatus/query`

Contract gateway saat ini berbasis `event_type`, bukan satu endpoint terpisah per fitur.

## A. Endpoint pyPOS yang Sudah Siap Dipindah Sekarang

Siap dipindah via facade (tanpa ubah client pyPOS) atau langsung ke gateway jika pyPOS diubah.

| Endpoint pyPOS Saat Ini | Target Gateway | event_type | Status |
|---|---|---|---|
| `/eusvc/NonRest/setUploadStream` | `POST /pos_gateway/PosGatewayApi/ingest` | `sales_batch` | siap (hook ada) |
| `/eusvc/NonRest/getUploadCompileStatus` | `GET|POST /pos_gateway/PosGatewayStatus/query` (disarankan) atau ingest | `compile_status_query` | siap (hook ada) |
| `/eusvc/DataSync/serverSync` | `POST /pos_gateway/PosGatewayApi/ingest` | `sync_pull` | siap (hook ada) |
| `/eusvc/NonRest/get_preorder` | `POST /pos_gateway/PosGatewayApi/ingest` | `preorder_get` | siap (hook ada) |
| `/eusvc/NonRest/use_preorder` | `POST /pos_gateway/PosGatewayApi/ingest` | `preorder_use` | siap (hook ada) |
| `/eusvc/ProDiskon/checkFreeProdukQuota` | `POST /pos_gateway/PosGatewayApi/ingest` | `promo_quota_check` | siap (hook ada) |
| `/penjualan/ActivityReportApi/settlement` | `POST /pos_gateway/PosGatewayApi/ingest` | `settlement_push` | siap (hook ada) |

## B. Endpoint pyPOS yang Belum Siap Dipindah (Tetap Legacy Dulu)

Endpoint berikut belum punya event connector/hook facade di phase ini:

| Endpoint pyPOS Saat Ini | Rencana event_type Gateway | Status |
|---|---|---|
| `/eusvc/DataSync/doSync_auto` | `sync_check_update_legacy` (atau merge ke `sync_pull`) | belum |
| `/eusvc/DataSync/publicBranchLookup` | `branch_lookup_public` | belum |
| `/eusvc/DataSync/uiAssets` | `ui_assets_manifest` | belum |
| `/eusvc/NonRest/postDeviceRegistrasi` | `device_register` | belum |
| `/eusvc/NonRest/checkDevRegisV2` | `device_registration_status` | belum |
| `/eusvc/NonRest/server_CheckUpdate` | `sync_check_update` | belum |
| `/eusvc/ProDiskon/saveFreeProduk` | `promo_quota_consume` | belum |

## C. Rekomendasi Migrasi Praktis

## Opsi 1 (paling aman, tanpa ubah pyPOS dulu)

1. Biarkan pyPOS tetap ke endpoint lama.
2. Aktifkan facade mode `shadow`, validasi log + idempotency.
3. Naikkan endpoint tertentu ke mode `active` bertahap.

## Opsi 2 (pyPOS diubah langsung)

1. Ubah endpoint pyPOS yang masuk grup A langsung ke `PosGatewayApi/ingest`.
2. Sertakan `provider_code=pypos` dan `event_type` sesuai tabel.
3. Compile/status query gunakan `PosGatewayStatus/query`.

## D. Config Facade yang Harus Diaktifkan Saat Uji

Di `application/config/pos_gateway.php`:

1. `pos_gateway_enabled = true`
2. `pos_gateway_legacy_facade_enabled = true`
3. `pos_gateway_legacy_facade_mode = "shadow"` (awal)
4. `pos_gateway_legacy_facade_endpoint_map` aktifkan hanya endpoint yang diuji.

## E. Catatan Operasional

1. Default saat ini tetap OFF untuk keamanan backward compatibility.
2. Endpoint grup B tetap lewat jalur legacy sampai event gateway-nya ditambahkan.
3. Setelah grup A stabil, baru lanjut Phase 2 untuk melengkapi grup B.
