Source document
docs/platform/PARTNER-AUDIT-VERIFICATION.md
Source version
0.0.0
Generated time
2026-07-06T14:59:21.955Z
Owner
Unassigned
Audience
Internal
Status
Approved

Partner Audit — Verification (Beta-4, Deliverable #5)

Xác minh mỗi thao tác quản lý Partner sinh đúng AuditEvent. Không thay đổi mô hình audit hiện tại
(AuditEvent append-only, bảng audit_events) — Beta-4 chỉ dùng nó cho thao tác Partner.

Mô hình audit (không đổi)

(secret/token/apikey/authorization/card/...) + chỉ giữ primitive ⇒ không rò secret/PHI.

Actor = { kind:"authenticated", source:"ops_cli", role:"ops" }.

Bảng thao tác ↔ audit event (yêu cầu Deliverable #5)

Thao tácSinh audit actionEmit tại (code)
Partner createdpartner.createdProvisioningService.createPartner
Partner activatedpartner.activatedactivatePartnertransitionPartner
Partner suspendedpartner.suspendedsuspendPartnertransitionPartner
Partner re-activatedpartner.reactivatedreactivatePartnertransitionPartner
API Key issuedapikey.issuedissueKey
API Key rotatedapikey.rotatedrotateKey
API Key revokedapikey.revokedrevokeKey
(Partner revoked)partner.revokedrevokePartnertransitionPartner

Cách tự kiểm chứng

A. Tự động (CI) — nguồn tin cậy chính

src/__tests__/partner-management-e2e.test.ts chạy trọn luồng rồi assert cả 7 action tồn tại:

for (const a of ["partner.created","partner.activated","apikey.issued","apikey.rotated",
                 "partner.suspended","partner.reactivated","apikey.revoked"])
  assert.ok(actions.has(a));

src/__tests__/ops-partner.test.ts xác minh chuỗi qua CLI (show-audit) + không lộ raw key trong audit. Cả hai chạy trong npm run test:infra → cổng CI platform-ci.yml.

B. Thủ công — qua CLI

npm run ops -- show-audit --partner <partnerId> --json

Kỳ vọng: mảng events theo thứ tự thời gian, mỗi phần tử { action, entityRef, actor, occurredAt, metadata }. Kiểm: đủ các action ở bảng trên; metadata chỉ chứa trường an toàn (fromStatus/toStatus/reason/environment/prefix/...), không có raw key.

Giới hạn đã biết (ghi nhận trung thực)

Rủi ro: nếu tiến trình chết giữa update và append, có thể lệch. Đề xuất Beta-5: gói mỗi thao tác + audit trong prisma.$transaction (atomic). Chi tiết ở Release Report.