Files
solution-erp/docs/STATUS.md
pqhuy1987 72bbfa56a5 [CLAUDE] Infra: adopt AI_INFRA adap-* channel + store_memory strip + frontend-designer (S47)
- Install 3 federated adoption slash-commands (/adap-apply|report|request) in .claude/commands/ (read AI_INFRA outbox read-only, apply own repo, write adap-report; AI_INFRA /adap-audit reads cross-repo)
- Broadcast #1 (Memory-store-memory-strip-global): strip store_memory from all 8 sub-agents -> lead = sole RAG-writer; 4 RAG-read retained; agents/README synced + G-015 note
- Broadcast #2 (Agent-frontend-designer-floor): frontend-designer 8th agent (pink) -- forked AI_INFRA canonical FD1-FD10 visual-verification floor, tailored SE stack + use-existing-DS + boundary vs implementer-frontend; memory seed; roster doc 7->8
- Broadcast #3 (Governance-gov-v2): already-applied S44 -- delta report (gap: no formal error-ledger/L.b checklist)
- 3 adap-reports (5-field LOCK) in docs/governance/adap-reports/ + adoption-ledger row
- All nac executed-file/verified-pending (restart + spawn-test). 0 agents spawned. No product code. Test gate 181 unchanged. CI-skip (all .md).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 23:34:07 +07:00

18 KiB
Raw Blame History

STATUS — Snapshot hiện tại

Update rule: trước khi bắt đầu 1 task → ghi row 🔥 In Progress. Xong → ✅ Recently Done. Tiering rule (S40): chỉ giữ state hiện tại + 3 session gần nhất ở file này. Session cũ hơn → docs/changelog/sessions/. Full history pre-S40 → docs/_archive/STATUS-preS40-fullhistory.md. (Tránh over-context — xóa double, không cắt nội dung.)

