Commit Graph

992 Commits

Author SHA1 Message Date
d79ddaf511 wal: flush 20260729T0925 2026-07-29 09:25:15 +07:00
92ed688806 wal: flush 20260729T0914 2026-07-29 09:14:28 +07:00
3ea25e5c38 wal: flush 20260729T0903 2026-07-29 09:03:05 +07:00
c9e87d05ef wal: flush 20260729T0858 2026-07-29 08:58:23 +07:00
bbc39be3ab [CLAUDE] Docs: S158 - harness-audit on-behalf + va seed ctx-verifier khong dat duoi heading
harness-audit (trio nac 3/3) `#53` CA HAI luot => 0 verdict-tong, 0 END-TOTAL.
Dia cuu 11.182 B. Lead ghi on-behalf (path-3) SAU khi verify tu dia, KHONG bia
verdict-tong - khai thang "dung ai trich mot con so tong cho luot nay".

Doc duoc tu dia:
- BAC 9/9 cua con-DE-XUAT DAT, 0 ca "bac cho gon", tung cai neo dia.
- B2 manh hon loi khai: vai CHAY THAT memory-archive-gate.ps1 roi do mtime
  truoc/sau .archive-strikes.json => y het byte VA y het nano-giay => DRY-RUN
  khong ghi, HELD bang thuc-nghiem. Nguoc lai S16 cua con-DO TRUOT o ve meta:
  no khai "khong phan giai duoc (cam re-run)" nhung ca 4 ve deu phan giai duoc
  KHONG can re-run => bo cuoc som, tu ap rang buoc khong ton tai.
- B8: `grep -c pull_warn_days` ra 1 hit nhung parse JSON cho thay KHONG co key -
  hit duy nhat la van xuoi trong `_note`. Reader song that => ghost-wire class-2
  XAC NHAN, S12 cua con-DO DAT.
- Vai TU dinh phai mot bay do-luong: dem `grep -c '^#'` suyt to con-DE-XUAT khai
  sai "0 heading"; doc lai thuoc that (`^#{2,3}\s`, khong tinh h1) => con-DE-XUAT
  DUNG, cai sai la cay thuoc cua vai.

VA LOI CUA CHINH LEAD (vai bat):
Seed M9 vao ctx-verifier/MEMORY.md luc 20:45 dat dang bullet `-` chu khong duoi
heading `##` => parser memory-archive-gate.ps1:153 (`^#{2,3}\s`) van doc entries=0
=> "cannot auto-drain" van nguyen. VET-SUA KHONG PHAI VET-DO.
Da doi sang heading `##` => do lai entries 0 -> 1. E3 vi the duoc chung MANH HON
chu khong phai bi dong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 20:57:15 +07:00
cd731a1474 wal: flush 20260728T2054 2026-07-28 20:54:44 +07:00
4169e1424d [CLAUDE] Docs: S158 - dong bang phien-LOGIC L7 (_end) + reset WAL
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m32s
§6.3-bis: ghi _end cho session-7 (FROZEN, ghi mot lan). markers _pause=4 ·
_tiep=4 · _snapshot=3 · mind-blocks=5. closed-check `mind-check --session 7`
chay SAU khi ghi _end => mode=closed, TAT CA phep DAT, cross-check tu-khai khop.

5 khai-thang trong _end (dong IM LANG la duong te nhat vi mind-check van in `dat`):
1. mind-blocks=5 do bang `grep -cE '^## MIND-[0-9]+'`. Dung `grep -c '^## MIND-'`
   ra 6 vi bat ca placeholder `## MIND-<k>` trong BLOCK-SCHEMA. Truong BAT BIEN
   => suyt dong bang mot con so sai vinh vien.
2. _snapshot=3 vs _pause=4: PAUSE-4 THIEU vet auto-snapshot (chua tung sinh,
   khong phai bi xoa) => MIND-4 chi duoc 1/2 luoi secrets-sweep phu.
3. Dong-song muc E THUNG tron window-5: session-end khong co buoc refresh _mind
   @close, va tran 92,48% chan MIND-5 (du 2.463 B < 6.536 B can). LO CAU-TRUC,
   tai moi phien-logic (ctx-audit FLAG-3 HIGH).
4. Moi-ngam DA ROI - cham duoc bang grep NOI DUNG. Defect goc VAN CHUA VA:
   session-start.md:285 + session-end.md:159 con dung `git status --short` lam
   post-wave assertion (mu 4 path hook); guard mu do vua chay 2 lan trong phien nay.
