Files
solution-erp/docs/changelog/migration-todos.md
pqhuy1987 2abbc1d867 [CLAUDE] Docs+Skill: chốt session 6 — 3 skill refresh + 2 rule audit định kỳ
Pure docs work — 0 thay đổi code/test. 77 test vẫn pass (Domain 54 + Infra 23).

3 skill refresh stale (audit định kỳ §6.4 + §9.4 phát hiện):
- form-engine: "Phase 2 MVP missing PDF + form builder" → "Tier 3 feature-complete"
  + bỏ section duplicate "Gen mã HĐ chưa implement" (đã DONE Phase 3+6)
- permission-matrix: 12 menu cũ → ~60 menu key (Bg_*/Pe_*/PeWf_*/Catalogs)
  + inheritance roots 4 group + Budgets KHÔNG inherit (gotcha #35)
- ef-core-migration: "24 DbSet" → "52 bảng (15 migration)"

2 rule mới chốt:
- rules.md §6.4 — Audit + compact MD định kỳ (cadence + checklist + anti-pattern)
  Triết lý: KHÔNG rewrite toàn bộ. Compact + patch drift.
  Cron solution-erp-skill-audit-monthly mở rộng scope (skill + doc drift combined)
- rules.md §9.4 mở rộng cross-ref §6.4

Update STATUS Session 7+ priority + HANDOFF cảnh báo session 7 + migration-todos
Phase 9 Session 6 done sub.

Cron 2026-05-01 fire mai → combined audit theo checklist §6.4 + §9.4.

Session log đầy đủ: docs/changelog/sessions/2026-04-30-chot-session-6-md-audit-compact.md

Commit MD-only → CI skip (path filter gotcha #41).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 01:18:51 +07:00

9.0 KiB
Raw Blame History

Migration To-dos — Atomic Roadmap

Tick [x] khi xong. Phase 0-8 đã DONE — collapsed. Detail xem session logs trong docs/changelog/sessions/. Active work: Phase 9 (UAT + Ops + carry over PE PDF export + Tests Phase 3-5).

Phase 0-5 + Tier 3 — Done (2026-04-21..22)

Phase Focus Trạng thái
0 Draft Scaffold .NET 10 + 2 Vite + parse FORM/QT + docs
1 Alpha Core Auth + 12 role + Permission Matrix + 3 master CRUD + Contract draft
2 Form Engine OpenXml + ClosedXML render + LibreOffice PDF + DynamicForm
3 Workflow State machine 9 phase + RG-001 code gen + SLA job + attachments + SignalR realtime
4 Reporting Dashboard KPI + Excel export + MyDashboard role-aware + brand identity #1F7DC1
5 Production CI/CD Gitea Actions + 3 IIS site + Let's Encrypt + Security headers + Users CRUD
Tier 3 Versioned workflow + 3-panel layout + 4-bảng overhaul + 4 master catalogs + 16 demo users + RolesPage CRUD + 7 demo HĐ varied

Detail chi tiết: docs/changelog/sessions/2026-04-21-*.md + 2026-04-22-0300-tier3-feature-complete.md + 2026-04-23-*.md.

Phase 6-7 — PE Module + Budget BE — Done (2026-04-23..28)

  • Phase 6 iter 1+2: Module Duyệt NCC tiền-HĐ — Migration 12+13, 10 bảng PE + WorkflowDefinitions, 2 type A/B, 17 endpoint, FE 3-panel cả 2 app, kế thừa HĐ qua CreateContractFromEvaluationCommand. UX polish iter 2 (flat layout, per-NCC attachments, readOnly mode Duyệt). Demo seed 4 phiếu varied + 7 role × 9 Pe_* permission defaults.
  • Domain rebrand: 3 sub .huypham.vn.solutions.com.vn E2E live HTTPS (cert + CORS + FE bundle).
  • Phase 7 — Budget BE: Migration 14, 4 bảng Budgets + workflow simple 3-step hardcoded BudgetPolicy.Default, 11 endpoint, link nullable Contract.BudgetId/PE.BudgetId. FE chưa làm (Phase 8 done).
  • Phase 7 — 14 demo Solutions users: PRO 5 + CCM 7 + ISO 1 + CEO 1, total 30 user (16 sample + 14 thật).

Session logs: 2026-04-23-2300-purchase-evaluations.md · 2026-04-24-chot-session-3-pe-polish.md · 2026-04-28-chot-session-4-budget.md.

3 task PE feature gap (Workflow Designer / Ý kiến 4 PB / Export PDF) → đã đóng 2/3 ở Phase 8 §C+D. Export PDF carry over Phase 9.

Pending migrations (chưa cần đến)

  • AddPePaymentTermFields — nếu chốt UX tách field (JSON → 6 column riêng)
  • AddBudgetCodeSequences — atomic SERIALIZABLE khi chốt format MaNganSach (hiện Random.Shared)
  • AddBudgetVersionedWorkflow — nếu user cần admin config UI thay hardcoded BudgetPolicy.Default

Phase 8 — Budget FE + PE/HD integration (Session 5 done)

A. FE Budget pages — done

  • fe-admin/src/types/budget.ts (BudgetPhase 5-state enum + DTO types)
  • fe-admin/src/pages/budgets/BudgetsListPage.tsx (3-panel [340px_1fr_360px] + filter Phase/Năm + ?phase=Pending alias + readOnly mode + BudgetDetailPage fullpage mobile)
  • fe-admin/src/pages/budgets/BudgetCreatePage.tsx (form Header — Tên/Năm/Dự án/Phòng ban/Mô tả)
  • fe-admin/src/components/budgets/BudgetDetailTabs.tsx (Section Thông tin Header + Section Hạng mục table CRUD inline auto-compute ThanhTien=KL×ĐG)
  • fe-admin/src/components/budgets/BudgetWorkflowPanel.tsx (Panel 3 timeline activePhases + nextPhases buttons + Dialog comment + Approvals/Changelog)
  • Mirror tất cả sang fe-user/
  • App.tsx routes /budgets, /budgets/new, /budgets/:id cả 2 app
  • Menu resolver Bg_* (Bg_List → /budgets, Bg_Pending → /budgets?phase=Pending, Bg_Create → /budgets/new)

B. PE/Contract → Budget integration — done

  • PE form + Select "Ngân sách" filter Phase=DaDuyet, ProjectId match, BE validate
  • Contract form (Header + Edit) tương tự, EditForm read-only link card khi !isDraft
  • PE Detail Hạng mục thêm cột "NS link · Δ" — match per-row qua groupCode|itemCode + footer aggregate (xanh dưới / đỏ vượt / xám khớp)
  • PE Detail UI restructure 4 section đánh số match form spec PHIẾU TRÌNH KÝ
  • BE: BudgetSummaryDto shared + Create/Update PE+Contract commands + BudgetId? + GetQueries load Budget
  • CreateContractFromEvaluation carry forward pe.BudgetId → contract.BudgetId

C. PE Workflow Designer admin UI — done

  • BE PeWorkflowAdminFeatures.cs ~250 LOC mirror Contract pattern
  • BE PeWorkflowsController 2 endpoint reuse policy Workflows.*
  • FE PeWorkflowsPage.tsx ~500 LOC + designer dialog (clone/edit/+Role/+User)
  • App.tsx route /system/pe-workflows/:typeCode

D. Ý kiến 4 phòng ban — done

  • Migration 15 AddPurchaseEvaluationDepartmentOpinions (UNIQUE PEId+Kind)
  • Domain entity + enum PeDepartmentKind (PheDuyet/Ccm/MuaHang/SmPm)
  • BE Upsert (sign=true → set SignedAt+UserId, sign=false giữ chữ ký cũ) + Delete + 2 endpoint
  • FE Section "5. Ý kiến 4 phòng ban (sign-off)" 2x2 grid OpinionBox

E. Tests Phase 1-2-3mini + CI optimize — done

  • Phase 1tests/SolutionErp.Domain.Tests/ (xUnit + FluentAssertions 7.2): 54 test policy state machine (Contract WF + PE WF + Budget) + Registry + FromDefinition versioned + UserKindApprover
  • Phase 2tests/SolutionErp.Infrastructure.Tests/ (EF SQLite + TestApplicationDbContext override nvarchar(max) → TEXT): 17 test code generator format + sequence + year boundary + persistence verify
  • Phase 3 minitests/.../Application/PeWorkflowAdminTests.cs: 6 test CreatePeWorkflowDefinitionCommand versioning (auto-increment + deactivate cũ + EvaluationType independence + steps/approvers persistence)
  • CI gate .gitea/workflows/deploy.yml — 2 step dotnet test trước build, fail → no deploy
  • Total 77 test pass / ~3s
  • CI manual checkout bypass github.com — fix gotcha #39 (act_runner TCP timeout 21s)
  • CI path filter docs-only skip — gotcha #41 (paths-ignore behavior)
  • Tests Phase 3 full — Opinion Upsert + Budget link validation (cần Identity UserManager setup helper)
  • npm junction cache CI optimize (rollback ở a21790d — gotcha #40 chưa debug)

📝 Phase 9 — UAT + Ops + carry over (Session 6+ active)

Session 6 done (2026-04-30 — pure docs work)

  • MD audit + compact — STATUS -27%, HANDOFF -32%, migration-todos -35%, archive 51 row Phase 0-7 cũ
  • 3 skill refreshform-engine Phase 2 MVP → Tier 3 feature-complete, permission-matrix 12 menu → ~60 + inheritance roots, ef-core-migration 24 DbSet → 52 bảng
  • Rule mới rules.md §7 — Khi nào viết test (timing rule 5-row table)
  • Rule mới rules.md §6.4 — Audit + compact MD định kỳ (cadence + checklist + anti-pattern)
  • rules.md §9.4 — Mở rộng skill audit cross-ref §6.4

A. Hard blockers (chờ user / ops)

  • UAT thật 1 tuần với 2-3 user (30 demo: 16 sample + 14 Solutions thật)
  • SMTP config → Email outbox (BLOCKED chờ user cấp host/user/pass)
  • Rotate credentials (admin + 30 demo + SA + vrapp + JWT secret + Gitea runner token)
  • Schedule SQL backup daily Task Scheduler

B. PE feature gap còn lại

  • Export phiếu PDF/Excel — IDocumentConverter + template PE-TrinhDuyet.docx (user pending — không quan trọng lắm)

C. Optional polish (làm khi UAT phát sinh)

  • Budget MaNganSach atomic sequence + migration AddBudgetCodeSequences
  • Budget versioned workflow + migration AddBudgetVersionedWorkflow
  • Payment terms PE tách field (JSON → 6 column)
  • Auto-map PE Details → Contract Details khi gen HĐ
  • Matrix Quotes bulk paste từ Excel
  • fe-user Inbox thêm section "Phiếu Duyệt NCC chờ tôi"

D. Tests Phase 3-5 (làm khi gặp bug recurring để justify ROI)

  • Phase 3 — Application handler tests (CQRS + EF InMemory) ~15 test
  • Phase 4 — API smoke tests (WebApplicationFactory) ~7 test
  • Phase 5 — FE Vitest cho lib utility (queryMatches, fmtMoney) ~10 test

E. Ops chưa xong

  • Remove binding cũ .huypham.vn sau verify stable
  • win-acme scheduled task fix unhealthy (cert expire 2026-06-18)

🔁 Skill governance (recurring)

Quy tắc: docs/rules.md §9. Audit định kỳ mỗi đầu tháng — workflow §9.4.

  • Setup ban đầu — 6 skill (3 domain + 3 ops), rules §9 ← 661f859
  • Audit 2026-05-01 — log docs/changelog/skill-audit-2026-05.md
  • Audit 2026-06-01
  • Audit 2026-07-01

Cron task solution-erp-skill-audit-monthly fire 9:00 AM ngày 1 mỗi tháng.

📦 Post-launch (Phase 10+ — future)

  • Email outbox (MailKit + SMTP) — blocked chờ SMTP config
  • E-signature integration (VNPT CA hoặc FPT CA)
  • Tích hợp Bravo / SAP ERP import NCC
  • Mobile app (React Native?) cho BOD duyệt ngoài giờ
  • AI: gợi ý điền form dựa HĐ cũ, OCR scan HĐ đối tác
  • Multi-tenant nếu có công ty thứ 2