Files
solution-erp/docs/changelog/sessions/2026-07-01-S96-uat-pe-fixes-monthly-audit.md
pqhuy1987 791ec5544d [CLAUDE] Docs: S96 session-end closeout — UAT PE fixes + monthly audit + memory flush
- STATUS/HANDOFF: prepend S96 mega-line (5 commit: monthly-audit 881783c + NCC ba4b8e0 + 3 PE fix e657faa/36cbf8b/0c2f9f6) · Tests 434->440 · gotcha 76->77 · bundle COYAX-yQ/0MU-kb4N · prod 21 NCC · In-Progress S95->S96
- gotchas: +#77 SPA deploy bundle cache-lag (verify byte-level cache!=deploy; incognito golden)
- session log 2026-07-01-S96-uat-pe-fixes-monthly-audit.md
- user-memory (ngoài repo): +2 feedback (verify-deployed-artifact-byte-level · agent-return-garble-recover)
- agent-memory: cicd-monitor S-tag drift S97/S98->S96 reconcile (11x; facts correct) · investigator-codebase Supplier-audit diary

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:49:16 +07:00

6.6 KiB
Raw Blame History

S96 — 2026-07-01 — Buổi UAT LỚN anh Kiệt/team live + Monthly-audit (5 commit prod-verified)

em-main-led. HMW-mode ON (1 prep-workflow monthly-audit + spawn-lẻ, chủ-yếu solo/reliable). Session dài: /session-start → monthly audit → NCC import → 3 PE bug-fix theo UAT anh Kiệt/chị Trà/anh Chương → /session-end.

5 commit (đều pushed + deployed + cicd-verified)

# SHA Scope Run
1 881783c Docs: monthly drift audit + FD distill + mega-line re-tier docs-only CI-skip
2 ba4b8e0 Infra: import NCC DONGDUONG + Supplier-field backlog #477
3 e657faa PE: ô "KẾT THÚC quy trình" → opt-out bỏ-tick-được #478
4 36cbf8b PE: mark-read noti "cần duyệt" cũ (fix chuông stale) #479
5 0c2f9f6 PE: khóa sửa giá đề xuất PRO/CCM sau gửi-duyệt #480