5. harness-audit chua tra verdict luc dong so (#53 con thu 8, da resume).

§6.4: reset WAL ve template rong + xoa sentinel `closing:` (acceptance: 0 hit).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 20:53:14 +07:00
33e7f68890 [CLAUDE] Docs: S158 closeout - adap /day probe-first (nac agreed) + bookend-close 5 vong
Some checks failed
Deploy SOLUTION_ERP / build-deploy (push) Has been cancelled
Phien-LOGIC L7 window 5, vao bang /tiep. Governance/adap-only: 0 prod-code,
0 migration, 0 test moi. Test do tuoi 562 PASS (45D+517I). Counter 31->32.

VIEC
- /tiep recovery tron: San-3 5 tin-hieu MANH deu keu DUNG (corroborate WAL),
  verify: 5/5 PASS 0 lech, bien-nhan _tiep-4.md (window-ordinal 5).
- /check-email AI_INFRA: verify bang NOI DUNG - 22/22 file outbox/se co trong
  inbox, cmp 0 byte-drift => se=0 that + khong co stamp-then-edit (H18).
- /adap-apply day-wake-probe-first qua /fable-real investigator-codebase:
  nac AGREED (0 file co-che bi sua). Spec 3-muc + adap-report + 4 phan-bien
  gui nguoc hub + 1 datum dogfood (hub tu khai co 0).
  Engine BAC 2 tien-de cua lead: mo-coi 0/8 (khong phai "co squash => co mo-coi")
  va probe PHAI dung phep-2 - chung bang cua S158 noi 2 phep cho verdict NGUOC NHAU.
- Ra 6 HIGH lens-wave spec KHKK: 4 phu tron, 2 con ho (H5 W3 N chua pin =>
  N=0 van PASS; H6 §2.4:224 giu co-che IsVisible da bi chinh file do do-dia bac).
- Bookend-close 10 spawn / 5 vong. V4 nen-ngu KHONG-NHIP (shard 15/15 => IM).

VA TRONG PHIEN
- STATUS:459 RAG khai "alive" -> lat DOWN (3 phep do doc-lap: chunk_count=0
  cho ca 7 project + shared_global; canonical tu mau thuan voi :473 cach 14 dong,
  song 5 nhan phien).
- STATUS:461 bundle hash prod da chet -> 8-QYcMOg/DptYR4wL (control-am 900/876 B).
  Hai that: cicd-verify:58 dung chinh o nay lam baseline.
- STATUS:6 4->5 cua-so, counter 31->32; M-1 nhet lai nguyen van owner
  "da xong buoc thu 6 tuc CEO duyet" (ring2: grep = 0/STATUS + 0/HANDOFF).
- WAL:5 + WAL:21 tick; HANDOFF segment S155->S158 + slot (42)...(48).
- GATE 5-ANCHOR di-tru khoi WAL sang HANDOFF NEXT-em TRUOC khi §6.4 reset xoa no
  (lead-gap FLAG-4, han chot = cua ke).
- ef-core-migration SKILL: va CAU TRUC (frontmatter thoi khai bang la nguon
  "moi nhat") thay vi them row - ring1: day la lan 3 cung class.
- contract-workflow:371 "Contract V2 chua" SAI ~2,3 thang -> dinh chinh
  (ring1 thach-CLEAN thung H1).
- C12: +3 dong run= hoi-to S155/S156/S157. 2 orphan run-folder -> synthesis dang-1.
- M9 seed on-behalf 3 diary: ctx-verifier, investigator-codebase, ctx-audit.

#53 x8 - DOI-CHUNG NOI-PHIEN SACH DAU TIEN
Ep-ghi-dia KHONG giam garble (3/3 vai bi ep van garble) nhung dua thiet-hai ve 0
(2.818/5.354/7.957 B nam san); 4 vai khong ep MAT TRANG phai resume.
=> chong #53 = thiet-ke ARTIFACT, khong phai PROMPT (xac nhan lan 5).
So #53 ghi bu sau 5 nhan phien dung yen: 66 can-duoi qua S158.
+2 sub-class moi: skeleton-ruot-rong nac-2 (byte>0 ma ruot rong) va
engine-process-exit (0 delta dia).

BAY CHAN DUOC
Moi-ngam neo bang SO DONG trong file append-o-TREN da nen 3 lan. Dong 99 hom nay
la van-de MO THAT (luat nen ho) => spawn ctx-audit ma khong xu = hoac DAT-ao,
hoac dan nhan "bay cai san" len dung cau dang trinh owner. Lead khoi phuc tu git,
pin bang NOI DUNG. ring2 chung them: neo SAI NGAY TAI COMMIT SINH RA NO
(stale-at-birth), khong phai troi-do-nen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 20:50:58 +07:00
d7eaeceaa7 [CLAUDE] Docs: spec "Ke hoach ky ket Hop dong" S157 (khuc con thieu PE -> HD) + review 4 lang kinh
Anh giao: dieu tra quy trinh CON THIEU giua Duyet NCC va HD NTP/NCC, ra spec day
du + chia wave. Chay /fable-real invest (Fable deep-pass) roi /fable-clone
reviewer 4 lang kinh.

PHAT HIEN NEN (lead do, invest + reviewer xac nhan tu nguon goc):
- 7 phase [LEGACY] cua ContractPhase CHINH LA quy trinh ISO 9 buoc ma-hoa cung
  (khop 1:1 dung thu tu). Khung V2 sinh ra de bieu dien chinh quy trinh do.
- Khoang trong nam DUNG giua ISO-1 va ISO-2, va ISO doc CUNG KHONG CO no
  => thieu o CA HAI tang (doc + code) => spec vua la spec phan mem vua la de
  xuat bo sung ISO.

OWNER CHOT trong cua: (O-1) cau truc trinh ky GIONG, chi khac NOI DUNG => tai
dung khung duyet V2, 0 bang approval moi => truc tranh luan Q2 hom qua DONG.
(O-2) SLA chi tham khao => khong SLA-engine, khong wave SLA.
(O-3) "cho hop dong cu tu tu" => lo hong an ninh HD NGOAI SCOPE.

REVIEW 4/4 lane sach 0 chet (dong goi C2 an), 112 diem. Claim nen DUNG VUNG.
Bat 7 loi NANG, da va het trong ban nay:
1. Ten menu key `Csp*` != tien to policy `ContractSigningPlans.*` => Program.cs
   khong sinh policy => HTTP 500 luc chay. Repo DA CO test bat
   (AuthorizePolicyRegressionTests.cs:138-139). Day la loi TU-VAP-BAY-MINH-VUA-
   NHAN-DIEN: §2.4 bat dung bay Pe_* roi §2.3 van vap bang co che khac.
2. W2 day rieng tao duoc 0 phieu (wiring Designer type-10 roi khoi moi wave)
   => keo vao W1, tai pham dung §F.0 S155.
3. Thieu bang Approvals ma service duoc lenh copy CO ghi vao.
4. Changelogs thieu 4 cot => copy service khong bien dich.
5. Thieu 3 site ApprovalWorkflowV2AdminFeatures => FK Restrict no 500.
6. Status enum bat dau tu 0 => bay falsy JS.
7. 4 anchor lech, nang nhat ApprovalWorkflowLevel.cs KHONG TON TAI.

Kem: bo tieu chi dark-launch sai co che (IsVisible chi pass-through, filter la
CanRead) - thay "sqlcmd dem policy" (khong do duoc, policy in-memory) bang test
regression - OR-of-N nang tu 1 ve len 4 ve co ca am - cat CodeSequences (tai
dung WorkflowAppCodeSequence dung chung 4 module Office).

Su co #53: invest luot 1 skeleton-ruot-rong (202K tok, dia 1.661B khung rong)
=> ghi-dia-trong-luc-lam la CAN KHONG DU, phai verify RUOT. Luot 2 resume cat
con 2 muc => CLEAN 23.085B. Luot 3 tien-trinh CLI thoat, §C/§D chua ghi => lead
tu viet theo H21 (engine propose-only, spec do lead ghi).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 11:30:03 +07:00
1d6d7b9df3 wal: flush 20260728T1112 2026-07-28 11:12:16 +07:00
f086698e8e wal: flush 20260728T1058 2026-07-28 10:58:47 +07:00
5507262753 wal: flush 20260728T1045 2026-07-28 10:45:53 +07:00
659d2880b7 wal: flush 20260728T1040 2026-07-28 10:40:22 +07:00
3b6fabc085 [CLAUDE] Docs: dong no so sach S155-S157 (CURRENT line + In Progress + session log + memory)
Dong CURRENT dung yen o S153 qua 3 cua-so trong khi S155/S156/S157 da chay va
da ship prod => drift dung lop ma lead-stale-auditor sinh ra de bat. Va:

- CURRENT line moi S155->S157 (phien-LOGIC L7, 4 cua-so): PE nut XOA ship prod
  Mig 68 2 dot + A2 dieu tra quy trinh sau-CEO (verdict LAI, chan Q1-Q6) +
  lo hong an ninh HD (anh chot 07-28 "cu tu tu" = treo CO CHU DICH) + S157 UAT
  Dia diem. S153 ha xuong muc da xong.
- Them §In Progress (S155->S157); §In Progress (S117) cu giu nguyen ben duoi.
- Session log 10.700B — con-tro tu dong CURRENT nay GIAI DUOC (verify 1 hit).
- Memory moi: lop "co-che dung, du-lieu khong co" nay x6 (S157 la lan 6, chieu
  MOI: bug do NGUOI DUNG bao ma fix ngay-tho se nhan doi code da dung). Luat rut
  ra: UAT bao "khong chay" => DO DU LIEU PROD truoc, dung doc/viet code.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 10:00:24 +07:00
9649fc71ce wal: flush 20260728T0953 2026-07-28 09:53:29 +07:00
894f835fe3 wal: flush 20260728T0941 2026-07-28 09:41:30 +07:00
a52a91e711 [CLAUDE] Docs: tick counter S157 + bump header CURRENT STATE moc S153->S156
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m40s
Vao bang /tiep (phien-LOGIC L7 window 4). Tick counter 30->31 CLEAN
(session-counter-tick.ps1 M2, last_ticked_head reachable, khong squash-benign).
STATUS header CURRENT STATE con ghi "moc gan nhat S153" trong khi row Migrations
da 68 + row Tests da 562 (bump @S156) => vi pham chinh luat viet trong header do
("bump theo lan re-ground gia-tri moi nhat"). Co C3 cua ctx-verifier @tiep-3.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 09:32:59 +07:00
6250f39c52 [CLAUDE] PurchaseEvaluation: hien ly do o Dia diem trong khi du an chua co Location
UAT anh Kiet FDC 07-28 "cho nay lay dia chi len luon giup anh". Do lai: co-che
auto-fill Dia diem tu Project.Location DA WIRE tu S59 va van chay dung (BE
ProjectFeatures.cs:51 project Location -> FE types master.ts:97 -> onChange
SearchableSelect). O trong vi DU AN THIEU DU LIEU: prod 57/62 du an co
Location NULL, gom ca BVN01 trong anh chup. Chi 5 du an co dia chi (CAL01,
MIDEA01, SAM01, TLB01, ZOTE01) - dung 5 dong co dia chi trong Excel S55.

=> Khong sua co-che (khong hong). Them dong canh bao amber khi da chon du an
ma du an do khong co Location: noi thang ly do + tro cho bo sung (Danh muc Du
an -> Dia diem), thay vi de o trong im lang trong nhu he thong hong.

4 file, SHA256 mirror fe-user/fe-admin giu IDENTICAL. npm build 2/2 PASS.
Backfill 57 dia chi con lai = can du lieu tu anh/FDC.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 09:32:33 +07:00
877236f266 wal: flush 20260728T0828 2026-07-28 08:28:26 +07:00
73166c5716 wal: pause 2026-07-27 17:29:19 +07:00
b804d963b9 wal: flush 20260727T1702 2026-07-27 17:02:17 +07:00
1512a5e663 wal: flush 20260727T1700 2026-07-27 17:00:32 +07:00
9f931dbc1e wal: flush 20260727T1644 2026-07-27 16:44:36 +07:00
95a529c307 wal: flush 20260727T1632 2026-07-27 16:32:48 +07:00
f89548d5af wal: flush 20260727T1623 2026-07-27 16:23:46 +07:00
aa5da2c872 wal: flush 20260727T1601 2026-07-27 16:01:52 +07:00
cc5a6e3d85 wal: flush 20260727T1551 2026-07-27 15:51:05 +07:00
054ba022e4 wal: flush 20260727T1537 2026-07-27 15:37:14 +07:00
76488e88d7 wal: flush 20260727T1437 2026-07-27 14:37:40 +07:00
f4494cfefb [CLAUDE] FE-User: fix menu sang nham — click "Danh sach" lai highlight "Da duyet"
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m41s
Bug UAT anh bao 2026-07-27 (anh chup man hinh): bam muc "Danh sach" thi menu lai
to sang muc "Da duyet".

Goc: `phase` vua la BO LOC trang thai tren trang danh sach (nen nam trong
TRANSIENT_QUERY_KEYS tu fix 2026-05-08 — de user loc/chon dong khong mat highlight),
vua VUA-MOI tro thanh DANH TINH dieu huong cua muc "Da duyet" (`?type=N&phase=7`,
dot 2 hom nay). `queryMatches` strip `phase` khoi CA HAI ve => "Danh sach" ([type])
va "Da duyet" ([type] sau khi mat phase) thanh KHONG PHAN BIET DUOC => URL `?type=1`
khop ca hai, muc render sau thang phan hien thi.

Cung mot tham so khong the vua la thu-bi-bo-qua vua la thu-dinh-danh.

2 sua, ca 2 app (Layout khong phai file mirror byte-identical nen sua rieng tung ben):
- `queryMatches`: transient chi duoc bo qua khi MENU DICH KHONG tu ghim key do
  (dich ghim => so khop NGHIEM; khong ghim => giu hanh vi cu).
- Route "Da duyet" them `&view=approved` = khoa DINH DANH rieng (trang bo qua no,
  chi `phase=7` loc that). Can thiet vi URL muc "Da duyet" TRUNG HET URL ma user tu
  loc trang thai tren Danh sach => khong the phan biet bang URL neu thieu khoa nay.

Kiem 4 ca duong di (khong chi ca anh bao):
  ?type=1                        -> Danh sach SANG, Da duyet TAT
  ?type=1&phase=7&view=approved  -> Da duyet SANG, Danh sach TAT
  ?type=1&phase=7 (user tu loc)  -> Danh sach VAN SANG (giu fix 2026-05-08)
  ?type=1&deleted=1              -> Da xoa SANG, con lai TAT

tsc 0 loi x2 · npm build PASS x2.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 14:36:46 +07:00
fc064bea94 wal: pause 2026-07-27 14:25:22 +07:00
976945ce67 wal: pause 2026-07-27 14:18:06 +07:00
9ed65f4a3b wal: flush 20260727T1408 2026-07-27 14:08:03 +07:00
4464a464c5 [CLAUDE] PurchaseEvaluation: nut XOA phieu o man duyet + menu 3 muc + man "Da xoa" (dot 2)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m47s
Dong ca UAT goc (Tra Sol): "lo bam sai cai goi thau, quay lai khong duoc, phai
xoa thi no moi ko co luy ke len". Dot 1 (b1bae77) da dung NEN (co F6 + lenh sua
quy trinh tai cho); dot 2 la phan nguoi dung cham vao.

