# Merge Report Service Setup Dokumen ini untuk aktivasi integrasi: - FE -> one-api-lab -> `ibl_merge_report_service` - one-api-lab menjadi merge gateway - service Go hanya menerima `POST /merge` ## 1. Config DB Isi kolom berikut di `one_lab.conf_systems`: - `S_SystemsMergeReportServiceBaseUrl` - `S_SystemsMergeReportServiceSecret` - `S_SystemsMergeReportAdminGroupIDs` Contoh query: ```sql UPDATE conf_systems SET S_SystemsMergeReportServiceBaseUrl = 'http://127.0.0.1:8005', S_SystemsMergeReportServiceSecret = 'ganti-dengan-shared-secret', S_SystemsMergeReportAdminGroupIDs = '1' WHERE S_SystemsID = 1; ``` Catatan: - `S_SystemsMergeReportServiceBaseUrl` jangan diakhiri slash. - `S_SystemsMergeReportAdminGroupIDs` diisi daftar `M_UserGroupID` dipisah koma. - `S_SystemsMergeReportGateway` tetap dipakai untuk membentuk absolute URL source PDF dan preview URL. ## 2. Kontrak Service Go Endpoint minimal yang harus tersedia: - `POST /merge` Request: Headers: - `Content-Type: application/json` - `X-Internal-Secret: ` Body: ```json { "name": "IBL12345-JOHN-DOE-merge-report.pdf", "urls": [ "https://devone.aplikasi.web.id/birt/frameset?__report=report/onelab/lab/rpt_test_email.rptdesign&__format=pdf&username=admin&PID=123&ts=1716963662" ], "mergeRequestID": 1036, "T_OrderHeaderID": 123 } ``` Expected response: - sukses: `200` dengan body binary PDF dan `Content-Type: application/pdf` - gagal validasi/source: `400` atau `422` - secret salah: `401` atau `403` - source tidak ditemukan: `404` - timeout/upstream: `408` atau `504` Perilaku yang wajib: - jika satu source gagal, seluruh merge gagal - tidak ada cache file/artifact dulu - fresh generate only ## 3. Endpoint one-api-lab Operasional: - `POST /mockup/fo/mergeemailv1/done/mergereport` Input minimal: ```json { "token": "", "T_OrderHeaderLabNumber": "IBL12345" } ``` Admin create snapshot: - `POST /tools/ibl_merge_report_admin/create_request` Admin preview: - `POST /tools/ibl_merge_report_admin/preview` Public preview/stream: - `GET /report/{mergeRequestID}` ## 4. Verifikasi Checklist setelah service Go siap: 1. `mergereport` insert row baru di `merge_request`. 2. Row `merge_request` menyimpan `mergeRequestT_OrderHeaderID`. 3. Row `merge_request` menyimpan `mergeRequestCreatedUserID`. 4. `/report/{id}` mengembalikan PDF, bukan JSON payload lama. 5. Error dari Go dipetakan ke pesan aman dari one-api-lab. 6. Admin tool gagal jika `M_UserGroupID` tidak masuk whitelist config.