From 8a8ef798625db56ae4affd13f1bc3a46f323a220 Mon Sep 17 00:00:00 2001 From: JOY <5027251+JOY@users.noreply.github.com> Date: Thu, 24 Sep 2026 12:11:46 +0700 Subject: [PATCH 1/2] docs(roadmap): add phase 7 (enterprise parity & branding) from the 2026-09-22 audit Records the feature/branding audit outcomes: completed org avatar sync, auth hardening series, and branding batch 1; planned branding batch 2, org-level webhooks/tokens/audit log, CSC license gate removal (phase 6 prerequisite), embed white-label bypass, SSO group-role mapping/SCIM, and official legal text for /terms and /privacy. --- ROADMAP.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ROADMAP.md b/ROADMAP.md index 3f208d83ea..91a1a1e2bf 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -13,6 +13,7 @@ Lộ trình phát triển và hoàn thiện nền tảng Ký kết Điện tử [Phase 4: Multi-Language & Backup] ████████████████████ 100% Hoàn thành [Phase 5: PoC EAS Attestation] ░░░░░░░░░░░░░░░░░░░░ Ready for Testnet PoC [Phase 6: Multi-Chain & QES/CloudHSM] ░░░░░░░░░░░░░░░░░░░░ Planned +[Phase 7: Enterprise Parity & Brand] ██░░░░░░░░░░░░░░░░░░ In Progress (Audit 2026-09-22) ``` --- @@ -76,3 +77,18 @@ Lộ trình phát triển và hoàn thiện nền tảng Ký kết Điện tử - [ ] **Multi-Chain Portability**: Cấu hình mở rộng attestation sang các Layer 2 EVM (Base, Arbitrum, Optimism) và Arweave/Sign Protocol. - [ ] **Dịch vụ Dấu thời gian Pháp lý (Qualified Electronic Timestamp)**: Tích hợp với đơn vị cung cấp dịch vụ tin cậy được cấp phép theo Nghị định 23/2025/NĐ-CP và Luật Giao dịch điện tử 20/2023/QH15. - [ ] **Cloud HSM & QES Hardware Signatures**: Hỗ trợ ký số doanh nghiệp qua Google Cloud KMS / AWS CloudHSM tuân thủ tiêu chuẩn PAdES LTV. + +--- + +### 🏗️ Giai đoạn 7: Enterprise Parity & Branding Hoàn Thiện (In Progress - Audit 2026-09-22) +Kết quả audit tính năng Enterprise vs upstream + branding toàn repo (2026-09-22). Chi tiết: 2 báo cáo audit trong session notes. + +- [x] **Org Avatar Sync từ DOS ID**: `syncOrganisationAvatarFromUrl` - kéo `avatar_url` từ claim/webhook vào `sign.Organisation.avatarImageId` (trước đây org có avatar upstream vẫn hiện initials). JIT org sync + webhook `org.created`/`org.updated`. +- [x] **Auth Hardening Series (PR #9-#16)**: OIDC auto-redirect + IdP-down fallback, đóng allowlist oracle (INVALID_CREDENTIALS đồng nhất sau rate-limit/CSRF/captcha), timing equalisation (dummy bcrypt), avatar JIT refresh theo IdP source-of-truth, webhook no-op cho org lạ (chữa retry storm ~1.4k fail/hour). +- [x] **Branding Batch 1**: email footer env-driven (`NEXT_PRIVATE_BRANDING_COMPANY_DETAILS`), trang `/terms` + `/privacy` local (placeholder - cần text pháp lý chính thức), share page rebrand + redirect về app, rasterize toàn bộ brand binaries (favicon/OG/email logo/share frames) từ Crove SVG qua patch script. +- [ ] **Branding Batch 2**: 2FA issuer "Documenso" → env-driven, option "Documenso" trong sender dropdown, upsell strings (app.documenso.com), mailto:support@documenso.com, twitter handle, package.json scope `@documenso/*` (cân nhắc - ảnh hưởng imports). +- [ ] **Org-level Webhooks & API Tokens & OrganisationAuditLog**: webhook/token hiện chỉ gắn team-level; thiếu model audit log cấp organisation (enterprise parity lớn nhất cho khách multi-team). +- [ ] **Tháo CSC License Gate**: `instanceCscSigning` fail-closed không Documenso license key - điều kiện tiên quyết cho Phase 6 (QES/CloudHSM). Thay bằng pattern `CROVE_FEATURE_*` như Email Domains/SSO Portal. +- [ ] **Embed White-label Self-host Bypass**: `embedAuthoringWhiteLabel` đọc claim flag không có fallback `!IS_BILLING_ENABLED()` như branding - thêm fallback cho nhất quán. +- [ ] **SSO Group→Role Mapping & SCIM Lifecycle**: map nhóm IdP → `OrganisationGroup` role + tự thu hồi quyền khi offboard. +- [ ] **Legal Text Chính Thức**: duyệt và thay placeholder tại `/terms`, `/privacy` (bắt buộc trước khi bán doanh nghiệp). From fb7b532f15927342e000bcc38f321b0656a31977 Mon Sep 17 00:00:00 2001 From: JOY <5027251+JOY@users.noreply.github.com> Date: Thu, 24 Sep 2026 13:02:14 +0700 Subject: [PATCH 2/2] docs(roadmap): mark pending-merge items unchecked and scope the binaries claim Phase 7 items delivered by open PRs (#17, #18) stay unchecked until they merge; the branding binaries claim is scoped to the served copies in apps/remix/public/static/. --- ROADMAP.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 91a1a1e2bf..1d672137f8 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -83,9 +83,9 @@ Lộ trình phát triển và hoàn thiện nền tảng Ký kết Điện tử ### 🏗️ Giai đoạn 7: Enterprise Parity & Branding Hoàn Thiện (In Progress - Audit 2026-09-22) Kết quả audit tính năng Enterprise vs upstream + branding toàn repo (2026-09-22). Chi tiết: 2 báo cáo audit trong session notes. -- [x] **Org Avatar Sync từ DOS ID**: `syncOrganisationAvatarFromUrl` - kéo `avatar_url` từ claim/webhook vào `sign.Organisation.avatarImageId` (trước đây org có avatar upstream vẫn hiện initials). JIT org sync + webhook `org.created`/`org.updated`. +- [ ] **Org Avatar Sync từ DOS ID** (PR #17 pending merge): `syncOrganisationAvatarFromUrl` - kéo `avatar_url` từ claim/webhook vào `sign.Organisation.avatarImageId` (trước đây org có avatar upstream vẫn hiện initials). JIT org sync (fire-and-forget, không block login) + webhook `org.created`/`org.updated`. - [x] **Auth Hardening Series (PR #9-#16)**: OIDC auto-redirect + IdP-down fallback, đóng allowlist oracle (INVALID_CREDENTIALS đồng nhất sau rate-limit/CSRF/captcha), timing equalisation (dummy bcrypt), avatar JIT refresh theo IdP source-of-truth, webhook no-op cho org lạ (chữa retry storm ~1.4k fail/hour). -- [x] **Branding Batch 1**: email footer env-driven (`NEXT_PRIVATE_BRANDING_COMPANY_DETAILS`), trang `/terms` + `/privacy` local (placeholder - cần text pháp lý chính thức), share page rebrand + redirect về app, rasterize toàn bộ brand binaries (favicon/OG/email logo/share frames) từ Crove SVG qua patch script. +- [ ] **Branding Batch 1** (PR #18 pending merge): email footer env-driven (`NEXT_PRIVATE_BRANDING_COMPANY_DETAILS`), trang `/terms` + `/privacy` local (placeholder - cần text pháp lý chính thức), share page rebrand + redirect về app, rasterize brand binaries đang được serve (favicon/OG/email logo/share frames trong `apps/remix/public/static/`) từ Crove SVG qua patch script. - [ ] **Branding Batch 2**: 2FA issuer "Documenso" → env-driven, option "Documenso" trong sender dropdown, upsell strings (app.documenso.com), mailto:support@documenso.com, twitter handle, package.json scope `@documenso/*` (cân nhắc - ảnh hưởng imports). - [ ] **Org-level Webhooks & API Tokens & OrganisationAuditLog**: webhook/token hiện chỉ gắn team-level; thiếu model audit log cấp organisation (enterprise parity lớn nhất cho khách multi-team). - [ ] **Tháo CSC License Gate**: `instanceCscSigning` fail-closed không Documenso license key - điều kiện tiên quyết cho Phase 6 (QES/CloudHSM). Thay bằng pattern `CROVE_FEATURE_*` như Email Domains/SSO Portal.