- App: PeSoftDeleteFeatures.cs MOI
  - DELETE /api/purchase-evaluations/{id}/by-approver — 3 rao: phase ChoDuyet
    ^ dung luot actor ^ matchingLevel.AllowApproverDelete (PER-NGUOI, khong g.Any)
  - GET /api/purchase-evaluations/deleted — IgnoreQueryFilters() KEM .Where(IsDeleted)
    (IgnoreQueryFilters GO filter chu khong DAO — thieu Where la liet ke ca phieu song)
    + tai lap khoi IDOR cua list hien hanh
  - ghi vet ChangelogAction.Delete + ly do
- Api: 2 endpoint moi. 🔴 by-approver CO Y KHONG co [Authorize(Policy)] — do tren DB:
  moi vai dang lam nguoi duyet (Procurement/CostControl...) deu CanDelete=0 va khong
  seeder nao nang co do => gan policy la 403 voi dung nguoi can dung, ma FE gate cung
  quyen nen khong thay nut khong thay loi (gotcha #44). Quyen = 3 rao handler; co F6
  la admin tick dich danh tung nguoi => chat hon quyen theo vai.
- Dto: ApprovalWorkflowOptionsDto + AllowApproverDelete. Thieu field nay thi FE gate
  luon sai => nut KHONG BAO GIO hien, ma BE lan FE deu build sach (reviewer bat).
- Domain/Infra: 2 menu key Pe_{code}_Approved / _Deleted (KHONG vao MenuKeys.All =>
  giu 54/216) + seed tree + labelBackfill "Duyet" -> "Dang duyet" + 2 danh sach permission
- FE x2 app: nut Xoa trong PeWorkflowPanel (md5 mirror khop) + dialog ly do + Layout
  regex/route cho 2 muc moi + man "Da xoa" chi-xem
- Tests: +11 (562 tong, 0 fail). T27 khoa CA LOP loi entity-co-co-ma-DTO-khong-co
  (fault-inject xac nhan: go field ra => T27 do ngay)

Review: 12 FLAG, chot chan H1 (DTO thieu field) da va. Deploy KHONG co migration
nhung CO seed menu => phai restart API.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 14:06:14 +07:00
0aa8557650 wal: flush 20260727T1350 2026-07-27 13:50:59 +07:00
d21b554f29 wal: flush 20260727T1330 2026-07-27 13:30:58 +07:00
a21482ecd7 wal: flush 20260727T1319 2026-07-27 13:19:26 +07:00
e895b9aceb wal: flush 20260727T1312 2026-07-27 13:12:40 +07:00
ad932b1211 wal: flush 20260727T1300 2026-07-27 13:00:00 +07:00
3ec2f116a2 wal: flush 20260727T1250 2026-07-27 12:50:05 +07:00
dfbaeb1e76 wal: flush 20260727T1238 2026-07-27 12:38:45 +07:00
b1bae77c9c [CLAUDE] Workflow: sua quy trinh duyet TAI CHO + co F6 AllowApproverDelete (dot 1)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m31s
Nen cho tinh nang "xoa phieu PE o man duyet" (UAT: phieu bam sai goi thau dang
an luy ke). Dot 1 lam NEN, dot 2 moi lam nut xoa.

Vi sao phai lam nen truoc: phieu dang chay pin ApprovalWorkflowId va doc workflow
SONG theo Id do. Moi POST tao workflow moi = Id MOI, nen tick co tren ban moi
KHONG BAO GIO toi duoc phieu dang treo. Phai co lenh sua-tai-cho giu nguyen Id.

- Domain: ApprovalWorkflowLevel + AllowApproverDelete (F6, per-NGUOI) + Mig
  20260727033522_AddPeAllowApproverDelete (AddColumn bit default false, no new table)
- Application: UpdateAwDefinitionCommand + Validator + Handler
  - 2 phep thu: (T1) khung khong doi - Order tung row bat bien
                (T2) luat choi khong doi - cam CeoApprovalThreshold, AllowApproverFinalize,
                     Code, ApplicableType => 409 bao tao ban moi
  - diff theo Level.Id (CAM delete-then-insert: no FK Restrict + mo coi LevelOpinion)
  - guard 2 tang chu ky: tang 1 chu ky tren ho so CON SONG; tang 2 chu ky CON LUU
    (cha xoa mem hoac opinion xoa mem) - ca hai deu CHAN, khong xoa cung
  - purge chi khi ho so cha KHONG CON ROW; boc transaction (ExecuteDelete tu commit)
  - KHONG tang Version, KHONG dung IsActive, KHONG doi Id
- Api: PUT /api/approval-workflows-v2/{id} + [Authorize(Policy="Workflows.Create")]
- Infra: message 403 in TEN NGUOI thay GUID tran
- FE: Designer tach "Sua tai cho" (PUT) vs "Tao phien ban moi" (POST) + o tick F6
- Tests: +21 (551 tong, 0 fail) - gom F12 chung minh phieu dang chay nhan thay doi ngay

Review: 14 FLAG, 3 HIGH da va (ExecuteDelete ngoai transaction / purge xoa cung
chu ky phieu xoa mem / endpoint khong co day FE goi toi).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 12:36:59 +07:00
d745fec445 wal: flush 20260727T1224 2026-07-27 12:24:07 +07:00
e48a6c5068 wal: flush 20260727T1211 2026-07-27 12:11:59 +07:00
bc17dba547 wal: flush 20260727T1155 2026-07-27 11:55:41 +07:00
59e2cc0e43 wal: flush 20260727T1135 2026-07-27 11:35:45 +07:00
acc6c6ccc1 wal: flush 20260727T1126 2026-07-27 11:26:00 +07:00
1aeb94d9b1 wal: flush 20260727T1108 2026-07-27 11:08:33 +07:00
9c0ac6884d wal: flush 20260727T1050 2026-07-27 10:50:36 +07:00
8c5b3717df wal: flush 20260727T1030 2026-07-27 10:30:24 +07:00