2aefb3134d
[CLAUDE] Docs: S58 closeout — lock fix prod-verified Run #382 + S57bis flush + gotcha #59/#60 + harvest on-behalf
...
- STATUS/HANDOFF: thêm S57bis + S58 (2-session gap S57bis đóng vội), counts
re-ground (Mig 49 · test 240 · gotcha 60 · menu 57 · bundle CP4CB1ym/BmZ3VHnm
curl-verified · RAG 2420). Ops S56 "gán user IT" RESOLVED (nv.cao/nv.truong
sống lại nhờ password fix).
- gotchas: #59 (PS5.1 git commit -F, residual S57bis) + #60 NEW (Identity seed
CreateAsync silent-fail vs prod RequiredLength=12 — population Dev ≠ prod,
dump data thật trước lock/seed-by-email) + checklist 31/32.
- agent-memory: cicd Run #381 (residual) + #382 · 4 spawn-record on-behalf
(database-agent/impl-backend/impl-frontend/reviewer — H2 Coverage 4-MISS đóng)
· investigator-codebase recon · 2 monitor RE-REPORT entries.
- skills: ef-core +row Mig 49 (49 mig ×5 chỗ) · README + dep-audit count sync.
- CLAUDE.md root: Mig 49 + test 240 + gotcha 60 + schema-ref 32-49.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-11 13:09:29 +07:00
17b23a418a
[CLAUDE] Docs: Harness-4 two-tier runtime-VERIFIED (spawn-test 2 chiều post-restart) + email-back AI_INFRA
...
Deploy SOLUTION_ERP / build-deploy (push) Has been cancelled
- Spawn-test 2 chiều S57bis: H1 tooling-auditor (demote pin) self-report claude-opus-4-8[1m] + H2 harvest-curator (promote inherit) self-report claude-fable-5[1m] → nấc executed-file/PENDING-RESTART → RUNTIME-VERIFIED (adap-report §2/§5 + STATUS row). [1m] 1M-resolve SE tự verify.
- Email update 2026-06-11-se-to-ai_infra-harness-4-runtime-verified (nac sent, sha ecf1d587, honest n=1/chiều, hmw.js executed-file giữ) + _index OUTBOUND.
- Lesson env: CCD harness cache agent frontmatter — restart CLI mới ăn (2 data-point 06-10/06-11).
- Bundle 06-10 carry: 7 agent pin opus-4-8 + 4 inherit + hmw.js tier-map H4.5 + agents/README two-tier + 2 adap-report + email 06-10 + agent-memory delta (KEEP-ALL-5 H2-verified) + investigator L1→L2 archive curate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-11 12:12:22 +07:00
a62e797332
[CLAUDE] Docs: S56 closeout — pre-golive verify + golive-harden + doc-drift + gotcha #58
...
STATUS/HANDOFF S56 + session log: WF1 pre-golive-verify (7-stream → GO) + WF2 golive-harden (4 fix, code a20cde8 Run #379 PASS). Test 216→228. Code golive-ready; 2 ops VPS pending (IT user + tzutil); FE Phase 2 deferred.
§L closeout (H1/H2): database-agent executed-file→verified-runtime (agents/README:4, D1 closed); ef-core skill 47→48; sys.tables 92→93 reconciled (cicd ground-truth); root CLAUDE test 203→228 + 92→93 bảng; gotcha #58 NEW (EF read-modify-write lost-update→ExecuteUpdate atomic). agent-memory harvest: cicd Run#379 + Fidelity Serializable-correction (impl/test MEMORY, H2 GATE 4.5/5).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 20:20:51 +07:00
a20cde89fb
[CLAUDE] App: golive harden — LeaveBalance concurrency + ItTicket authz-order + DocxRenderer + Travel/Vehicle tests
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m19s
Pre-golive verification (S56) surfaced 4 issues; all fixed + verified (228 test pass, 0 build warning).
#3 LeaveBalance lost-update (DB11 concurrency): terminal-approve deduction was an in-memory read-modify-write (UsedDays += NumDays) under a bare SaveChanges, so two concurrent terminal approvals of the same (user,type,year) lost an update. Fix: atomic server-side ExecuteUpdateAsync (UsedDays = UsedDays + n) inside an explicit Serializable transaction (matches the codegen/Proposal/TravelVehicle convention; serializes the auto-create-row race too). Exactly-once guard (Status != DaGuiDuyet) intact. No migration.
#5 ItTicket reassign existence-oracle: AssignItTicketHandler checked ticket-NotFound before the Admin-OR-dept-IT Forbidden guard. Reordered so authorization runs first -> fail-closed (a non-IT/non-admin caller gets Forbidden for any ticketId, existent or not).
#6 DocxRenderer CS8602: null-guard MainDocumentPart + Document with clear exceptions (cleared 2 build warnings -> 0).
#4 Travel/Vehicle ApproveV2: added smoke tests (Submit->Approve terminal + outsider-Forbidden) — previously zero coverage.
Tests 216 -> 228 (+12). database-agent DB-layer review PASS; em-main cross-stack review clean (reviewer workflow stage did not emit StructuredOutput -> em-main covered the cross-stack review by reading every diff). Bundles agent-memory harvest (S56).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 17:51:38 +07:00
bef582594e
[CLAUDE] Docs: S55 Phase 1 FE redesign closeout (Run #378 ) — bundle 4SUwDLD8 + session log
...
fe-admin density-first redesign live prod (admin bundle B-d6893W→4SUwDLD8, user unchanged, no mig). STATUS bundle + Recently Done redesign entry + session log redesign section. Phase 2-3 pending.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 12:02:09 +07:00
7feb53ee20
[CLAUDE] FE-Admin: redesign Phase 1 — density-first design system (NAMGROUP-ref, giữ brand)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m24s
Tham khảo NAMGROUP density conventions, GIỮ brand #1F7DC1 + Be Vietnam Pro.
- index.css: density heading ladder (semibold, drop font-bold) + .label-eyebrow util
- 6 UI primitives (Button/Input/Label/Select/Textarea/Dialog): text-xs font-semibold, py-1.5 ≤36px, rounded-lg, brand focus-ring
- 6 shell (DataTable sticky-thead+RowActions/Layout brand-rail/TopBar/PageHeader/PhaseBadge/EmptyState)
- DashboardPage flagship: KPI cards + brand-tinted icon chips + uppercase labels
Visual-only — functionality unchanged (Button variant/size keys stable 51 call-sites, props/forwardRef intact). build 0 TS err. reviewer PASS 0 blocker (2 minor slate-400 hint a11y defer). fe-admin only (fe-user mirror = Phase 3). Dashboard live-visual blocked by dev auth-rig → xem live sau deploy.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 11:50:59 +07:00
ed5a239212
[CLAUDE] Docs: S55 closeout — master data import từ Excel (Run #377 ) + Mig 47→48 + ef-core skill
...
62 dự án + 71 hạng mục + 3 NCC real loaded prod (SeedRealMasterDataAsync ungated). Mig 48 AddProjectMasterFields. STATUS/HANDOFF/session log + CLAUDE.md root mig count + ef-core SKILL migration table. 2 agent return truncated (BE+reviewer) → em main disk/runtime-recover lesson.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 09:45:30 +07:00
69cb3937bb
[CLAUDE] Master: nạp master data thật từ Excel (62 dự án + 71 hạng mục + 3 NCC) + Project +4 cột (Mig 48)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m33s
Nạp master data công ty từ file Excel 'HẠNG MỤC CÔNG VIỆC DỰ ÁN':
- 62 Projects (Mã + Năm; tên/CĐT/địa điểm/gói thầu cho ~6 dự án có chi tiết)
- 71 WorkItems: Vật tư 16 · Thầu phụ 30 · MEP 9 · Thiết bị 16
- 3 Suppliers (TRUONGGIANG/TANPHU/TGN)
Mig 48 AddProjectMasterFields: Project +4 cột nullable (Year/Investor/Location/Package) + ProjectFeatures DTO/Create/Update + ProjectsPage form ×2 app (SHA256 mirror).
SeedRealMasterDataAsync per-code idempotent, UNGATED → reaches prod (coexist demo). FLOCK01 collision → skip (demo wins).
Verify: build 0-err · test 216 PASS · runtime Dev proof (data landed, Investor col populates). Provenance: scripts/master-import-data.generated.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 09:27:04 +07:00
f8640d6f18
[CLAUDE] Docs: S54 closeout — IT ticket reassign cross-stack (Run #376 ) + harvest reconcile + monitor GATE PASS
...
- STATUS/HANDOFF: S54 IT-staff reassign (ca4b602 , test 216, bundle rotate cả 2), user-mem re-ground 20, Phase 9 Ops scope cho NEXT
- Session log 2026-06-08-S54 + cicd-monitor MEMORY (Run #376 , H2-gap post-deploy lag)
- H2 harvest GATE PASS 5/5 (residual reconcile verified) + H1 tooling 4-mặt stable
- flag monthly 2026-07-01: sys.tables 93-vs-92, STATUS re-tier S50..S38
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 16:28:53 +07:00
ca4b60277b
[CLAUDE] Office: IT staff tự reassign ticket — authz Admin-OR-IT + capability endpoint (S54)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m17s
- BE: GetAssignableItStaffQuery {canReassign,staff} capability endpoint + AssignItTicketHandler authz Admin-OR-dept-IT (Forbidden) + assignee-must-IT (Conflict); controller /assign hạ [Authorize(Roles=Admin)]→[Authorize] (handler enforce fine-grained data-driven)
- FE: fe-admin + fe-user ItTicketsPage SHA256-identical (reverse S53 divergence), nút gate by canReassign, dropdown từ /assignable-staff (không /users)
- Test: +13 authz guard (203→216 PASS), reviewer PASS (role-string Admin chain-verified real)
- No migration (DepartmentId reuse), no menu change
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 16:12:14 +07:00
d8cd111532
[CLAUDE] Docs: S53 closeout — gotcha #57 EXT Master (Mig 47) + P11-D/E + database-agent verified-runtime + doc-drift
...
Session 53 closeout (HMW-mode ON, 'làm hết' full close). Code already shipped in 44b9e54 (Mig 47, Run #260 ) + dbf6648 (C+D, Run #261 ), both prod-verified.
- STATUS/HANDOFF: S53 entry (mig 46->47, test 200->203, menu +Off_AttendanceReport, bundle admin DfCfHUE9, database-agent verified-runtime).
- Doc-drift E (H1 top-5): ef-core skill 43->47, agents/README roster 10->11 + plugin nac, CLAUDE.md root 45->47 mig + 186->203 test, docs/CLAUDE.md 56->57 gotcha + 91->92 ERD.
- adap-report: database-agent executed-file -> verified-runtime (spawn-test caught Mig 46-unapplied-local).
- session log 2026-06-08-S53 + 4 agent diaries (S53 work).
- Memory: +project_database_agent_verified_local_drift (user-memory, outside repo).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 15:24:45 +07:00
f440c194a8
[CLAUDE] Docs: S52 closeout — Phase 11 D+E+F deployed + database-agent + session-limit recovery
...
STATUS/HANDOFF S52 (Phase 11 product COMPLETE, test 200, Mig 46, roster 11, bundle DYfjnpY0/_3S0BPJ2). Session log. Proxy-append implementer-backend + test-specialist diaries (Wave 2 agent killed by session-limit truoc MEMORY step).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 13:38:12 +07:00
6a664298fa
[CLAUDE] Office: P11-E AttendanceReport+Excel+OtPolicy + P11-F MaTicket codegen (Wave 1)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m10s
P11-F: MaTicket gen-on-create qua WorkflowAppCodeGen (IT/2026/NNN Serializable atomic, kanban no-workflow). P11-E: GetAttendanceReportQuery monthly aggregate (day-type weekday/weekend/holiday OT x OtPolicy multiplier in-memory) + AttendanceReportExcelExporter (ClosedXML) + 2 endpoint Admin-only + fe-admin AttendanceReportPage. Migration-free. +5 test (186->191). reviewer PASS (gotcha #44 role-string verified, 0 blocker).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 12:34:48 +07:00
e9ee97fb3b
[CLAUDE] Docs: adopt database-agent (DB1-DB11 read-advisory) — roster 10->11 + adap-report
...
AI_INFRA broadcast 2026-06-08-Agent-database-codebase-agents. database-agent STRONG-FIT (DB11 RowVersion va lost-update gap S43); READ-advisory tier (implementer-backend van author). codebase-agent SKIP n-a (investigator cover + csharp-lsp Windows no-op). Nac executed-file -> verified-runtime CHO CLI restart.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 12:33:52 +07:00
3b67a2bd19
[CLAUDE] Docs: S51 session-end closeout — error-ledger §L + monitor spawn-records + root counts
...
§L.a/b: E-002 RESOLVED (gotcha #57 LeaveType/Shift/OtPolicy filtered Mig 45) + NEW E-007/AS-11 (parallel-fan-out FE<->BE contract mismatch, reviewer-caught pre-commit) + Active-Guards (#57 guard 2->3 verified + reviewer cross-stack guard). H2 GATE PASS 5/5 + H1 CHOT 4-mat spawn-records appended (both wrote 0 files - E-006 backstop held). CLAUDE.md root counts 43->45 mig / 91->92 tables / 181->186 test. HANDOFF: database-agent /adap-apply recommend next-session + doc-drift backlog coords. CI-skip (docs/.md only).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 11:44:39 +07:00
68c6bfea77
[CLAUDE] Docs: S51 P11-C Vehicle+Driver + gotcha #57 (3 HRM catalog) closeout
...
STATUS/HANDOFF S51 (Mig 43->45, tables 91->92, test 181->186, bundle Cg9mvltU/YgqDvsqr, P11-C DONE) + gotchas #57 ext (2->3 HRM catalog Mig 45 + Master ext backlog Mig 46 worktree) + session log 2026-06-08-S51. Agent-memory flush (impl-be/fe + test + cicd + investigator self-write; reviewer em-main proxy [return truncated gotcha #53 ]). CI-skip (docs/.md only).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 10:52:25 +07:00
f8179c5fbd
[CLAUDE] Docs: S50 Harness 1·2·3 verified-runtime closeout + AS-10 autonomous-write finding (E-006)
...
- Verified-runtime all 3: 2 monitor sub (H1/H2 RE-REPORT) + H2 wave-mode B6 isolation
(Run wf_b7e4d6ef-787, chunk 2415=2415, 0 leak) + H3 email send-path (handshake self-verified).
- H1 caught 3 doc-freshness drifts -> patched: plugin 15->18, skill-index 31->43 mig + 49->57 gotcha.
- gotcha #57 exact coords confirmed: LeaveTypeConfiguration.cs:19 + ShiftPatternConfiguration.cs:19.
- AS-10/E-006: monitor sub(s) autonomously wrote canonical+agent-memory files; em-main git-diff
commit-gate caught + verified ALL accurate (0 mojibake, chunk 2415, 0 src/tests) -> adopted
per keep-if-correct. Process gap flagged for monitor tool-grant review.
- Test 181 PASS unchanged (0 .cs). CI-skip (all .md).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-08 00:25:00 +07:00
e27d877172
[CLAUDE] Infra: adopt AI_INFRA Harness 1/2/3 — monitor subs (roster 8->10) + wave-folder isolation + email channel (S49)
...
Harness 1 (Self-observability): NEW tooling-auditor (H1 tooling/docs-freshness 4-faceted) + harvest-curator (H2 harvest-integrity 5-axis) INFORM-only monitor subs, TACH BIET per anh-mandate -> roster 8->10. Wire session-start Phase 2.1.1 RE-REPORT + session-end L.b 6->7-step (H2 5-axis GATE + H1 chot + B5 wave-gom). H3 plugin/skill = gop-vai doc, 0 new agent.
Harness 2 (wave-folder isolation): hmw.js WAVE-MODE (subMdPath + tool-aware writeGuard) + .gitignore wave-*/ + agent-teams/ (B6 git-check-ignore verified) + NEW workflows/README convention. Harness 3 (email channel): broadcasts/ (6+6 folder + 13 .gitkeep + _index + inbox/README, committed) + send/check-email cmd (self=se) + adap-apply base-path fix outbox/all/.
HMW-mode ON: recon fan-out 4 read-only agent -> em main single-writer WRITE -> reviewer PASS all 3. Containment: git-diff 1 benign self-MEMORY + chunk-count 2414=2414 (0 RAG-write). Nac executed-file, verified-runtime PENDING CLI restart. 3 adap-reports + session log. Test 181 unchanged (no product code). CI runs (hmw.js/.gitignore/.gitkeep not path-ignored) but no bundle/migration change.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 23:18:43 +07:00
e2fcabea00
[CLAUDE] Docs: S48 post-deploy sync — cicd Run #369 PASS (login a11y live)
...
- STATUS bundle hash admin DPPTx2Kw / user CjoUEsoV (rotated) + S48 verdict
- HANDOFF next-(a) marked done · session log cicd spawn-record + verdict
- cicd-monitor MEMORY flush (Run #369 + bundle baseline)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 00:13:48 +07:00
009dd94f22
[CLAUDE] Docs: S48 adap-* verify closure post-restart + Gov-v2 error-ledger + §L.b
...
- store_memory strip VERIFIED-runtime (registry 0/8 subs) — adap-report updated
- frontend-designer FD2 loop VERIFIED-RAN (first spawn) — adap-report updated
- Gov-v2 delta CLOSED: NEW docs/governance/error-ledger.md (blameless RCA + Active-Guards
index + AS-1..AS-9 deterministic-detect + 3-ledger triad) + session-end.md Phase 1.5 §L.b 6-step
- STATUS/HANDOFF S48 + session log + frontend-designer MEMORY flush (FD2 rig + Tailwind-v4 fact)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-03 00:05:39 +07:00
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
7fbe05a19c
[CLAUDE] Docs: S45 session-end — test-gap + Mig 43 sync
...
STATUS/HANDOFF S45 (154->181 test, Mig 43) + gotcha #57 (soft-delete UNIQUE must filter [IsDeleted]=0) + session log + root CLAUDE counts + ef-core skill Mig 43 row + flush 3 agent MEMORY (test-specialist proxy after #53 truncation + cicd Run #368 + investigator P11-C recon).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-01 14:49:28 +07:00
ae30f8f5e2
[CLAUDE] Docs: S44 monthly drift audit + AI_INFRA bundle 06-01 adopt
...
Cadence audit (2026-06-01), docs-only -> CI-skip. investigator-codebase
drift scan (ground-truth from disk) -> em main patch. No code touched,
154 test unchanged.
Drift fixes (42 count corrections): 40->42 mig, 84/59/55/47->91 tables,
130/111->154 test, 52/49->56 gotcha across CLAUDE.md, docs/CLAUDE.md,
ef-core-migration + dependency-audit skills, schema-diagram, database-guide.
schema-diagram migration table extended Mig 17-42; ef-core history Mig 27-42;
detailed-section gap (Mig 27-42 modules) flagged explicit (deferred, not silent).
AI_INFRA bundle 06-01 (federated, full scope):
- A: RAG T1/T2 auto-ack
- C: hygiene 7/7 agent-mem L1 <=16KB; "25KB"->"~30KB tiered" wording x7
- D: #4 self-sustaining adoption-report step -> /session-end Phase 6.3
- E/F: report + ledger -> docs/governance/
Carry-over .mcp.json + BROADCAST-05-29 left untouched (concurrency rule).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-01 12:39:56 +07:00
197c72f352
[CLAUDE] Docs: S42-S43 close-out — Phase 11 P11-A+P11-B session log + HANDOFF tier + gotcha #56
...
- Session log S42-S43 (P11-A WorkflowApps ApproveV2 + P11-B LeaveBalance, 8 commit chain)
- HANDOFF tiering: +S43 +S42, trim S40-S38 → session logs
- gotcha #56 CWD-drift stray memory (cd trước spawn → agent ghi nhầm fe-user/.claude, 3× S42-S43)
- STATUS gotchas 55→56
- cicd-monitor MEMORY (Run #367 P11-B verdict)
User memory: +feedback_high_to_max_multiagent_quality (High lọt 2 bug, Max 0 bug; WIRE FE
đọc reference proven + FK-invariant-at-write-doors + Max re-review cross-stack).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-01 12:04:34 +07:00
82d7fcff4d
[CLAUDE] Workflow: LeaveBalance business logic — trừ phép khi duyệt + số dư (Phase 11 P11-B)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m8s
Số dư phép theo (User × LeaveType × Year) + trừ tự động khi đơn nghỉ duyệt cuối.
Policy: cho phép vượt số dư (âm) + cảnh báo (anh main chốt), tích hợp vào trang đơn nghỉ.
Schema (Mig 42 AddLeaveBalances — pure additive, 1 bảng):
- LeaveBalance: UserId + LeaveTypeId + Year + EntitledDays + UsedDays + AdjustmentDays.
UNIQUE (UserId,LeaveTypeId,Year), FK LeaveType Restrict, decimal(5,2).
Remaining = Entitled + Adjustment − Used (computed, không store).
Deduction hook (ApproveLeaveRequestHandler nhánh terminal DaDuyet — exactly-once):
- Upsert LeaveBalance(RequesterUserId, LeaveTypeId, StartDate.Year), auto-create từ
LeaveType.DaysPerYear, UsedDays += NumDays. Guard Status!=DaGuiDuyet chặn re-approve.
FK invariant guard (em main thêm sau test reveal FK risk):
- Create + UpdateDraft validate LeaveTypeId tồn tại (AnyAsync) → ConflictException.
Đóng cửa vào — bogus type không thể tới deduction FK insert (tránh 500 kẹt đơn).
CQRS LeaveBalanceFeatures.cs: GetMy (self, lazy merge active LeaveType) + GetUser (admin)
+ AdjustLeaveBalance (admin upsert carry-over). Controller [Authorize] + admin Roles=Admin.
Embed: GetLeaveRequestByIdHandler trả balance NGƯỜI TẠO (approver xem thấy đúng).
FE: WorkflowAppDetailPage ×2 — block "Số dư phép" + cảnh báo vượt khi kind=leave (SHA256 identical).
Tests (+11, 130→154 PASS): deduction single/multi-level/accumulate/negative-allowed/
reject-return-no-deduct + lazy-merge + adjust upsert + Create guard bogus→Conflict.
Cũng repair 2 test S42 terminal FK-fail (template BuildLeave +seed LeaveType).
Verify: build 0 error · 154 test · FE ×2 · reviewer Max PASS (deduction exactly-once +
FK invariant fully closed, 2 minor concurrency/comment defer).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 11:10:44 +07:00
ffb20627b7
[CLAUDE] Docs: update STATUS bundle hash + run-id reconcile (S42 P11-A fix deploy)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m52s
- Bundle hash live → admin 6D4k-aRi / user DkME-974 (Gitea #365 , verified post-fix)
- Reconcile Gitea task id: #364 (e7b66cd P11-A) + #365 (75df04e picker fix);
"Run #250 " cũ là cicd-monitor memory truncated ghi sai → Max re-verify sửa
- Note fe-user re-rotate pending e47ef1d (ProposalCreatePage chip task deploy riêng)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 10:23:43 +07:00
75df04ec82
[CLAUDE] Workflow: fix workflow picker 2 bug (P11-A Max re-review) + SetWorkflow endpoint
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m5s
Double-check chất lượng P11-A ở Max (agents trước chạy High + truncate 3×) →
phát hiện 2 bug THẬT trong workflow-picker FE của WorkflowAppDetailPage (core
approve/reject/return ĐÚNG, chỉ sub-flow chọn quy trình hỏng):
Bug #1 (HIGH) — pinWorkflow PUT /{id} chỉ gửi {approvalWorkflowId} → UpdateDraft
validator (Reason NotEmpty, NumDays>0...) fail → 400. Nút "Lưu quy trình" vỡ.
Bug #2 (HIGH) — fetch workflow expect flat array nhưng endpoint trả
AwAdminOverviewDto {types:[...]} → picker rỗng/crash. FE copy nhầm pattern hỏng
của ProposalCreatePage thay vì PE/Contract proven.
Fix:
- BE: thêm endpoint chuyên dụng PUT /{id}/workflow + Set{Module}WorkflowCommand/Handler
cho 4 module — chỉ set ApprovalWorkflowId trên draft Nhap/TraLai (verify ApplicableType
per module), KHÔNG validate field khác. Single-responsibility, bulletproof.
- FE: sửa fetch mirror PE/Contract (data.types.find(t=>t.applicableType===X)?.history
.filter(isUserSelectable)) + pin gọi endpoint mới. fe-admin+fe-user SHA256 identical.
- Test: +3 SetWorkflow (happy no-status-change / wrong ApplicableType Conflict / submitted
guard) → 141→144 PASS.
Verify: BE build 0 error · 144 test PASS · FE build ×2 · SHA256 identical.
Bonus phát hiện: ProposalCreatePage (S37) có bug #2 có sẵn (latent, chưa exercise UAT)
→ flag spawn task riêng, KHÔNG fix trong commit này.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 10:14:34 +07:00
e7b66cd52b
[CLAUDE] Workflow: wire ApproveV2 + LevelOpinions cho 4 WorkflowApps module (Phase 11 P11-A)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m6s
Wire full approval workflow V2 cho Leave/OT/Travel/Vehicle — cookie-cutter
mirror Proposal (Mig 38). Trước đây skeleton Phase 1 (Create+List), giờ
ApproveV2 advance-level + UPSERT LevelOpinion + atomic codegen.
Schema (Mig 41 WireWorkflowAppsApprovalV2 — 84→89 tables, pure additive):
- 4 bảng {Leave,Ot,Travel,Vehicle}LevelOpinions (UNIQUE composite + Cascade
parent + Restrict Level — mirror ProposalLevelOpinion)
- 1 bảng WorkflowAppCodeSequences (shared atomic MaDonTu, Prefix-keyed)
- 4 cột RejectedFromStatus (smart return tracking)
- enum ApprovalWorkflowApplicableType.TravelRequest = 9
Application (LeaveOt + TravelVehicle ApprovalFeatures.cs — 30 handler):
- GetById detail (Include LevelOpinions + JOIN Step/Level) · UpdateDraft
- Submit (gen MaDonTu + DaGuiDuyet + level=1, verify ApplicableType per module)
- Approve (verify actor==ApproverUserId OR Admin, UPSERT opinion latest-write-wins,
advance level OR terminal DaDuyet, empty comment → placeholder)
- Reject (→TuChoi) · Return (→TraLai + RejectedFromStatus)
Api: 4 controller +6 route mỗi cái (GET/{id}, PUT/{id}, submit/approve/reject/return)
Infra: DbInitializer seed 4 workflow V2 mẫu (QT-NP/OT/CT/XE-V2-001) → UAT test ngay
FE: WorkflowAppDetailPage.tsx declarative 4-kind (fe-admin+fe-user SHA256 identical)
— workflow status + opinion timeline + action buttons; gỡ banner skeleton + row nav
Tests: +11 WorkflowAppApproveV2Tests (130→141 PASS) — state machine + UPSERT
invariant + guards + codegen + forbidden + placeholder (Leave full + Ot smoke)
Verify: build 0 error · 141 test PASS · FE build ×2 · reviewer checklist
(ApplicableType per-module + cross-module DbSet + [Authorize] — no copy-paste bug)
Known-minor (unreachable): Reject/Return actor-check skip nếu CurrentApprovalLevelOrder
null — nhưng DaGuiDuyet luôn có set (defer hardening).
ItTicket KHÔNG đụng (kanban, no workflow V2).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 09:44:00 +07:00
9f10764b06
[CLAUDE] Docs: S40 finish bulletin MUC 2+4 gaps (tiered agent-def + rag.json path fix + archive dirs)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m5s
MUC 2 (Tiered Memory) finish:
- investigator-codebase.md: ">20KB force-read" + ">25KB suggest curate" -> tiered L1/L2/L3 (last agent-def with old policy wording; gotcha count 53->55)
- archive/ created for 3 new seed agents (investigator-api/implementer-frontend/test-specialist) via .gitkeep
MUC 4 (RAG v1.3) finish:
- rag.json extra_corpus slug FIX: D--Dropbox-CONG-VIEC-SOLUTION -> ...-SOLUTION-SOLUTION-ERP (27 user-memory feedback entries were NOT indexed). Re-index = AI_INFRA op (flagged).
- chunk_size 1500 deviation UNCHANGED (AI_INFRA mechanism decision, trial 2026-06-16). JSON valid verified.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 18:59:02 +07:00
6f08d1f0eb
[CLAUDE] Docs: S40 adopt AI_INFRA Tiered Memory Policy v1 (bulletin MUC 2)
...
- README Memory discipline -> tiered L1 HOT (soft-cap ~30KB) / L2 archive on-demand / L3 RAG just-in-time (thay hard >25KB)
- 7 agent MEMORY.md header -> tiered framing
- Anti-truncation rule soft-cap ~30KB
- Adopt per AI_INFRA Cross-Project Bulletin 2026-05-29; SE 7-agent in scope
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 16:58:39 +07:00
78c9de35f8
[CLAUDE] Docs: S40 curate 4 agent MEMORY >25KB + RAG catch-up chunk S37-S40
...
- investigator-codebase 35.7->7.6 · cicd-monitor 35.3->8.4 · implementer-backend 30.9->7.9 · reviewer 28.4->7.5 KB
- Archived verbose FIFO -> git d2f52ba; refreshed stale counts (111->130 test, 33->40 mig, ~146->211 endpoints, 47->55 gotcha); dedup split (FE patterns -> implementer-frontend, test patterns -> test-specialist)
- Foundation preserved: gotcha patterns + 5-stage/5-category checklist + Smart Friend guard + workflow schemas + sqlcmd/controller-audit + BE Patterns 1-12-ter
- RAG: store_memory S37-S40 catch-up chunk (rerank 0.867 top hit); full re-index pending `python bootstrap.py --project solution_erp` (needs VOYAGE_API_KEY env)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 13:10:55 +07:00
d2f52ba586
[CLAUDE] Docs: S40 consolidate STATUS/HANDOFF 393KB→9KB + re-ground count drift + archive zero-loss
...
- STATUS.md 169.7KB→5.7KB, HANDOFF.md 223.6KB→3.4KB (giữ current+3 session, pointer logs)
- Full verbatim archived docs/_archive/{STATUS,HANDOFF}-preS40-fullhistory.md (zero info loss)
- Re-ground count: endpoints ~223→211, FE pages 53→65 (36+29), menu 85→~53; tables 84 confirmed correct (DbSet 77 + Identity 7)
- CLAUDE.md root patch: 33→40 mig, 60→84 bảng, 111→130 test
- S40 init audit: 7-agent live, RAG re-rank PASS 0.8789, 130 test PASS
- agent-memory S40 entries (investigator-codebase/api + test-specialist smoke audit)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 13:00:09 +07:00
fd0554a585
[CLAUDE] Agents: S39 upgrade multi-agent 4→7 + budget +50% + 5 RAG MCP (BVAAU pattern adapted)
...
Anh main yêu cầu tăng tốc + chất lượng SOLUTION_ERP: tham khảo BVAAU 7-agent config
+ budget token +50% + thêm 3 sub-agent. Adapted (NOT copied) — SOLUTION_ERP 2-FE-app
fit + giữ 6 skill proven battle-test 38 session.
Split 4→7 agent (anh main chốt via AskUserQuestion):
- investigator → SPLIT: investigator-codebase (cyan, internal SQL/EF/grep) +
investigator-api (blue, external docs/CVE/lib/cross-project)
- implementer → SPLIT: implementer-backend (yellow, .NET Domain+App+Infra+Api) +
implementer-frontend (orange, FE 2 app cookie-cutter mirror SHA256) [anh chốt
backend/frontend thay domain/infra BVAAU — fit 2 React app + giảm gotcha #53 truncate]
- test-specialist NEW (purple, dedicated tests/ — anh chốt full test layer)
- reviewer (red) + cicd-monitor (green) giữ
Tool grant +3 RAG MCP all 7 agent (search_code BM25 + store_memory + list_projects)
— BVAAU port, MCP server verified support. Prior chỉ 2 (search_memory + cross_project).
Skill re-distribute 6 skill across 7 agent (xem README matrix).
Memory: rename investigator→investigator-codebase + implementer→implementer-backend
(giữ history) + seed 3 new MEMORY (investigator-api/implementer-frontend/test-specialist)
extract relevant patterns. Delete old investigator.md + implementer.md.
README rewrite: 7-agent architecture + decision tree split-routing + phân việc matrix
boundary + token budget +50% cost reality (~1.05M opt / ~2M heavy ceiling) +
anti-truncation rules (gotcha #53 5× mitigation: brief ≤8K + curate pre-spawn +
entry ≤1.5K + 529 fallback solo).
⚠️ Anh main RESTART Claude Code CLI để registry hot-reload 7 agent (per S27 lesson
model:inherit + new files). Verify post-restart: smoke spawn 3 new agent confirm load.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-29 10:42:05 +07:00
49134f4f41
[CLAUDE] Docs+Memory: S38 wrap — PHASE 10 COMPLETE 11/11 Plan G-* ALL DONE deploy prod
...
🎊 PHASE 10 COMPLETE end-to-end cumulative 6 session S33-S38:
- G-H1 Hồ sơ NS (S33) + G-O1 Danh bạ (S34) + G-H2 Cấu hình HRM (S34+S35)
- G-O2 Phòng họp (S36) + G-O3 Đề xuất (S37)
- G-O4 + G-O5 + G-O6 + G-P1 + G-H3 SKELETON combo (S38)
S38 final wrap (code commit e54a22d + this docs wrap):
- Run #247 sha=e54a22d 3m25s PASS (fastest S38)
- Bundle rotate × 2 (admin CGueDk22→cWAXid0q + user CEt0QRgX→CX79e2kZ)
- Mig 39+40 prod head + 6 endpoint smoke + 6 new tables verified
- HR Dashboard prod live (TotalEmployees=33 / Male=17 / Female=16)
- 0 prod regression
Cumulative Phase 10 stats:
- 7 Mig (34→40) · 30+ new tables · ~75+ new endpoints · 17 FE pages × 2 app
- Pattern 16-bis 9× cumulative · Pattern 12-bis 12× cumulative · Smart Friend 9× clean
- 6 commit cumulative · 9+ CI Run all PASS
SKELETON Phase 1 trade-off rõ ràng — workflow ApproveV2 + LeaveBalance +
CodeGen + Vehicle catalog + ItTicketComments + Auto-assign + SLA timer DEFER Phase 11.
Next S39+: Phase 11 polish features OR Phase 9 Ops UAT 2-3 user 1 tuần.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 16:28:01 +07:00
17aaba9df0
[CLAUDE] Docs+Memory: S37 wrap — Mig 37 + G-O3 Đề xuất deploy prod end-to-end Run #246 PASS
...
S37 final wrap (1 commit code de1c378 + this docs wrap):
- Mig 37 enum extend +5 values + Mig 38 Proposal schema (4 entity)
- BE ~700 LOC + FE 4 file × 2 app SHA256 IDENTICAL
- CI Run #246 PASS 3m53s + bundle rotate × 2 + workflow QT-DX-V2-001 prod live
- gotcha #53 5th + 529 Overload 1× — em main solo fallback proven reliable
Pattern reinforced cumulative S37:
- Pattern 12-bis cross-module mirror 11× (PE V2 → Proposal V2 ApproveV2)
- Pattern 16-bis 4-place mirror cross-app 8×
Next S38: Plan G-O4 Đơn từ Mig 39 (Leave/OT/Travel + LeaveBalance business logic).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 15:59:16 +07:00
75521b8b88
[CLAUDE] Docs+Memory: S36 wrap — Plan G-O2 Phòng họp ALL DONE deploy prod end-to-end
...
S36 sequence done end-to-end 6 step trong 1 session (1 commit + 1 CI Run):
1. Curate 2 MEMORY (Implementer 36.4→31.7KB + CICD 40.4→28.3KB archive q4.md)
2. Investigator pre-flight G-O2 (clean-room 3 entity + FullCalendar v6 alternative)
3. Em main solo Mig 36 schema + Apply Dev+Design DB
4. Implementer BE CQRS (584 LOC) + Application.csproj +Relational fix gotcha #53 4th
5. Implementer FE 2 app (1770 LOC SHA256 IDENTICAL × 2 app + Pattern 16-bis 7×)
6. Reviewer Smart Friend 9× cumulative CLEAN + CICD Run #359 PASS
Verify cumulative S36:
- Run #359 sha=f45090b 3m55s success
- Bundle rotate × 2 (admin Bl6e54yi→C9kzTTmq + user DHmW2tUF→CC4DQ-Tr)
- Mig 36 prod head + 4 sample room + 4 menu seeded
- 0 prod regression observed
- 130/130 test PASS baseline preserve
State chốt S36:
- 36 mig (+1) · 74 tables (+3) · ~201 endpoints (+9 Meeting)
- 45 FE pages (+2 × 2 app) · 73 menu keys (+4 Off_PhongHop)
- Reviewer 9× cumulative + Pattern 16-bis 7× + Pattern 12-bis 10× cumulative
- 3 minor defer (AttendeeInput.Notes + Room race + silent skip) non-blocking
Next S37: Plan 10.3 Pre-flight Mig 37 enum extend +5 values → G-O3 Đề xuất.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 15:14:38 +07:00
8afdc1e826
[CLAUDE] Docs+Memory: S35 wrap — FE forms + G-H2 BE CRUD + FE Admin deploy prod end-to-end
...
Cumulative S35 3 commit + 3 CI Run #242/#243/#244 ALL PASS:
- `c3cd343` FE inline forms 5 satellite × 2 app cookie-cutter (+1758 LOC)
- `909655c` G-H2 BE CRUD HrmConfig 16 endpoint (+576 LOC NEW)
- `021674a` G-H2 FE Admin HrmConfigsPage declarative (+1388 LOC)
## Updates this commit (docs CI skip per gotcha #41 )
- docs/STATUS.md S35 wrap header (cumulative 3 chunk + Multi-agent ROI ~250K)
- docs/HANDOFF.md S35 brief + S36 backlog 6 option
- docs/gotchas.md +#53 sub-agent truncation/stall pattern S35 × 3 occurrence + Quick reference 28
- docs/changelog/sessions/2026-05-28-s35-fe-inline-forms-g-h2.md NEW session log
- 4 sub-agent MEMORY auto-updated entry (Implementer + CICD + Reviewer + Investigator S35 spawns)
## Patterns reinforced cumulative S35
- Pattern 12-ter (within-module N-satellite) 6× cumulative
- Pattern 12-bis (cross-module catalog mega) 3× cumulative
- Pattern 16-bis (4-place mirror cross-app) 6× — staticMap 4th place mandatory (gotcha #50 )
- Smart Friend 9× cumulative clean (S22+S25+S29×2+S33×2+S35×3)
- NEW: Declarative KIND_CONFIG Record pattern (single-page multi-kind CRUD reuse)
## Smart Friend Implementer 3 catch S35 (anti-pattern prevention)
1. Chunk 2 MaxLength validator vs EF config mismatch → aligned EF source-of-truth
2. Chunk 2 HRM entities NO HasQueryFilter → explicit .Where(!IsDeleted) 8 site
3. Chunk 3 em main spec gap Layout staticMap miss → Implementer enforced Pattern 16-bis 4-place
## State chốt S35
- 35 mig unchanged · 71 tables · ~185 endpoints (+16 HRM Configs)
- 43 FE pages (+1 HrmConfigsPage) · 130 test PASS unchanged
- 53 gotcha (+1 #53 ) · 27 memory user-level · 6 skills · 4 sub-agents
## Multi-agent ROI S35 ~250K
- Implementer 3 spawn ~80K (3 cookie-cutter chunk + Smart Friend × 3 catch)
- Investigator 1 spawn ~8K (G-H2 BE CRUD pre-flight + NamGroup MISS verdict)
- Reviewer 3 spawn ~60K (Smart Friend 9× clean, 2 truncated + 1 tight brief PASS)
- CICD 4 spawn ~70K (warm-up + 3 deploy verify, 1 stalled em main fallback)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-28 10:23:55 +07:00
e506cd8135
[CLAUDE] App+Api: S34 Plan 3 Item 3 BE 5 satellite CRUD scaffold (15 endpoint)
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m36s
Phase 1.5 Item 3 BE — Implementer Case 2 cookie-cutter 5-entity scaffold
mirror parent EmployeeProfile CRUD pattern (Pattern 12-ter NEW saved).
New file: Application/Hrm/EmployeeSatelliteFeatures.cs (621 LOC):
- 5 region (#region {EntityName}) — WorkHistory/Education/FamilyRelation/Skill/Document
- Each region: Create/Update/Delete Command + Validator + Handler
- Verify parent EmployeeProfile.Exists pattern AnyAsync(!IsDeleted)
- Soft delete IsDeleted=true + DeletedAt=UtcNow + DeletedBy=currentUser
- Validator nullable enum IsInEnum().When(HasValue) pattern
Modified file: Api/Controllers/EmployeesController.cs (70 → 234 LOC, +15 endpoint):
- 5 region × 3 verb (POST/PUT/DELETE) = 15 satellite endpoint
- Path per satellite:
- /api/employees/{id}/work-history
- /api/employees/{id}/education
- /api/employees/{id}/family-relations
- /api/employees/{id}/skills
- /api/employees/{id}/documents
- Per-action policy: Hrm_HoSo.Create/Update/Delete (override class-level Read)
- BadRequest guard: id != cmd.{EmployeeProfileId|Id} → "ID không khớp"
Document satellite metadata-only — file upload IFileStorage body wire defer S35.
Verify:
- dotnet build PASS (2 warn DocxRenderer baseline, 0 error)
- dotnet test 130/130 PASS (58 Domain + 72 Infra baseline preserve, no test add)
- Endpoints count: ~154 → 169 (+15)
- LOC delta: +785 BE (621 features + 164 controller)
Pattern 12-ter NEW (Implementer MEMORY): 5× satellite CRUD scaffold cookie-cutter
within-module (different from Pattern 12-bis cross-module mirror). Reusable
cho future N-satellite parent (vd Contract attachments, PE quotes, Budget details).
Defer S35:
- FE inline edit forms 5 satellite section (~1.5h em main solo)
- Test bundle satellite CRUD (~30 phút Implementer Case 3)
- IFileStorage Document body upload wire (multipart form-data)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 14:56:14 +07:00
61e9ce5b3b
[CLAUDE] Domain+App+Api+Tests+FE-Admin+FE-User: S34 Plan 3 Phase 1.5 batch 4 item
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m48s
Phase 1.5 backlog G-H1 EmployeeProfile hardening batch (Items 6+2+1+4 of 6).
Item 6 — menuKeys FE drift sync × 2 app:
- fe-admin add: Catalogs + 4 Catalog leaves + Workflows + Budgets + Bg_List/Create/Pending (10 key)
- fe-user add: Budgets + Bg_List/Create/Pending + ApprovalWorkflowsV2 + 2 AwV2 leaf + MenuVisibility + Workflows (8 key)
- Cả 2 file giờ identical mirror BE MenuKeys.cs (28 key cumulative)
Item 2 — UpdateEmployeeProfileCommand bool→bool? safe partial update:
- 3 field IsCommunistParty/IsYouthUnion/IsTradeUnion → bool?
- Handler: HasValue check, null = giữ giá trị cũ (Reviewer minor #(b) S33 fixed)
- FE không bắt buộc gửi 3 field every PUT — tránh accidental reset
Item 1 — EmployeesController per-action policy (gotcha #44 mitigation):
- Class-level [Authorize(Policy = "Hrm_HoSo.Read")] — non-admin thiếu Read → 403
- POST [Authorize(Policy = "Hrm_HoSo.Create")]
- PUT [Authorize(Policy = "Hrm_HoSo.Update")]
- DELETE [Authorize(Policy = "Hrm_HoSo.Delete")]
Item 4 — Test bundle Phase 1.5 (+10 [Fact], baseline 120 → 130/130 PASS):
- EmployeeCodeGeneratorTests (3 [Fact]) — atomic SERIALIZABLE NV/YYYY/NNNN
+ first call + sequential increment + year boundary preserve old year
- CreateEmployeeProfileCommandTests (4 [Fact]) — Create handler edge case
+ first profile + duplicate UserId Conflict + soft-deleted Conflict-restore
+ UserNotFound NotFoundException
- ListEmployeesQueryTests (3 [Fact]) — filter + paging logic
+ status filter + departmentId filter + search by EmployeeCode partial
Implementer Case 3 test gen caught spec mismatch (allow new after soft-delete
vs throws Conflict-restore) — chose CODE source of truth + renamed test
documenting discriminator message branch. Em main verify behavior correct
(admin UX khôi phục thay vì tạo mới — explicit flow defer Phase 1.5+).
Verify:
- dotnet build PASS (2 warn DocxRenderer baseline, 0 error)
- dotnet test 130/130 PASS (58 Domain + 72 Infra = +10)
- 4 endpoint /api/employees policy wired (gotcha #44 active mitigation)
- 4 MEMORY agent updated post-spawn (CICD Run #238 + Implementer test bundle)
Deferred Phase 1.5 next batch:
- Item 3 Satellite CRUD endpoints (WorkHistory/Education/FamilyRelation/Skill/
Document) + FE inline edit forms — heavy ~2-3h
- Item 5 UAT smoke non-admin role verify silent 403 catch — defer post-deploy
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:57:08 +07:00
ea440da990
[CLAUDE] Domain+App+Api+Infra+FE-Admin+FE-User: S34 Plan 2 G-O1 Danh bạ nội bộ
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m46s
Phase 10.2 Văn phòng số — Internal Directory (1 endpoint reuse Users +
EmployeeProfiles + Departments, FE card grid avatar/dept/email/phone/Ext).
BE Task 1+2 (em main solo):
- Application/Office/DirectoryFeatures.cs — GetDirectoryQuery + DirectoryItemDto
12 field LEFT JOIN Users.IsActive + Departments + EmployeeProfiles
- Api/Controllers/DirectoryController.cs — GET /api/directory?search=&departmentId=
class-level [Authorize] (mọi authenticated NV tra cứu danh bạ nội bộ)
- MenuKeys.cs +Off+OffDanhBa const + All[] update
- DbInitializer.SeedMenuTreeAsync Off Order=29 + OffDanhBa Order=1 dưới Off
FE Task 3 (Implementer Case 2 Pattern 16-bis 4-place mirror cross-app — 5×):
- types/directory.ts SHA256 7349d9f64e78 × 2 app IDENTICAL
- pages/office/InternalDirectoryPage.tsx SHA256 2aa7e0eed2c8 × 2 app IDENTICAL
Card grid responsive 1/2/3/4 col + filter dept dropdown + search input
Avatar 14×14 initials gradient PALETTE 6 màu (Pattern 14 Tailwind JIT)
EmployeeCode badge + Department emerald badge + email mailto + phone tel
Internal phone Ext: amber badge + empty/loading state Vietnamese 100%
- App.tsx route /directory × 2 app
- lib/menuKeys.ts Off+OffDanhBa const × 2 app
- components/Layout.tsx resolvePath staticMap Off_DanhBa:/directory × 2 app
(gotcha #50 — 5 places mirror crossapp DON'T MISS)
Verify:
- dotnet build PASS (2 warn DocxRenderer existing, 0 error)
- dotnet test 120/120 PASS (58 Domain + 62 Infra baseline preserve)
- npm build × 2 app PASS 0 TS err (fe-admin 1436KB / fe-user 1350KB)
Implementer MEMORY Pattern 16-bis reinforced 5× cumulative (S29 Plan CA HF1 +
S29 Plan B Chunk D + S33 Plan B G-H1 Task 5 + S34 Plan G-O1 Task 3).
Endpoint smoke pending CICD post-deploy Stage 4 (Run #XXX expected ~3m30s).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:39:10 +07:00
7b0781b94e
[CLAUDE] Docs: S34 Plan 1 — Curate 4 sub-agent MEMORY 118KB→101KB (-15%)
...
Em main proxy curate sequence 1/4 post-S33 wrap. Archive verbose Recent
activity/runs entries cumulative S25-S28-S29 sang archive/2026-05-q2.md
(Reviewer) + archive/2026-05-q3.md (3 agent khác) — KHÔNG động vào
Patterns/Foundation sections.
Sizes delta:
- CICD: 32.9KB → 27.3KB (Run #215+#216 + S22 verify + S27/S28 governance archived)
- Implementer: 30.5KB → 24.6KB (S29/S28/S27 wrap + 2026-05-22 curate + setup archived)
- Reviewer: 28.5KB → 25.1KB (S26/S25/S28 + S29 Plan B pre-push archived)
- Investigator: 26KB → 21.8KB (S28/S27 retrospective + S25 + setup archived)
Foundation PRESERVED 100%:
- Smart Friend 6× cumulative guard (Reviewer)
- 10-surface-point per-NV checklist + gotcha #39-#48 detail (CICD)
- Patterns 1-15 + 12-bis + 16-bis (Implementer)
- Active workflow schemas V1+V2 + smoke verify patterns (Investigator)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 13:24:12 +07:00
edba4ae147
[CLAUDE] Docs+Memory: S33 wrap — Plan B G-H1 + Plan C B-Wrap deploy prod end-to-end
...
S33 cumulative wrap update STATUS + HANDOFF + migration-todos tick G-H1
7 task done + session log + CICD MEMORY post-Run #237 entry.
## Updates
- docs/STATUS.md: prepend S33 entry (Plan B + C + D drift patch + multi-agent
ROI ~250K total + 8 patterns reinforced + new capability UAT-ready)
- docs/HANDOFF.md: prepend S33 wrap + S34 handover recommend sequence (curate
4 MEMORY → G-O1 Danh bạ → G-H2 HrmConfig)
- docs/changelog/migration-todos.md: tick [x] G-H1 7 task + stats final S33
+ Phase 1.5 backlog
- docs/changelog/sessions/2026-05-26-2030-s33-plan-bc-deploy.md: NEW session
log full (~250 line: outcomes + plan execution table + multi-agent ROI +
8 patterns + defer Phase 1.5/S34+ + commits range + UAT capability)
- .claude/agent-memory/cicd-monitor/MEMORY.md: post-Run #237 entry append
(truncated from S33 startup curate 24.2KB → 32.9KB, curate priority next
session)
## Stats final S33
| Metric | Pre-S33 | Post-S33 | Δ |
|--------|---:|---:|---:|
| Migrations | 33 | 34 | +1 (Mig 34 AddEmployeeProfiles) |
| Tables | 60 | 67 | +7 (EmployeeProfile + 5 satellite + Sequence) |
| Endpoints | ~148 | ~153 | +5 (/api/employees REST) |
| FE pages | 38 | 40 | +2 (EmployeesListPage + EmployeeCreatePage × 2 app) |
| Menu keys | ~60 | ~62 | +2 (Hrm + HrmHoSo) |
| Tests | 111 | 120 | +9 (BW1-BW7 Plan C, BW6 split 3) |
| Gotchas | 52 | 52 | 0 new (2 existing lesson applied: #50 + #51 ) |
| Memory user-level | 26 | 26 | 0 new (decision: no rule warrant new entry, all patterns reinforce existing) |
| AppRoles | 14 | 14 | 0 new |
| EmployeeProfile prod | 0 | 33 | +33 (seeded via DbInitializer idempotent) |
| EmployeeCodeSequences | 0 | 1 | NV/2026 LastSeq=33 |
## Multi-agent ROI cumulative S33
🟦 Investigator 2 spawn ~20K + 🟨 Implementer 4 spawn ~110K (2/4 truncated
mid-MEMORY, functional complete) + 🟥 Reviewer 3 spawn ~60K (Smart Friend
6× clean) + 🟩 CICD 3 spawn ~60K (Run #350 + #237 PASS) + em main solo
~150K (Task 2 + Task 3b + Task 6 + 7 commit batch + push).
## CI Runs
- #350 Phase 1 (commit 48a99e1 ) — 3m38s PASS — Mig 34 prod + 33 seeded + 9 BW
- #237 Phase 2 (commit 79a8343 ) — 3m50s PASS — 5 NEW employee endpoint + Hrm
menu seeded + bundle rotate × 2 app
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 22:25:19 +07:00
79a8343de3
[CLAUDE] Memory: S33 Plan B Phase 2 + Reviewer activity 3 sub-agent append
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m50s
3 sub-agent MEMORY auto-updated qua spawn S33 Plan B Phase 2:
🟨 Implementer (a8f4567 + a9bb9f3 + afdc812) — 3 spawn Task 3+4+5:
- Task 3 Mig 34 BE entity scaffold 17 file (truncated mid-Pattern 12-bis
lookup, MEMORY.md NOT updated — pending em main proxy entry)
- Task 4 BE CQRS 3 file scaffold (truncated mid-MEMORY update — pending
em main proxy entry)
- Task 5 FE 2 app 12 file scaffold (COMPLETE w/ MEMORY updated cleanly,
Pattern 16-bis + 12-bis reinforcement noted Recent activity FIFO)
🟥 Reviewer (a5acadc + aaa1df3 + ae752c0) — 3 spawn cumulative S33:
- S33 startup drift severity assessment SEVERE patch CLAUDE.md now
- Plan C B-Wrap pre-commit Smart Friend 5× clean 9/9 PASS in 4.7s
- Plan B Phase 2 pre-commit Smart Friend 6× clean 17 file 0 critical/major
3 minor defer Phase 1.5 (per-action policy + bool partial + IDateTimeProvider)
🟩 CICD Monitor (aa504e8 + a67df4e) — 2 spawn:
- S33 startup health-check HEALTHY 3/3 prod 200 + cert 58 days
- Plan B Phase 1 + Plan C verify Run #350 PASS 3m38s + Mig 34 prod applied
+ 33 EmployeeProfiles seeded + gotcha #51 INFRASTRUCTURE seed verify
Pattern: per repo convention (5400983 S32 wrap + b3444a3 S33 startup),
sub-agent MEMORY auto-append commit scope `[CLAUDE] Memory:` separate từ
substantive scope.
Implementer truncation pattern observation (Task 3 + Task 4):
- Heavy scaffold ~50+ tool uses → MEMORY update at end runs out of token
budget → mid-sentence cutoff "Let me check..." / "Let me append..."
- Functional work complete despite truncation (verified via file existence
+ build + test)
- Mitigation: Implementer split heavy task into 2 phases (scaffold first
100K tokens, MEMORY update separate 20K tokens budget reserve)
- Em main proxy MEMORY append later session — defer non-critical knowledge
loss (Pattern 12-bis foundation already in MEMORY from S29 Plan B Chunk C)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 20:28:02 +07:00
b3444a3448
[CLAUDE] Memory: S33 startup + Plan B+C activity 3 sub-agent append
...
3 sub-agent MEMORY auto-updated qua spawn S33:
🟦 Investigator (a327050, afaf6d5, a103d20) — 3 spawn entries:
- S33 startup audit 4 MEMORY size + cross-agent learnings 4 pattern +
RAG hit verify 2/3 PASS + 1 WARN boundary 0.684
- Plan B G-H1 Task 1 pre-flight NamGroup TblNhanVien* 10 bảng audit
(NOT 8 anh main estimate) + field map 70 cols main + 5 satellite
proposal (defer 3 HĐLĐ Plan H2)
🟥 Reviewer (a5acadc, aaa1df3) — 2 spawn entries:
- S33 startup drift severity assessment CLAUDE.md SEVERE patch now
- Plan C B-Wrap pre-commit verify 9/9 PASS in 4.7s, Smart Friend 5×
cumulative clean (em main+Implementer quality genuine NOT lowered)
🟩 CICD Monitor (aa504e8) — 1 spawn entry:
- S33 startup health-check HEALTHY 3/3 prod endpoint 200 + Mig 33 prod
synced + cert api.solutions.com.vn 58 days lead 2026-07-23 + discovery
paths-ignore thiếu eval/** wastefully deploy S31 RAG telemetry JSON
Pattern: per repo convention (5400983 S32 wrap), 3 sub-agent MEMORY auto-
append commit scope `[CLAUDE] Memory:` separate từ substantive scope.
Implementer MEMORY truncated giữa update Pattern 12-bis lookup (Plan B
Task 3 scaffold) — em main append proxy entry sau (defer).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 18:17:15 +07:00
540098347d
[CLAUDE] Memory: S32 wrap — 4 sub-agent MEMORY append S32 wrap entry (em main proxy)
...
4 sub-agent MEMORY append S32 wrap entry FIFO top:
- Investigator (20.6KB): S32 startup verify spawn + NamGroup audit pre-flight hit
limit + em main solo audit fallback findings + Plan G 11 module DOCUMENTED.
Pending S33 spawn: Plan G-H1 NamGroup TblNhanVien* audit (priority high).
- Implementer (29.2KB): S32 startup verify spawn + em main proxy curate 5
entries S25-S29 -> q2. Patterns 1-19+12-bis+16-bis foundation preserved.
Pending S33 spawn: Plan G-H1 6-entity scaffold + Plan B-Wrap BW1-BW7 codegen
+ Plan G-O2 BookingCalendar + Plan G-O3-O6 workflow apps mirror PE V2.
- Reviewer (26.5KB): S32 startup verify spawn (self-curated S27 retro dropped).
Smart Friend 4x cumulative preserved. Pending S33 spawn: Plan B-Wrap test
bundle adversarial review + Plan G-H1 Mig 34 schema pre-commit + Phase 9 UAT
hard blocker security audit.
- CICD Monitor (26KB): S32 startup verify spawn + Run #231 PARTIAL detail
archived q2. No new Run S32 (5 commits docs-only CI skip). 3 prod endpoint
smoke 200 OK preserved. cert notAfter 2026-07-23 verified. Pending S33
spawn: Phase 10.1 G-H1 first code commit Run verify + Plan B-Wrap test
count delta + V2 contract create flow UAT smoke.
Re-ingest stats: 166 files -> 2991 chunks (+3 delta S32 wrap content). Cache
hit 11.4s vs initial 75.7s = 6.6x speedup post Plan A2.
RAG eval v1.1 verify: recall@5=1.000 (11/11) PASS, avg_rerank ~0.84 preserves
S31 baseline. Negatives q12-q14 correctly excluded (rerank 0.40-0.43 < 0.7).
Refs: docs/STATUS.md S32 wrap. docs/HANDOFF.md S32. migration-todos.md
§Phase 10 + §D-Bis + §A + §E.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 16:49:28 +07:00
cce096309f
[CLAUDE] Docs+Memory: S32 Phase 9 stabilize batch — Plan A3 MEMORY curate 3 agents + Plan B-Wrap spec BW1-BW7 defer + Plan C1 ops status update
...
Phase 9 stabilize sequential batch S32:
- Plan A2 DONE: RAG re-ingest 166 files / 2988 chunks / 75.7s. Verify gotcha #52
query rerank 0.906 (was 0.516 < 0.7 threshold). Phase 10 backlog query rerank 0.758
semantic match good.
- Plan A3 DONE: MEMORY curate 3 agents OVER 25KB threshold. Implementer 38.4 -> 27.5KB
(5 verbose S25-S29 entries archived q2 - Patterns 1-19 + 12-bis + 16-bis foundation
preserved). Investigator 27.7 -> 19KB (4 verbose S25-S26-S29 entries archived q2).
CICD Monitor 27 -> 24.2KB (Run #231 PARTIAL detail archived q2 - S29 wrap summary
preserves key findings). Reviewer 24.39KB unchanged (self-curated S32 startup).
Total 117.9 -> 95.7KB (-22KB ~18%).
- Plan B-Wrap spec BW1-BW7 documented detailed (migration-todos D-Bis section):
BW1 happy path step advance + BW2 terminal gen ma HD + BW3 skipToFinal F2 admin
opt-in + BW4 ForbiddenException + BW5 ApplicableType=Contract validation (Reviewer
S29 MAJOR catch) + BW6 Mig 32+33 schema persistence UNIQUE composite + BW7 V1
fallback ConflictException. Defer dedicated session ~2h chot anh main S32 (test
infra IChangelogService + IContractCodeGenerator mocks first-time).
- Plan C1 ops status update: backup-sql.ps1 ready (register Task Scheduler manual cmd
documented). win-acme cert api.solutions.com.vn notAfter=2026-07-23 (auto-renew
~2026-06-23 NOT 2026-06-18 stale STATUS.md note). SMTP + Rotate creds BLOCKED chờ
anh main coordinate.
Refs: docs/STATUS.md S31 wrap. docs/HANDOFF.md S31. gotcha #52 qdrant-client search
removed (RAG layer stable post-S31 fix + S32 re-ingest gotchas hit). gotcha #51
INFRASTRUCTURE vs DEMO seed (Phase 10.3 enum extend caution).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 16:36:14 +07:00
b832f43d8e
[CLAUDE] Docs+Memory: S32 Phase 10 backlog Plan G NamGroup port + 4 sub-agent startup entries
...
migration-todos.md: insert Phase 10 detail section (10 Plan G-* atomic per-module sprint
~3 thang T6-T8/2026 target, aggressive multi-agent parallel ROI ~70%). 4 quyet dinh anh
chot S32: FULL 11 module scope + single schema dbo mo rong Mig 34-42 + reuse Workflow
V2 extend ApplicableType +5 values + chunk per-module Plan rieng. Sequence Phase 9
stabilize first per anh main "tuan tu theo ke hoach tot nhat". G-P1 pure web GPS
check-in (no device). G-H2 seed reference NamGroup demo data.
4 MEMORY sub-agent: append S32 startup entry (Investigator + Implementer + Reviewer +
CICD Monitor) ghi nhan S31 RAG retrieval.py fix + S29 Plan CA+B deploy + Pending tasks
anh main co the SendMessage reuse. Implementer 36.2KB OVER 25KB threshold FLAG curate.
Refs: docs/CLAUDE.md Phase 6-9 done. docs/STATUS.md S31 wrap. gotcha #51 INFRASTRUCTURE
vs DEMO seed gate (Phase 10.3 enum extend caution). gotcha #52 qdrant.search removed
(RAG layer stable post-S31 fix).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-26 16:17:36 +07:00
e199603420
[CLAUDE] Docs+Memory: Session 29 FINAL wrap — Plan CA + Plan B Contract V2 cumulative
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m31s
20 commits S29 push 4 CI Runs PASS (#229+#230 Plan CA, #231+#232 Plan B).
2 big plans END-TO-END deployed prod.
Changes (docs + memory + scripts — CI skip per paths-ignore):
docs/:
- STATUS.md: S29 FINAL wrap header với cumulative summary 20 commits +
multi-agent ROI ~565K + 8 patterns NEW + state stats (33 mig, 60 tables,
51 gotcha, 14 AppRoles, 34 active users, 4× bundle rotate)
- HANDOFF.md: S29 FINAL wrap header với end-to-end V2 capability + pending S30+
follow-up (anh restart CLI MCP RAG hot-reload, UAT verify V2, test bundle
Plan B, curate dedicated session)
- gotchas.md: +gotcha #51 INFRASTRUCTURE vs DEMO seed phân biệt (Plan B
Hotfix CICD lesson) với decision tree + seed classification table
- changelog/sessions/2026-05-22-s29-plan-ca-plan-b-contract-v2-wire.md:
Session log đầy đủ 20 commits + 4× Smart Friend pattern proven + 8
patterns NEW + file-touched list + NEW capability end-to-end test plan
.claude/agent-memory/:
- 4 MEMORY.md flush S29 wrap entry FIFO each agent perspective:
- Investigator (25.2 KB just over threshold) — Plan CA + Plan B pre-flight
2 spawn + 3 patterns NEW (terrain map, V1+V2 coexist, reference templates)
- Implementer (35.4 KB over hard threshold, defer curate S30) — 5 spawn
cookie-cutter + E3 stopped + Pattern 12-bis NEW (cross-module entity mirror)
- Reviewer (23.0 KB compacted) — 4 spawn 2 MAJOR catches + Cat 3 security
cross-module validation foundation reinforced
- CICD Monitor (24.9 KB) — 4 Runs verify + CRITICAL DemoSeed gate catch +
Stage 4.6 sqlcmd seed verify foundation + Discovery #6 gotcha #51 cross-ref
- implementer/pattern_master_page_mirror.md (NEW Plan CA Chunk B Pattern 16-bis)
scripts/:
- plan-ca-{verify-menu,verify-perms,run-perms}.{sql,ps1} (5 verify scripts)
- plan-b-{verify-prod,run-verify}.{sql,ps1} (2 verify scripts)
Smart Friend pattern proven 4× cumulative S22 #44 + S25 #48 + S29 Reviewer
#ApplicableType + S29 CICD #DemoSeed.
Pending S30+:
- Anh restart CLI hot-reload MCP RAG cho 4 sub-agents (commit b51fc94 )
- Anh UAT verify V2 contract end-to-end (Drafter → CCM approve → DaPhatHanh)
- Test bundle Plan B (regression ApproveV2Async + ApplicableType validation)
- Curate dedicated session 4 MEMORY (Implementer 35.4 KB priority)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 13:29:49 +07:00
6eec8d78fb
[CLAUDE] Docs+Memory: Plan CA wrap — gotcha #50 + Implementer Pattern 16-bis + STATUS
...
docs/gotchas.md:
- Add gotcha #50 "Page move cross-app Layout.tsx resolvePath staticMap missed mirror → silent sidebar drop"
- Reference Hotfix 1 commit e55d96b + Implementer Chunk B 06a441c missed point 4
- Add checklist item 25 vào "Checklist debug bug mới" section
.claude/agent-memory/implementer/MEMORY.md:
- Add Pattern 16-bis "4-place mirror checklist khi cookie-cutter copy page CROSS-APP"
- 4 places: page + Routes + menuKeys.ts + Layout.tsx staticMap
- Bug latency observed lesson + REFUSE criteria note + Reviewer Cat 1 wire claim verify suggestion
docs/STATUS.md:
- New Last updated S29 header với Plan CA cumulative summary
- 7 commits chain + 2 CI runs PASS + bundle hash rotate + multi-agent ROI breakdown
- Stats updated: 50 gotcha (+1), 13 AppRoles (+1 CatalogManager), 34 active users (+catalog.manager), 36 FE pages (+4)
Docs-only commit → CI skip per paths-ignore (gotcha #41 + #47 confirmed).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 11:45:41 +07:00
bf93abd467
[CLAUDE] Docs: Session 26 chốt cuối — 6 Plan AG series PE tree view + Plan AI RAG global MCP setup
...
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m39s
Update:
- docs/STATUS.md: Last updated S26 cumulative wrap
- docs/HANDOFF.md: TL;DR S26 chốt cuối với 3 pattern reusable NEW
- docs/changelog/sessions/2026-05-21-s26-pe-tree-view-rag-setup.md: NEW session log đầy đủ
- docs/guides/multi-agent-setup-guide.md: NEW ~750 lines onboarding 4 dự án future
- .claude/agent-memory/*/MEMORY.md: 4 agent flush S26 entries
- .claude/rag.json: NEW project config cho RAG bootstrap
Plans done S26:
- Plan AG/AG2/AG3/AG4/AG5/AG6 — 6 commits 0bf6c7e..d99069a PE List tree view UI iteration
- Plan AI Phase 0-4 — RAG global MCP setup (Voyage-4-large + Qdrant Windows native binary v1.18.0 NO Docker + FastMCP 3.3.1 stdio + SQLite FTS5 BM25 + RRF k=60 + Anthropic Contextual Retrieval prepend)
- SOLUTION_ERP bootstrap: 126 files → 2,392 chunks indexed 60.9s (~484K Voyage tokens = 0.24% free tier 200M/month)
Multi-agent ROI S26: 5 spawn (Inv 2 audit 5Q + RAG distribution research 4 study cases + Imp 1 Case 2 + Rev 1 pre-commit + CICD 1 Run #222 ) ~123K + em main solo Plan AG2-AG6 polish + Plan AI Phase 0-4 ~280K = ~28% solo equivalent.
3 patterns reusable cross-project NEW S26:
1. Pattern 19 Implementer — HTML native <details>/<summary> + Tailwind named groups (group/proj+year+sup) + localStorage Set<string> cho hierarchical 3-level tree UI when no Accordion lib
2. RAG User-level Global MCP — 1 server localhost serve N project + per-project .claude/rag.json (Approach A — 1 dev solo scenario, không phải team VPS)
3. Qdrant Windows native binary deployment — no Docker overhead, qdrant-x86_64-pc-windows-msvc.zip 28.3MB chính thức GitHub release
Pending S27+:
- Memory CURATE 4 agent (cicd-monitor 74KB OVER 50KB hard threshold URGENT)
- Plan AI Phase 5 bootstrap 4 project còn lại (NamGroup/DH Y Dược/Ashico/Vipix)
- Plan AI Phase 6 file watcher + Windows Task Scheduler
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 02:27:36 +07:00