(1) Monthly drift audit 881783c (đúng hạn cron ngày 1)

  • ef-core-migration/SKILL.md: latest-mig 56→59 + append bảng rows 57/58/59 + Mig 14/Phase-7 Budget annotate DROPPED Mig 50.
  • skills/README.md: ef-core Mig 55→59 + gotcha cite #69→76 (heading gốc gotchas.md).
  • docs/CLAUDE.md: Budget module REMOVED Mig 50 (S61) strike-through (§1 item 6 + roadmap Phase 7/8).
  • docs/governance/vocab-alias-map.md MỚI: 3 vocab-fork (run-trace/Ngân-sách-PRO/all-inherit canonical) + thêm vào $ExcludeExact governance-detectors (anti self-match; detector pure-grep nên flag stay "documented-known").
  • Re-tier STATUS/HANDOFF mega-line 5→3 blurb (S92/S91 → archive tier-S94, byte-exact conservation delta=0, BOM-preserved) + hoist 3 UAT-carry (S92 non-admin-menu · S91 change-pw · S91 NCC-demo) vào blockers (reviewer flag conservation).
  • FD memory distill (H17 loop strike-1 → CLEARED): frontend-designer L1 26129→21492B, 5 war-story (S66/S65/S58/S55/S47) → archive/2026-06.md + _INDEX + gist; Lessons value-protect (anti-#53/Tailwind-v4-stop/rig-#3/lucide) lên L1. budget.json measured refreshed.
  • Workflow wf_2d687d27 4-cluster draft→adversarial-verify: reviewer bắt #74 paraphrase-drift (em sửa từ heading gốc) + AS-10 residual reviewer self-write reverted (git-diff backstop). detector 27→25 (2 real drift clear; còn lại module-local false-pos).

(2) Import NCC DONGDUONG ba4b8e0

  • Excel anh Kiệt "Database NCC & Nhà thầu phụ" — 4 NCC, ~30 field. Phát hiện: 3 NCC (TRUONGGIANG/TANPHU/TGN) đã seed sẵn S55/S59 (data khớp) → chỉ DONGDUONG mới.
  • Scope anh chốt = option-3 (9 field entity + gói extras Loại/NĐD/TK/GUQ/Trạng-thái vào Note). KHÔNG migration (data-only seed). SeedRealMasterDataAsync ungated idempotent → prod 20→21 NCC (cicd #477: sqlcmd 21 rows, DONGDUONG type=2, Note "Thang máy").
  • Backlog "15-18 field note-lại-từ-từ-tính" (bank tách/link GUQ-GPKD-HSNL/địa-chỉ-VP/PMH... + enum SupplierType thêm "Cả hai") → docs/STATUS Maintenance backlog.

(3-5) 3 PE bug-fix theo UAT anh Kiệt/chị Trà/anh Chương

  • e657faa — ô "Cấp này KẾT THÚC quy trình" opt-out bỏ-tick-được (anh Kiệt "cái này option thôi"): AllowApproverFinalize (Mig 58, S89 auto-finalize im-lặng) NAY = 2-tier — Designer tick = cấp quyền (level được phép finalize), phiếu = thực-thi (mặc-định tick=kết-thúc, bỏ-tick=trình-CEO). +param applyLevelFinalize (default-true backward-compat) xuyên interface→service (guard && applyLevelFinalize)→command→handler→controller + FE checkbox 2-app. +test #6 (opt-out→advance-CEO). Run #478.
  • 36cbf8b — chuông tự-sạch noti "cần duyệt" (chị Trà/anh Kiệt "chuông không bỏ ra được"): noti "Phiếu cần bạn duyệt" cũ KHÔNG tự xóa khi phiếu được duyệt-thay/hoàn-tất bởi người khác. Fix: LogTransitionAsync (chạy MỌI transition) mark-read ReadAt mọi noti Generic+RefId=phiếu unread TRƯỚC block notify-cấp-mới. ExecuteUpdateAsync best-effort BE-only. +test #7 (finalize→noti CEO cũ mark-read). Run #479.
  • 0c2f9f6 — khóa sửa giá đề xuất PRO/CCM sau gửi-duyệt (anh Kiệt/chị Trà "duyệt là fix"): screenshot drafter=PRO điền Min/Max SAU khi chị Trà duyệt. Root: 2 handler cố-ý "KHÔNG ràng Phase" (Mig 54). Fix ĐẢO: non-admin chỉ sửa Nháp/TraLai, đã-gửi-duyệt/đã-duyệt/từ-chối → ConflictException; Admin override. BE (PeSuggestedPriceFeatures) + FE (PeDetailTabs SuggestedPriceRows gate && isEditablePhase 2-app) + 4 test (spec-change: sửa SeedPeAsync default ChoDuyet→DangSoanThao). Run #480.
  • Delete-sau-duyệt = ĐÃ chặn sẵn — không cần fix: FE nút Xóa chỉ hiện DangSoanThao + BE delete-guard block non-draft. chị Trà chắc test phiếu Nháp.
  • Checkbox "ko được" (anh Chương) = browser cache (gotcha #77): verify prod bundle 0MU-kb4N BYTE-LEVEL chứa fix ("BỎ tick"), " static" cũ MẤT; index.html no-cache đúng + no-service-worker → incognito = golden-test.

Lessons

  1. verify-deployed-artifact-byte-level (gotcha #77 + feedback_verify_deployed_artifact_byte_level): cache≠deploy — curl-grep bundle prod tìm marker fix; incognito golden. Tiết-kiệm giờ debug sai hướng.
  2. #53 return-garble ×3 (feedback_agent_return_garble_recover): investigator + cicd×2 trả text-memory-curation thay verdict; WORK + diary ĐÚNG → recover từ agent-memory KHÔNG re-spawn; instruction-fix "return verdict" ăn lần-3 (không 100%).
  3. 2-tier-permission (grant-vs-exercise): config = cấp quyền, runtime = thực-thi — tách rõ (Designer AllowApproverFinalize vs phiếu applyLevelFinalize).
  4. spec-change→update-test-cũ (rules §7): đảo "KHÔNG ràng Phase" → sửa SeedPeAsync seed-phase để 15 test cũ sống + 4 test mới.

State (verified)

Mig 59 · 88 bảng · 440 test (45D+395I, +6 S96) · gotcha 77 · menu 54 · bundle admin COYAX-yQ/user 0MU-kb4N (Run #480) · prod 21 NCC / 17 user.

Carry / NEXT

  • 🔴 anh: restart CLI · UAT incognito checkbox anh Chương · cho số-phiếu + user vụ "lỗi phân quyền vào phiếu" (nhiều khả năng config: user chưa gán approver Cấp phiếu đang chờ).
  • 🔴 em: cicd-monitor S-tag-drift S97/S98→S96 reconcile (closeout này) · monthly re-tier mega-line (giờ 4-blurb S96/S95/S94/S93) · Supplier-schema-mở-rộng backlog (khi anh chốt).
  • Pending product (carry): Section B cột Dự-án · Ngưỡng giá CEO Mig 54 · "C" chuyển phiếu→dự án.