Commit Graph

922 Commits

Author SHA1 Message Date
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
b0cdd02468 wal: flush 20260727T0959 2026-07-27 09:59:49 +07:00
e981d34fdc wal: flush 20260727T0945 2026-07-27 09:45:33 +07:00
dd674a6d47 wal: flush 20260727T0939 2026-07-27 09:39:31 +07:00
d25e21ba7b wal: flush 20260727T0914 2026-07-27 09:14:17 +07:00
06ab87f67e wal: flush 20260727T0909 2026-07-27 09:09:59 +07:00
0db0c6a3ee wal: flush 20260727T0903 2026-07-27 09:03:41 +07:00
a3a6d66cff wal: flush 20260727T0853 2026-07-27 08:53:42 +07:00
c41af1cf3f wal: flush 20260727T0846 2026-07-27 08:46:29 +07:00
8d4075aa73 wal: pause 2026-07-27 01:01:29 +07:00
5197ce2f1b wal: flush 20260726T1942 2026-07-26 19:42:22 +07:00
b5945a66d4 wal: flush 20260726T1938 2026-07-26 19:38:22 +07:00
82a0457e6f wal: flush 20260726T1928 2026-07-26 19:28:36 +07:00
8776ca8f8a wal: flush 20260726T1912 2026-07-26 19:12:14 +07:00
ed99b04bf7 wal: flush 20260726T1905 2026-07-26 19:05:09 +07:00
976df03460 wal: flush 20260726T1848 2026-07-26 18:48:02 +07:00
76580d7b1f wal: flush 20260726T1842 2026-07-26 18:42:20 +07:00
b44afe460a wal: flush 20260726T1837 2026-07-26 18:37:44 +07:00
a32d75c715 wal: flush 20260726T1831 2026-07-26 18:31:56 +07:00
ab06b09335 wal: flush 20260726T1829 2026-07-26 18:29:03 +07:00
7447d2c4be wal: flush 20260726T1822 2026-07-26 18:22:44 +07:00