From 654c4aeb870dcbf2c08af4add78e99d48b9e75cd Mon Sep 17 00:00:00 2001 From: JOY <5027251+JOY@users.noreply.github.com> Date: Thu, 24 Sep 2026 14:02:50 +0700 Subject: [PATCH] docs(roadmap): mark phase 7 org avatar sync and branding batch 1 as shipped --- ROADMAP.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 1d672137f8..9964572367 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. -- [ ] **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] **Org Avatar Sync từ DOS ID** (PR #17): `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). -- [ ] **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. +- [x] **Branding Batch 1** (PR #18): 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.