Last updated: 2026-06-02 (Session 47 — AI_INFRA adap- adoption channel* (infra/governance, no product code): install 3 slash-commands (/adap-apply|report|request) + adopt 3 broadcasts — #1 store_memory strip (8 subs → lead=sole RAG-writer) · #2 frontend-designer 8th agent (FD1FD10 visual-verify floor) · #3 Gov-v2 already-S44 delta. CI-skip (all .md). Restart pending → verified-runtime. Prev: S46 memory integrity repair; S45 test-gap +27 (181) + Mig 43.)


🎯 CURRENT STATE (verified S40)

Metric Value Note
Migrations 43 last FilterHolidayUniqueIndexByIsDeleted (20260601064128, S45)
SQL tables 91 +1 S43 LeaveBalances (verified prod, UNIQUE composite + FK LeaveTypes Restrict)
API endpoints ~241 +3 S43 (leave-balances my/admin/adjust)
FE pages 67 WorkflowAppDetailPage (admin+user SHA256 identical)
Menu keys ~53 BE MenuKeys const (FE menuKeys.ts mirror 54)
Tests 181 PASS 58 Domain + 123 Infra · 0 fail / 0 skip · +27 HRM coverage S45 (Holiday/EmployeeSatellite/authz)
Gotchas 57 docs/gotchas.md (latest #57 soft-delete UNIQUE phải filter [IsDeleted]=0, S45)
User memory 15 14 + new S47 (adap-channel); index updated
Skills 6 3 domain + 3 ops
Sub-agents 8 Opus 4.8 1M · 7 core + frontend-designer pink (S47, restart-pending)
RAG chunks 2406 S41 re-bootstrap clean (3080→2406, 674 junk: node_modules+_archive now excluded; user-memory 60 chunks/10 files slug-fixed + S38-S41 indexed)

Bundle hash live (prod): admin Krjvg_3j · user 6sNStgxa (Gitea #367, S43 P11-B). Auth-verified prod: /leave-balances/my?year=2026 → 5 LeaveType lazy-default (Used=0, remaining=entitled). Phase: Phase 10 COMPLETE · 🔄 Phase 11 IN PROGRESS — P11-A + P11-B DONE (deployed prod) · P11-C..F pending (P11-C Vehicle+Driver recon ready S45) · 🧪 S45 test-gap stabilization + Mig 43 Holiday fix shipped · 🚫 Phase 9 Ops blocked (anh main coordinate).

⚠️ Count drift fixed S40: endpoints ~223→211, FE pages 53→65, menu keys 85→~53. Tables 84 confirmed correct (DbSet 77 + Identity 7). 3 số "khó fake" (mig/gotcha/git) luôn đúng. Cause: số "incremented mỗi session" over/under-count optimistic — re-ground định kỳ.


🔥 In Progress (S47)

Task Owner Status
(none — S47 adap channel + 3 broadcasts adopted (executed/verified-pending). NEXT: anh RESTART CLI → activate 3 cmd + store_memory strip + frontend-designer → spawn-test FD2 loop → verified. Then P11-C / gotcha #57 / P11-D-F / Phase 9 Ops) 👤

S40 done: Consolidation (d2f52ba) · Curate 4 agent MEMORY >25KB→<8.4KB (78c9de3) · RAG catch-up chunk S37-S40 (rerank 0.867) · AI_INFRA bulletin 2026-05-29 adopt 4/4 (MỤC2 Tiered Memory Policy v1 6f08d1f + MỤC3 /session-start+/session-end slash commands c8ff5e1). Full RAG re-index = AI_INFRA op (cần VOYAGE_API_KEY).

⚙️ NEW slash command (.claude/commands/) — anh main restart CLI để activate (không hot-reload) → session sau gõ /session-start + /session-end thay paste prompt thủ công.


Recently Done (newest on top — 3 session; cũ hơn → session logs)

S47 (2026-06-02) — 🔌 AI_INFRA adap-* adoption channel + 3 broadcasts (infra/governance, no product code)

  • Federated adoption channel installed (AI_INFRA relay): 3 slash-commands forked → .claude/commands/adap-{apply,report,request}.md. Read AI_INFRA broadcasts/outbox/ read-only (§J2) → apply own repo → docs/governance/adap-reports/<id>.md (5-field LOCK); AI_INFRA /adap-audit reads cross-repo 2-way. 0 agents spawned (em main solo — governance task).
  • #1 store_memory strip — removed from ALL 8 subs' tools:lead (em main) = sole RAG-writer (failure-safe). 4 RAG-read retained ×8. agents/README.md synced + G-015 note (NOT "read-only" — subs keep Bash/Write). Corroborates SE S41 re-bootstrap-loss lesson.
  • #2 frontend-designer (8th agent, pink) — adopted (user call), forked AI_INFRA canonical FD1FD10 visual-verification floor (Playwright screenshot ≥2 viewport → rubric → fix). Tailored SE stack + use-existing-DS (#1F7DC1/Be Vietnam Pro) + boundary ⟂ implementer-frontend (design/UX vs mechanical-mirror). memory seed + roster doc 7→8.
  • #3 Gov-v2 — already-applied S44 (ae30f8f); delta report flags 1 gap (no formal error-ledger/§L.b checklist — defer).
  • Nấc all executed-file / verified-pending (restart + spawn-test). Test 181 unchanged (no product code). CI-skip (all .md). → session log 2026-06-02-S47-aiinfra-adap-channel.md · memory feedback_aiinfra_adap_channel · restart-batching lesson (front-load .md edits → 1 restart).

S46 (2026-06-01) — 🧹 Memory integrity repair (no code, docs-only)

  • /session-start audit caught 2 user-memory files at 0 bytes (S45 close-out truncation, gotcha #53): MEMORY.md index + feedback_background_spawn_visibility.md. Empty index = S46 bootstrap chạy KHÔNG có memory auto-inject (degrade thầm lặng).
  • Repaired (👤 em main solo): rebuilt MEMORY.md index (14 entries: 8 feedback + 3 project + 2 pattern) · repopulate feedback_background_spawn_visibility từ HANDOFF/STATUS S45 ref (marked reconstructed) · NEW feedback_session_end_memory_write_verify (verify byte>0 sau closeout Write). 0 empty .md remain (verified find -size 0).
  • No production/repo code touched. Memory files ngoài repo (~/.claude/.../memory/) — không git-tracked → repo unchanged từ S45 7fbe05a. Test gate re-confirm 181 PASS (58+123) lúc bootstrap.
  • Residual: STATUS "27 user memory" stale → corrected 14. Recommend thêm verify-byte-count step vào /session-end skill mechanism (AI_INFRA op per charter v2) — auto-catch class lỗi này.

S45 (2026-06-01) — 🧪 HRM test-gap stabilization + Holiday drift fix (Mig 43)

  • 2 commit 051b62b (Tests) + 0c5a014 (Mig 43) → push → Gitea Run #368 PASS, verified prod. "Stabilize before extend": đóng 3 test-gap deferred S35-S38 TRƯỚC khi chồng schema mới.
  • +27 test (154→181): Gap1 Holiday composite UNIQUE (7) · Gap2 EmployeeSatellite FK-invariant+soft-delete+cascade (10) · Gap3 gotcha #44 authz regression HrmConfigs+Employees (10). 🟪 test-specialist viết (return truncated gotcha #53 → 👤 em main verify-on-disk + proxy MEMORY).
  • Mig 43 FilterHolidayUniqueIndexByIsDeleted (👤 em main solo, bug-fix chain): Gap1 test lòi drift — Holiday DB UNIQUE (Year,Date) unfiltered vs handler !IsDeleted → admin xoá+thêm lại ngày lễ cùng date = 500 reachable. Fix .HasFilter("[IsDeleted]=0") (khớp pattern 13× sẵn có). Flip Case 7 assert success. Table vẫn 91 (index-only).
  • 🟩 cicd Run #368 PASS ~4m20s: test gate 181 · Mig 43 applied prod · IX_Holidays_Year_Date filter=([IsDeleted]=(0)) live (was NULL) · FE bundle UNCHANGED Krjvg_3j/6sNStgxa (đúng — BE-only) · health 200 · 0 regression.
  • 🟦 investigator P11-C pre-flight (Vehicle+Driver catalog): chưa có master → extend HrmConfigs +2 kind declarative, Mig 44, giữ VehicleBooking free-text. gotcha #57 caught: LeaveType.Code + ShiftPattern.Code cũng unfiltered (backlog).
  • gotcha #57 NEW (soft-delete UNIQUE phải .HasFilter). Process: foreground spawn = im lặng = "looks frozen" → đẩy background + report-ngay (feedback_background_spawn_visibility).

S44 (2026-06-01) — 🗓️ Monthly drift audit + AI_INFRA bundle 06-01 adoption (docs-only, CI-skip)

  • Cadence audit (cron 2026-06-01) + adopt AI_INFRA bundle 06-01 (federated, team chọn full scope). 🟦 investigator-codebase drift scan (read-only, ground-truth verified) → 👤 em main patch. No code touched → 154 test PASS unchanged.
  • 42 count-drift fixes: CLAUDE.md root + docs/CLAUDE.md + ef-core-migration SKILL + dependency-audit-erp SKILL + schema-diagram + database-guide — 40→42 mig · 84/59/55/47→91 tables · 130/111→154 test · 52/49→56 gotcha.
  • Schema-diagram: migration table extended Mig 17-42 (was stop ở 16) + total 55→91; detailed-§ gap (Mig 27-42 modules) flagged explicit (không silent → deferred backlog). ef-core SKILL migration history extended Mig 27-42.
  • AI_INFRA bundle: §A RAG T1/T2 auto-ack · §B Gov-v2 align (no new layer) · §C hygiene 7/7 agent-mem L1 ≤16KB, "25KB"→"~30KB tiered" wording ×7 · §D #4 self-sustaining adoption-report step → /session-end (skip #1 đã có / #3 helper) · §E report + §F ledger docs/governance/.

S43 (2026-05-30) — 🔄 Phase 11 P11-B: LeaveBalance business logic (trừ phép + số dư)

  • Commit 82d7fcf → Gitea #367 PASS ~4m08s, deployed prod. 7-agent (recon → BE → FE ∥ test → reviewer → cicd), agents Max → 0 bug lọt.
  • Mig 42 AddLeaveBalances (additive): LeaveBalances (User×LeaveType×Year + Entitled/Used/Adjustment, UNIQUE composite + FK LeaveTypes Restrict). 90→91 tables.
  • Trừ phép: hook ApproveLeaveRequestHandler nhánh terminal DaDuyet — exactly-once (guard chặn re-approve), upsert auto-create từ DaysPerYear, UsedDays += NumDays, Year=StartDate.Year. Policy cho phép âm + cảnh báo (anh chốt).
  • FK invariant guard (em Max-review thêm sau test reveal): Create + UpdateDraft validate LeaveTypeId tồn tại → ConflictException (đóng cửa, tránh 500 kẹt đơn lúc deduction FK insert).
  • CQRS LeaveBalanceFeatures.cs: GetMy (self lazy-merge active LeaveType) + GetUser (admin) + Adjust (admin upsert). Embed balance NGƯỜI TẠO vào leave detail (approver xem đúng).
  • FE: WorkflowAppDetailPage ×2 block "Số dư phép" + cảnh báo vượt (kind=leave, SHA256 identical, tích hợp trang đơn nghỉ — không trang riêng).
  • Test: 144→154 (+11 LeaveBalance/guard + repair 2 template terminal FK). Reviewer Max PASS (deduction exactly-once + FK fully closed; 2 minor defer: concurrency lost-update no-RowVersion + stale comment).
  • Verified prod: Mig 42 applied, LeaveBalances UNIQUE+FK ✓, /leave-balances/my 200 → 5 LeaveType lazy-default, bundle rotate.

S42 (2026-05-30) — 🔄 Phase 11 P11-A: wire ApproveV2 + LevelOpinions 4 WorkflowApps module

  • Commit e7b66cd (Gitea #364) + fix 75df04e (#365) → PASS, deployed prod. Cookie-cutter mirror Proposal (Mig 38). 7-agent end-to-end (recon → BE×3 → FE → test → reviewer → cicd). (Run-id "#250" memory truncated ghi sai → Max re-verify reconcile #364/#365.)
  • Mig 41 WireWorkflowAppsApprovalV2 (additive): +4 bảng {Leave,Ot,Travel,Vehicle}LevelOpinions (UNIQUE composite + Cascade/Restrict) + WorkflowAppCodeSequences (shared atomic MaDonTu) + 4 cột RejectedFromStatus + enum TravelRequest=9.
  • BE: 30 handler (LeaveOt + TravelVehicle ApprovalFeatures.cs) — GetById/Update/Submit/Approve(UPSERT+advance)/Reject/Return + verify ApplicableType per module. 8 controller route. Seed 4 WF mẫu (QT-NP/OT/CT/XE-V2-001, AppType 5/6/7/9) — gotcha #51 INFRASTRUCTURE-gated PASS prod.
  • FE: WorkflowAppDetailPage.tsx declarative 4-kind (admin+user SHA256 identical) — workflow status + opinion timeline + Submit/Approve/Reject/Return actions; gỡ banner skeleton + row nav.
  • Test: +11 WorkflowAppApproveV2Tests (130→141) — state machine + UPSERT invariant + guards + forbidden + placeholder + codegen. No prod bug.
  • Verified: Mig 41 applied prod (5 bảng EXIST) · bundle rotate cả 2 app · 4 endpoint live · seed prod · reviewer checklist (no copy-paste bug, [Authorize] OK).
  • ⚠️ Gotcha #53/#55 tái diễn 3× session này (FE + reviewer + cicd-monitor truncate output cuối) — mỗi lần recover qua MEMORY + em main manual verify. Anti-truncation lesson reinforced.
  • 🔬 Max re-review (agents chạy High) phát hiện + fix 2 bug FE picker (chưa commit lúc deploy đầu): (#1) pinWorkflow PUT /{id} partial → 400 validator; (#2) fetch expect array nhưng endpoint trả {types} object → picker rỗng. Fix: thêm endpoint chuyên dụng PUT /{id}/workflow (set workflow only, verify ApplicableType) + sửa fetch mirror PE/Contract data.types.find().history.filter(isUserSelectable). +3 test SetWorkflow (141→144). Bonus phát hiện: ProposalCreatePage (S37) có bug #2 có sẵn → spawn task riêng.
  • 📌 Follow-up minor (non-blocking): known-minor unreachable (Reject/Return actor-check khi CurrentApprovalLevelOrder null) · deploy.yml stale comment "54/17 test" (cosmetic) · test Travel/Vehicle mirror pending (Leave full + Ot smoke có).

S41 (2026-05-29) — RAG corpus cleanup (w/ AI_INFRA)

  • AI_INFRA RAG audit → SE-side prep: .claude/rag.json exclude root-anchored→**/-anchored (defeats gotcha #10: node_modules/**+docs/_archive/** weren't matching nested paths) + retired stale _decision_log "+321%/11,922".
  • store_memory reconcile (anti-data-loss, NAMGROUP lesson): unified at-risk rule = content reproducible từ file {exists ∧ matches corpus glob ∧ not excluded}. 5/5 accounted: 3 broadcasts disk-twinned + 16a6b6db audit-response twin-safe + 0307141b S37-S40 catch-up promoted-to-disk (docs/changelog/sessions/2026-05-29-S37-S40-rag-catchup.md — anchor was virtual, not real STATUS section).
  • AI_INFRA re-bootstrap host-side --config: 3080→2406 (674 junk), node_modules=0 / _archive=0 / manual-marker=0, user-memory 60 chunks (slug fix). SE post-verify PASS (promoted catch-up returns file-indexed real heading, not (manual)). Commits 282cbd0+e8cbbe5 pushed (docs/infra → CI skip).
  • Standing infra backlog (AI_INFRA, non-blocking): bootstrap glob→0 warn · auto_reindex hook fire · search_code corpus gap (src/.cs+fe/.tsx, v0 design) · registry sync.

S40 (2026-05-29) — Init audit + doc consolidation

  • 7-agent smoke verify (🟪 test-specialist + 🟦 investigator-api load OK), RAG re-rank PASS (top 0.8789 Voyage rerank-2.5), 130 test confirm.
  • Doc consolidation: STATUS 170KB→5.7KB + HANDOFF 224KB→3.4KB (archive full → docs/_archive/). Count re-ground (endpoints 211, FE pages 65, menu ~53; tables 84 confirmed). Stale credential admin@solutionerp.localadmin@solutions.com.vn fixed. CLAUDE.md root patch (mig/table/test).
  • Curate 4 agent MEMORY >25KB→<8.4KB (~130KB→41KB, foundation preserved + verbatim git). RAG store_memory S37-S40 catch-up chunk. 2 commit push d2f52ba+78c9de3 (docs-only CI skip).

S39 (2026-05-29) — ⚙️ INFRA: Opus 4.8 1M + Multi-agent 4→7 + budget +50%

  • Pure infra/governance, 1 commit fd0554a (docs CI skip). Model default Opus 4.8 1M. investigator→codebase+api · implementer→backend+frontend · +test-specialist (purple). 5 RAG MCP/agent. 2 gotcha NEW #54 (529 fallback) + #55 (truncation mid-exploration). CLI restart → registry hot-reload (done S40).
  • docs/changelog/sessions/2026-05-29-S36-S39-phase10-complete-7agent.md

S38 (2026-05-28) — 🎊 PHASE 10 COMPLETE 11/11 (SKELETON combo)

  • Mig 39+40 + BE ~1100 LOC + FE 5 file × 2 app + 8 menu. Run #247 PASS 3m25s. G-O4/O5/O6/P1/H3 skeleton. Trade-off DEFER Phase 11: ApproveV2 wire + LevelOpinions per-module + LeaveBalance + CodeGen atomic + Vehicle/Driver catalog + ItTicket auto-assign/SLA.
  • → same session log

🎯 Next up

🔄 Phase 11 — Polish/wire skeleton (IN PROGRESS)

  • P11-A wire ApproveV2 + LevelOpinions 4 module (Leave/OT/Travel/Vehicle) — DONE S42 (Run #250, deployed prod). CodeGen MaDonTu cho 4 module ĐÃ gộp luôn (WorkflowAppCodeSequences) → P11-F phần ItTicket MaTicket còn lại.
  • P11-B LeaveBalance business logic — DONE S43 (Mig 42, trừ phép terminal + số dư + FK guard, Gitea #367 prod).
  • P11-C Vehicle+Driver catalog Mig 43 · P11-D ItTicket auto-assign + SLA timer · P11-E AttendanceReport + Excel + OtPolicy multiplier · P11-F CodeGen atomic MaTicket (MaDonTu xong S42)

🔧 Maintenance backlog

  • RAG re-ingest solution_erp S42-S43 content (store_memory stopgap live; full re-index = AI_INFRA op)
  • Test coverage gaps Gap1/2/3 DONE S45 (+27 test). NEW backlog (gotcha #57): LeaveType.Code + ShiftPattern.Code UNIQUE chưa filter [IsDeleted]=0 (cùng class Holiday Mig 43 — recreate-on-soft-deleted-slot 500; test-before khi fix). Cân nhắc gộp vào P11-C khi đụng HrmConfigs.
  • Skill + doc drift audit cron — 2026-06-01 DONE (S44) — 42 count-drift fixes + AI_INFRA bundle adopt; next 2026-07-01

🚫 Phase 9 Ops (blocked — anh main coordinate)

  • SMTP email outbound · Rotate prod creds · SQL auto-backup (backup-sql.ps1 ready, chờ Task Scheduler register) · UAT 2-3 user 1 tuần

🚨 Blockers / risks

  • ⚠️ Email SMTP chưa có — blocker notification outbound
  • ⚠️ Credentials trong chat — rotate trước go-live thật
  • ⚠️ SQL backup chưa auto — risk data loss (script ready, chờ register)
  • ⚠️ UAT real user chưa chạy — risk edge-case bug
  • ⚠️ Cert api.solutions.com.vn expire ~2026-07-23 (auto-renew ~06-23)

🔑 Credentials + URLs

Prod login: admin@solutions.com.vn / Admin@123456   (⚠️ rotate sau login đầu)
  • API prod https://api.solutions.com.vn (/health/live + /health/ready) · dev http://localhost:5443 (/swagger)
  • Admin FE prod https://admin.solutions.com.vn · dev :8082
  • User FE prod https://eoffice.solutions.com.vn · dev :8080
  • Gitea https://git.baocaogiaoduc.vn/vietreport-admin/solution-erp · SSH ssh vietreport-vps
  • SQL prod .\SQLEXPRESS / SolutionErp · dev (localdb)\MSSQLLocalDB / SolutionErp_Dev

Session history: S0→S39 full detail trong docs/changelog/sessions/ + docs/_archive/STATUS-preS40-fullhistory.md. File này chỉ giữ state hiện tại + 3 session gần nhất.