wal: pause
This commit is contained in:
@ -32,7 +32,7 @@
|
||||
- [Prod config: inspect-before-change](feedback_prod_config_inspect_before_change.md) — đổi config prod = inspect LIVE trước (runbook STALE); backup→apply→verify-LIVE→commit; replicate mọi rule cũ + delta (S88)
|
||||
- [Wipe durability — check re-seed](feedback_wipe_durability_check_reseed.md) — sau prod-wipe audit seeder: ungated per-code seed RE-ADD mỗi restart; gate sau env-flag + verify-by-restart-THẬT (S91, #75/#76)
|
||||
- [Verify deployed artifact byte-level](feedback_verify_deployed_artifact_byte_level.md) — UAT "fix chưa ăn" sau deploy → curl-grep bundle prod byte-level (cache≠deploy); incognito=golden-test (S96, #77)
|
||||
- [Agent return-garble recover](feedback_agent_return_garble_recover.md) — sub trả wrong-slice-of-transcript thay verdict (#53, **×66-cận-dưới qua S158 — derive-from-body, đếm-cái-chắc** [🔴 **S158 = ĐỐI-CHỨNG NỘI-PHIÊN SẠCH đầu tiên (cùng lead/ngày, khác đúng 1 biến): ép-ghi-đĩa KHÔNG giảm garble (2/2 vẫn garble) nhưng đưa thiệt-hại về 0 B** — 4 vai không-ép mất TOÀN BỘ phải resume, 2 vai có-ép mất 0; ⇒ chống #53 = thiết-kế ARTIFACT không phải PROMPT, xác nhận lần 5 · **+2 sub-class**: `skeleton-nấc-2` (1.661B byte>0 mà ruột toàn heading ⇒ guard "verify byte tăng" KHÔNG bắt được) · `engine-process-exit` (0 delta đĩa = lượt chạy chưa từng tồn tại) · **câu garble CHỨA finding thật, đừng vứt** (ring1/ring2 chết ngay chỗ nghĩ sắc nhất) · S153-S157 CHƯA đếm được — "~27" của lead-gap neo bằng SỐ DÒNG `_mind`, ring2 bác, KHÔNG nhập tally]; [qua-S148 33 · S149 ×5 · S150 ×7/7 · S151 ×5/6 write-boundary · **S152 ×10 (7 @open + 3-chắc @close, 2 UNKNOWN-sau-compact không đếm; ring2-STRICT + trio = 4 CLEAN cùng phiên; MỚI: pin-bản-cắt 4-A — file ghi-từng-finding LUÔN hợp-lệ giữa chừng, lead pin 16.911B/30.195B mất 3 FLAG → đề END+TOTAL-line chờ owner; commit-subject `1b85713` "53"=SAI errata)** — skeleton-rỗng 2-strike → AS-17; `ngược-#53` ×3 lifetime]; S143 ×5 5/5-sub; +path-4 lead-on-behalf; **+sub-class S150 `ngược-#53`/`skeleton-ruột-rỗng` ⇒ ghi-đĩa-trong-lúc-làm = CẦN KHÔNG ĐỦ — verify byte-content**) → recover: **(0) WRITE-lane→disk-truth (git+build+test) · VERIFY-lane→em-main-re-curl+sqlcmd (2-nguồn-khớp)** → (1) diary → (2) SendMessage-resume in-session → (3) em-main solo; garble ∝ reasoning-lane; **WRITE-lane garble≠mất-code** (S114 ×5); cicd tái-phạm dai + tự-dán "CLEAN-return" sai (harvest-curator bắt S118)
|
||||
- [Agent return-garble recover](feedback_agent_return_garble_recover.md) — sub trả wrong-slice-of-transcript thay verdict (#53, **×72-cận-dưới qua S162 [S159-S161 chưa-đếm-được; S163+ sự-kiện ghi, chốt @closeout L9 — ≥2: lead-gap ×2, lần 1 = skeleton-nấc-2 instance #2 1.302B] — derive-from-body, đếm-cái-chắc** [🔴 **S158 = ĐỐI-CHỨNG NỘI-PHIÊN SẠCH đầu tiên (cùng lead/ngày, khác đúng 1 biến): ép-ghi-đĩa KHÔNG giảm garble (2/2 vẫn garble) nhưng đưa thiệt-hại về 0 B** — 4 vai không-ép mất TOÀN BỘ phải resume, 2 vai có-ép mất 0; ⇒ chống #53 = thiết-kế ARTIFACT không phải PROMPT, xác nhận lần 5 · **+2 sub-class**: `skeleton-nấc-2` (1.661B byte>0 mà ruột toàn heading ⇒ guard "verify byte tăng" KHÔNG bắt được) · `engine-process-exit` (0 delta đĩa = lượt chạy chưa từng tồn tại) · **câu garble CHỨA finding thật, đừng vứt** (ring1/ring2 chết ngay chỗ nghĩ sắc nhất) · S153-S157 CHƯA đếm được — "~27" của lead-gap neo bằng SỐ DÒNG `_mind`, ring2 bác, KHÔNG nhập tally]; [qua-S148 33 · S149 ×5 · S150 ×7/7 · S151 ×5/6 write-boundary · **S152 ×10 (7 @open + 3-chắc @close, 2 UNKNOWN-sau-compact không đếm; ring2-STRICT + trio = 4 CLEAN cùng phiên; MỚI: pin-bản-cắt 4-A — file ghi-từng-finding LUÔN hợp-lệ giữa chừng, lead pin 16.911B/30.195B mất 3 FLAG → đề END+TOTAL-line chờ owner; commit-subject `1b85713` "53"=SAI errata)** — skeleton-rỗng 2-strike → AS-17; `ngược-#53` ×3 lifetime]; S143 ×5 5/5-sub; +path-4 lead-on-behalf; **+sub-class S150 `ngược-#53`/`skeleton-ruột-rỗng` ⇒ ghi-đĩa-trong-lúc-làm = CẦN KHÔNG ĐỦ — verify byte-content**) → recover: **(0) WRITE-lane→disk-truth (git+build+test) · VERIFY-lane→em-main-re-curl+sqlcmd (2-nguồn-khớp)** → (1) diary → (2) SendMessage-resume in-session → (3) em-main solo; garble ∝ reasoning-lane; **WRITE-lane garble≠mất-code** (S114 ×5); cicd tái-phạm dai + tự-dán "CLEAN-return" sai (harvest-curator bắt S118)
|
||||
- [H18 ghost-wire + stamp-integrity](feedback_h18_ghostwire_stamp_integrity.md) — hash-verify TRƯỚC khi áp broadcast (bắt stamp-then-edit THẬT → HELD + re-stamp); ghost-wire 2 class (cron-claim CronList=0 · config-key defined-but-unread); KHÔNG stamp run-id chưa chạy (S100)
|
||||
- [Resume premise re-verify](feedback_resume_premise_reverify.md) — re-verify tiền-đề từ ĐĨA trước execute (header+git-date, match NỘI-DUNG KHÔNG tên-file 1:1); **S121: bảng-kế-hoạch ≠ đĩa — "không-ai-được-giao" ≠ "chưa-làm"; khẳng-định trạng-thái-đĩa = phải chạm đĩa 1 lệnh**; +bẫy `grep -c` (dòng) vs `-o|wc -l` (occurrence) trên mega-line; +bẫy Get-Content-no-Encoding no-BOM = ANSI đếm ×2-3 → báo-số-sai-owner, đính-chính-ngay (S130 E-010/AS-14); +acceptance literal tự-lão-hoá (S109/S121)
|
||||
- [Permission grant = 2 layers](feedback_permission_grant_two_layers.md) — cấp/verify quyền = display-layer (menu CanRead) ⟂ API-authz-layer (controller `[Authorize(Policy)]`) 2 tầng ĐỘC-LẬP; grep authz controller đích TRƯỚC khi tin grant (menu-ẩn ≠ API-đóng; `[Authorize]` trần = lỗ hổng); reviewer-adversarial bắt, em-main-solo sót (S118, #82)
|
||||
@ -44,7 +44,11 @@
|
||||
- [Claim mạnh hơn việc đã làm](feedback_claim_stronger_than_work.md) — "đã ghi/đã archive/đã VERDICT" = CLAIM ĐO ĐƯỢC, đo trước khi viết; 0-hit phải kèm control-dương (S162 ×3 ca/1 phiên)
|
||||
- [Edit phải có trước review](feedback_edit_must_predate_review.md) — edit-cần-review (nhất là file vai reviewer) LAND TRƯỚC lượt L3 (no-self-exempt cần vật tồn-tại trong diff); spec tự-mâu-thuẫn → fix-mới thắng footer-cũ + khai trong report (anh ratify S139)
|
||||
|
||||
- [Máy rộng, UI hẹp](feedback_may_rong_ui_hep.md) — nguyên tắc owner S164 ×2 quyết định: schema/BE theo ca TỔNG QUÁT (N/gộp), UI default ca HẸP (1-1), user cần thì bung — 0 đổi máy; rào cứng 409 → rào hiển thị
|
||||
- [Pause phải nhớ kỹ plan-progress](feedback_pause_track_plan_progress.md) — owner S165: /pause giữa chuỗi wave = WAL/run.md liệt TỪNG đầu việc đã-review (wave + vá-số + finding treo), rà từng dòng OG trước khi tuyên xong (ca thật: gap checkbox OG-3 → gate F-1 MAJOR)
|
||||
|
||||
## Project — ongoing decisions / context
|
||||
- [SOL-CCM-SP-002 signing matrix](project_sol_ccm_sp002_signing_matrix.md) — spec ký HĐ (nắm-ý S164, anh dạy 4 nhịp): bảng = danh mục **LOẠI HĐ SOLUTION**, nén **8 pattern ký**; trình ký số hóa **TƯƠNG TỰ duyệt NCC** (workflow V2 trạm, role→user như note 54); ký nháy = **mực trên BẢN CỨNG** (GĐ4 in khối ký); GĐ2 = duyệt HẠNG MỤC (PE cha) → GĐ3 = ĐIỀU KHOẢN → GĐ4 bản cứng; 🔴 3 trục hạng-mục ⟂ loại-HĐ-SP002 ⟂ khuôn-form (chữ "loại HĐ" 2 nghĩa — đặt tên field tách bạch); treo: cardinality N-hạng-mục→1-HĐ
|
||||
- [H22 WAL session-continuity](project_h22_wal_session_continuity.md) — sổ WAL ≤40 + Stop-hook persist VERIFIED-RUNTIME S111 (hot-reload ENV-DEP #2/#3) + /pause·/tiep 1-đường + squash wal: + FLIP run-trace ≥3-task + D10 AS-6-taxonomy-đổi; hook PS1 KHÔNG bash (PATH 3-context); pilot kill/đổi-acc pending
|
||||
- [Model-tier evolution → worker-tier-pin S124](project_harness4_two_tier_model.md) — H4 two-tier → H8 all-inherit → **S124 worker-tier-pin (14/14 sub = opus+effort:max, lead owner-choice, Fable qua /fable-real)**; restart-lesson: EDIT-agent-tồn-tại/command cần restart (hot-reload ENV-DEP, agent-MỚI khác)
|
||||
- [H23 spawn-precedence — ĐO S126](project_h23_spawn_precedence.md) — spawn-param tier THẮNG frontmatter hard-pin ⇒ /fable-real SỐNG · worker-pin ăn runtime (no-tier=opus DÙ lead=Fable ⇒ không inherit); đo 2026-07-16 spawn-model-audit 0-mismatch
|
||||
|
||||
@ -5,7 +5,7 @@ metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: 67157d21-1ead-475d-9a50-cf7f07468583
|
||||
modified: 2026-07-28T13:36:55.402Z
|
||||
modified: 2026-07-31T02:46:15.525Z
|
||||
---
|
||||
|
||||
Sub-agent đôi khi trả về message CUỐI = text bước memory-curation của nó ("Still 18KB, let me trim...", "Memory updated, splice correct...") THAY VÌ verdict/findings của task (#53 return-channel garble). Nhưng WORK + agent-memory diary VẪN ĐÚNG (nó làm task xong, ghi diary chuẩn, chỉ return nhầm text bước cuối). **Recover: đọc `agent-memory/<role>/MEMORY.md` recent-entry lấy verdict thật — KHÔNG re-spawn** (tốn + có thể garble tiếp; hoặc em-main re-do solo cho task cần chắc). Instruction-fix spawn-prompt "🔴 message CUỐI PHẢI là verdict, KHÔNG phải memory-note" GIẢM garble nhưng KHÔNG 100%.
|
||||
@ -28,6 +28,12 @@ Sub-agent đôi khi trả về message CUỐI = text bước memory-curation c
|
||||
🔴 **@S158 closeout (2026-07-28) — SỔ NÀY ĐÃ ĐỨNG YÊN 5 NHÃN PHIÊN (S153→S158), `lead-gap-auditor` bắt (`gap-incident-unrecorded`, FLAG-3 MED-HIGH).** Chính class mà sổ này đẻ ra @S143 lại cắn chủ. mtime file = 2026-07-26 01:50; `grep -o "S15[3-8]"` = 0/0/0/0/0/0. Ghi bù theo đúng luật của file: **derive-from-body, đếm CÁI-CHẮC, không bịa.**
|
||||
|
||||
- **S158 = +6 CHẮC** (lead đếm trực tiếp, cùng phiên): `tooling-auditor` · `harvest-curator` · `lead-stale-auditor` · `lead-gap-auditor` · `ring1-audit` · `ring2-audit` — **6/6 first-return**, 100% reasoning-lane (khớp correlation S103). Resume 6/6 ra kết quả đầy đủ. ⇒ **TỔNG = 66 (cận dưới) qua S158.**
|
||||
|
||||
🔴 **@S164 thu-về (2026-07-31) — sổ lại đứng yên QUA TRỌN L8 (S159→S162), lần 2 cùng bệnh:** vế "số ×66 đã cũ" là 1 trong **4 hàng-nhường rơi khe H24 @S163** (lead-gap nhường `view-*` → lead-stale không nhặt vì xong TRƯỚC 13'; ring2 §5 chứng 4/4 nhường / 0/4 nhặt — khuyết-tật cấu-trúc thiếu bước hợp-lưu, KHÔNG lỗi vai). Ghi bù đúng luật sổ — derive-from-body, đếm CÁI-CHẮC:
|
||||
|
||||
- **S162 = +6 CHẮC** (STATUS ④ closeout L8, lead đếm cùng phiên): **6/6 sub #53, resume-từ-đĩa 6/6, mất 0 B** — xác nhận lần 5 "chống-#53 = thiết-kế ARTIFACT". ⇒ **TỔNG = 72 (cận dưới) qua S162.**
|
||||
- **S159·S160·S161 = CHƯA ĐẾM ĐƯỢC, không bịa** (cùng khuôn S153-S157): closeout các phiên đó không để lại dòng đếm khôi-phục được trong sổ nào lead chạm @S164.
|
||||
- **S163-S164 (L9 ĐANG MỞ) = GHI SỰ-KIỆN, TALLY CHỐT @CLOSEOUT** (đúng bài học (c) — nâng số giữa phiên là tự đẻ số sai): đã biết **≥2**: `lead-gap-auditor` chết #53 **×2** @S163 bookend-open, lần 1 để lại `sub-lead-gap-open-S163.md` **1.302 B ruột-toàn-heading** = **instance #2 sub-class `skeleton-nấc-2`** (sau 1.661B S158 — byte>0 nên guard "verify byte tăng" mù, phải đọc RUỘT; AS-17 2-strike-watch tiếp).
|
||||
- **S153-S157 = CHƯA ĐẾM ĐƯỢC, khai thẳng thay vì bịa.** `lead-gap` dẫn `_mind-s-7.md:199` ×11 + `:181` ×13 ⇒ "~27 cho L7", **nhưng `ring2-audit` bác cách đếm**: nó neo bằng **SỐ DÒNG `_mind`** — đúng thứ mà FLAG-2 của chính lead-gap vừa cấm trong cùng return. ⇒ số đó **không tái-dựng được** bằng đường khác ⇒ **KHÔNG nhập tally**. Muốn đóng: derive từ `runs/*/` + session-log S153-S157, không từ số dòng.
|
||||
|
||||
🔴 **COUNTER-DATUM MẠNH NHẤT TỪ TRƯỚC TỚI NAY (S158) — 5 ca cùng phiên, cùng ngày, cùng lead, khác đúng MỘT biến:**
|
||||
|
||||
19
.claude/auto-memory/feedback_may_rong_ui_hep.md
Normal file
19
.claude/auto-memory/feedback_may_rong_ui_hep.md
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
name: may-rong-ui-hep
|
||||
description: "Nguyên tắc owner @S164: 'máy rộng, UI hẹp' — schema/BE thiết kế cho ca tổng quát (N), giao diện mặc định ca đơn giản (1-1), user cần thì bung — 0 đổi máy"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: f7c1c007-6a03-4bf4-b46b-f6dbe9139702
|
||||
modified: 2026-07-31T05:17:44.243Z
|
||||
---
|
||||
|
||||
Owner chốt cùng 1 nguyên tắc ở 2 quyết định liên tiếp @S164 (chuỗi 4-GĐ SP-002):
|
||||
- OG-1 gộp HĐ: *"thiết kế gộp nhưng giao diện thì cho 1-1 (Khi user đổi ý thì mình làm luôn)"*
|
||||
- OG-7 N-phiếu/PE: *"PE cho nhiều, nhưng giống cái trên làm trước nhưng rào hiển thị 1-1 lại -> User cần thì bung ra"*
|
||||
|
||||
**Why:** đổi schema/migration sau khi ship = đắt + rủi ro (cardinality-change class S87/S88); đổi UI default = rẻ. Owner muốn trả giá schema MỘT LẦN cho ca tổng quát, nhưng không bắt user ăn complexity khi 90% ca là đơn giản.
|
||||
|
||||
**How to apply:** khi thiết kế field/quan hệ có 2 mức cardinality (1-1 vs 1-N, đơn vs gộp): (a) schema + BE + validator theo mức RỘNG (N); (b) UI/flow mặc định theo mức HẸP (1) — nút phụ/flag "bung" thay vì bắt chọn; (c) code viết 1 đường chung (hàm nhận list, UI truyền 1 phần tử); (d) rào chặn cứng (409) đổi thành rào hiển thị. Đề xuất lên owner: đưa default HẸP, khai máy đã RỘNG sẵn.
|
||||
|
||||
Liên quan: [[sol-ccm-sp002-signing-matrix]] · [[cardinality-change-grep-consumers]]
|
||||
15
.claude/auto-memory/feedback_pause_track_plan_progress.md
Normal file
15
.claude/auto-memory/feedback_pause_track_plan_progress.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
name: pause-track-plan-progress
|
||||
description: "Lời dặn owner @S165 — khi /pause phải NHỚ KỸ plan đang chạy tới đâu, từng đầu việc đã-review; bắt được lỗi giữa chừng là điểm cộng"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: 95541fdb-83ef-45f2-b778-8e1c44510af3
|
||||
modified: 2026-07-31T11:23:37.814Z
|
||||
---
|
||||
|
||||
Owner @S165 (2026-07-31, giữa chuỗi K-wave SP-002): *"Chú ý kỹ các đầu việc trong plan đã đc review kỹ trong turn này"* → clarify: *"ý tao là plan các thứ đang chạy tới đâu nhớ kỹ, bắt đc lỗi thì tốt. Xong rồi thì pause đi."*
|
||||
|
||||
**Why:** plan đã qua review (spec đóng băng + checklist wave + finding gate + quan sát lane) là TÀI SẢN — pause mà ghi sổ lỏng thì lần /tiep sau tự chế lại việc, rơi đúng những đầu việc đã trả giá để tìm ra (ca thật cùng phiên: gap checkbox-opt-out chỉ lộ khi rà lại từng dòng OG-3 theo lời dặn này; sau đó gate K3 F-1 xác nhận đúng nó là MAJOR).
|
||||
|
||||
**How to apply:** (1) Khi /pause giữa chuỗi wave: WAL + run.md taskList phải liệt TỪNG wave còn lại đúng tên/vá-số theo spec đã review, kèm mọi món treo sinh ra trong run (finding khai-lệch, quan sát O-*, khoảng-hở UX đã khai) — không gộp thành "làm nốt phần còn lại". (2) Rà từng dòng OG/quyết-định owner xem có đầu việc ngầm nào chưa land trước khi tuyên wave xong. (3) [[agent-return-garble-recover]] liên quan: artifact là nguồn đầu việc, không phải return.
|
||||
67
.claude/auto-memory/project_sol_ccm_sp002_signing_matrix.md
Normal file
67
.claude/auto-memory/project_sol_ccm_sp002_signing_matrix.md
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
name: sol-ccm-sp002-signing-matrix
|
||||
description: "Spec SOL-CCM-SP-002.v01 (nắm-ý @S164, anh dạy 4 nhịp) — bảng = danh mục LOẠI HĐ SOLUTION, 8 pattern ký; trình ký số hóa TƯƠNG TỰ duyệt NCC (workflow trạm); ký nháy = mực trên BẢN CỨNG; GĐ2 duyệt hạng mục · GĐ3 điều khoản · GĐ4 bản cứng"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: f7c1c007-6a03-4bf4-b46b-f6dbe9139702
|
||||
modified: 2026-07-31T03:58:08.893Z
|
||||
---
|
||||
|
||||
**SOL-CCM-SP-002.v01** (ban hành 2026-03-02, 15 trang; file gốc ở `D:\Dropbox\CONG_VIEC\SOLUTION\QUY_TRINH\`) — "Quy trình trình ký HĐ Thầu phụ/NCC/Tổ đội". Anh gửi ảnh trang 5-9 @S164 (2026-07-31), dặn **nắm Ý, KHÔNG cần chi tiết** — nạp context TRƯỚC khi giao việc. Anh dạy **4 nhịp chỉnh liên tiếp** — model dưới = bản GỘP CHỐT.
|
||||
|
||||
## Model chốt (4 GĐ — mỗi GĐ 1 câu hỏi)
|
||||
|
||||
- **GĐ1 Duyệt NCC (PE) = CHA** — *mua của ai* (gói thầu bự + NCC thắng).
|
||||
- **GĐ2 KHKK = DUYỆT HẠNG MỤC** — *mua gì, ai ký, bao nhiêu* (lời anh: *"ý tao đang nói là GĐ 2 thôi"*): bổ PE cha → N hạng-mục con; mỗi hạng mục gắn 1 dòng **danh mục SP-002** ⇒ suy ra người ký + pattern nháy. 🔸 KHKK (Mig 69) có sẵn `ContractSigningPlanLines` — khả năng "line = hạng mục" gần đúng, SOI trước khi đập dựng.
|
||||
- Hạng mục duyệt xong → **"đưa vào loại hợp đồng gì"** (chọn khuôn form) → **GĐ3 Duyệt Hợp đồng = bàn ĐIỀU KHOẢN** (*"GĐ3 ko bàn công việc hạng mục nữa"*; nền = Contract 9-phase + Forms/Clause + form-engine) — *ràng buộc thế nào*.
|
||||
- **GĐ4 bản cứng** (1-mốc đã chốt) — *giấy trắng mực đen*: in khối ký đúng pattern, ký nháy MỰC + ký chính, upload.
|
||||
|
||||
## Trình ký = TƯƠNG TỰ QUY TRÌNH DUYỆT NCC (nhịp 6 — chốt kiến trúc)
|
||||
|
||||
Chuỗi Ô1→Ô4 (ký nháy) → người ký chính **số hóa thành workflow trạm-by-trạm trong app Y NHƯ PE** (từng người bấm duyệt lần lượt), KHÔNG phải chỉ render. Bản chất vật lý các ô = **ký nháy mực trên BẢN CỨNG** (nhịp 5) — app chạy luồng số, GĐ4 in khối ký + nghi thức mực. ⇒ Tái dùng nền **workflow V2** (Quy trình > Bước > Cấp, OR-of-N, Designer, `ApplicableType` — PE/Contract/KHKK cùng nền); vai trò (TBP.CCM, QS…) map user thật kiểu note (54) *"danh sách cũ trong duyệt NCC"*.
|
||||
|
||||
**Bảng SP-002 = danh mục các LOẠI HĐ của SOLUTION** (nhịp 5 — 79 dòng nhóm theo phòng chủ trì), nén còn **8 PATTERN KÝ duy nhất** (⇒ ~8 workflow template, không phải 79):
|
||||
|
||||
| Pattern | Chuỗi nháy Ô1→Ô4 | Ký chính (NĐUQ) |
|
||||
|---|---|---|
|
||||
| A1 thiết-bị/máy-móc/vật-tư-phụ ×5 | TBP.CCM→NV.CCM→TBP.EQU→NV.EQU | TP.CCM |
|
||||
| A2 hạ-tầng/phá-dỡ ×1 + A3 DV thi-công ×9 | TBP.CCM→PD/PM→SM→QS | TP.CCM |
|
||||
| A4 văn-phòng ×5 | TBP.CCM→TPB/TBP→TBP/NV.PB→N/A | TP.CCM |
|
||||
| B1 vật-tư ×23 | TBP.PRO→NV.PRO→N/A→N/A | TP.PRO |
|
||||
| B2 thầu-phụ-XD ×13 | TP.CCM→TBP.PRO→PD/PM/SM→QS | TP.PRO |
|
||||
| B3 thầu-phụ-MEP ×15 | TP.CCM→TBP.PRO→PD/PM/SM→MEP SM | TP.PRO |
|
||||
| C1-C3 BCH ×13 (nhân-công/hoàn-thiện/khác) | TP.CCM→SM→QS | PD/PM |
|
||||
| CEO — mọi HĐ CHƯA ủy quyền | TP.CCM→TP.PRO→N/A→N/A | CEO |
|
||||
|
||||
**Quy tắc:** signer = trưởng phòng SỞ HỮU danh mục theo ngưỡng UQ, CEO = fallback · chuỗi nháy biến thiên theo bản chất (+site khi thi công · +EQU thiết bị · +MEP SM · QS chốt đuôi · N/A = trống hợp lệ 2-4 ô) · **TP.CCM nháy Ô1 mọi thầu phụ kể cả B do PRO ký** · phụ lục 3.5 bảng giá trị (KL/đơn-giá/thành-tiền + VAT 10%).
|
||||
|
||||
## 3 trục — ĐỪNG trộn (nhịp 1+2+5)
|
||||
|
||||
**hạng-mục công-việc** (instance GĐ2, con của PE) ⟂ **loại-HĐ SOLUTION** (dòng danh mục SP-002 — quyết ai ký + pattern nháy) ⟂ **khuôn form** (5 form `FORM\SOL-CCM-FO-002`: .02 trọn-gói NC+VT · .03 trọn-gói NC+TB · .05 giao-khoán · .06 mua-bán · .07 đặt-hàng; .01/.04 phụ trợ). 1 hạng mục có thể ra trọn-gói/tổ-đội/nguyên-tắc (lời anh nhịp 2). ⚠️ **Từ "loại HĐ" trong lời anh mang 2 nghĩa** (nhịp 2 = khuôn form · nhịp 5 = danh mục SP-002) — khi design phải đặt tên field tách bạch, đừng dùng chữ "loại" trần.
|
||||
|
||||
## UI mapping (hình prod eoffice @S164 — anh xác nhận "Đúng chính xác rồi đó")
|
||||
|
||||
Sidebar fe-user 4 root = 4 GĐ, mỗi root fan-out theo "loại" của GĐ: **DUYỆT NCC** (1 mục `1. NCC-TP` + 6 leaf) · **KẾ HOẠCH KÝ KẾT HĐ** (hiện 1 mục NCC-TP — 🔴 **VIỆC ANH KHOANH: fan-out ra danh mục SP-002 A1, A2, … kèm CHÚ THÍCH NGẮN**, mirror pattern GĐ3/GĐ4) · **DUYỆT HỢP ĐỒNG** (đã fan-out **7 loại HĐ**: 01 Thầu phụ · 02 Giao khoán · 03 Nhà cung cấp · 04 Dịch vụ · 05 Mua bán · 06 Nguyên tắc NCC · 07 Nguyên tắc DV = bộ 7 ContractType) · **HỢP ĐỒNG CỨNG** (7 loại "- Bảng cứng" tương ứng). Cây per-gói-thầu panel giữa giữ nguyên (BVN01 → gói → 4 folder GĐ; gói `14 Mat PVC` minh họa: PE/2026/A/049 ở GĐ1, 3 GĐ sau "SẮP"). ✅ Giải treo "HĐ nguyên tắc": là ContractType 06/07 trong hệ thống (khuôn file .docx có 5, LOẠI hệ thống có 7).
|
||||
|
||||
## Admin mapping (hình 2 @S164 — admin/system/approval-workflows-v2/DuyetNcc)
|
||||
|
||||
Anh khoanh: **(a) ẨN toàn khối menu Admin cũ** (Tổng quan → HỆ THỐNG/Quy trình HĐ), *"chỉ còn cái Quy trình duyệt (Mới) thôi"* — Admin thu về vai NƠI-CONFIG-QUY-TRÌNH, nghiệp vụ ở eOffice (⚠️ hỏi (1): có ẩn cả HỆ THỐNG Người-dùng/Vai-trò/Phân-quyền/Menu-eOffice? — ẩn = mất UI quản trị). **(b) "Thêm các chỗ duyệt đó trong mục duyệt NCC mới giống Duyệt NCC"** = nhân bản khuôn designer V2 (Bước—Phòng—Cấp, versioned + archived history) cho các luồng mới (KHKK hạng mục 8-pattern + GĐ sau — hỏi (2) danh sách chính xác). Nhóm "Quy trình duyệt (Mới)" hiện có 2 entry: Duyệt NCC (Mới) + Duyệt NCC và Giải pháp (Mới).
|
||||
|
||||
🔑 **"Danh sách cũ" note (54) = ĐỘI HÌNH THẬT trong `QT-DN-V2-001`** (đọc từ hình, v03/v02 archived): **B1 PRO** C1 = Nguyễn Thị Bích Phượng · Nguyễn Văn Duy · Châu Tạ Kim Long · Binh Le Thanh, C2 = Bùi Lê Thủy Trà · **B2 CCM (Phòng Kiểm soát Chi phí)** C1 = Hồ Thị Nữ Nguyên · Trần Xuân Lưu · Lê Trần Đăng Trưởng / Lê Văn Binh, C2 = Phan Văn Chương · **B3 Ban Giám đốc** = Nguyễn Văn Trường (CEO-trạm). Map vai SP-002 → user thật lấy từ đây, KHÔNG cần anh chọn tay; verify bản LIVE (không phải archived) trước khi wire.
|
||||
|
||||
## SCOPE CHỐT (@S164 — anh trả 2 câu + hình 3 cây toàn trình)
|
||||
|
||||
**(1) Admin:** ẩn mục nghiệp vụ cũ + 2 mục quy trình cũ, **CHỪA khối HỆ THỐNG** (anh: *"chừa lại User cũng đc"* — Người dùng/Vai trò/Phân quyền/Menu eOffice) + "Quy trình duyệt (Mới)". **(2) Fan-out THEO NHÓM DUYỆT** (anh: *"cùng 1 nhóm duyệt"*) = **8 nhóm** nén từ SP-002: A1 · A2-A3 · A4 · B1 · B2 · B3 · C(C1-C3) · CEO — mỗi nhóm 1 workflow designer trong (Mới), khuôn y Duyệt NCC. **(3) Sidebar ↔ CÂY TOÀN TRÌNH GIỐNG NHAU** (anh: *"chú ý giao diện slider bar, nên giống nhau"*; hình 3 khoanh 3 dòng "Chưa có dữ liệu" → *"Thêm các sub folder con ở đây"*): sidebar KHKK fan-out 8 nhóm ⟺ cây per-gói folder "Kế hoạch Hợp đồng" mở 8 sub-folder ĐÚNG BỘ ĐÓ; GĐ3/GĐ4 cây mở sub-folder theo **7 loại HĐ** khớp sidebar 7 mục sẵn có. Một bộ nhóm — hai mặt hiển thị. Header GĐ2 prod: *"Chốt giá per-NCC trúng thầu + căn cứ hồ sơ trước khi ký hợp đồng"*; cây 38 gói / 11 dự án (BVN01 12, CAL01 3, FLOCK01-04, RMIT01, SOVI01, VLU04.1, VRR01, ZOTE01 11).
|
||||
|
||||
## 🔴 RÀNG BUỘC KHUÔN (anh dặn @S164, hình A/B đối chiếu GĐ1-vs-GĐ2): "GIỐNG NHAU, CHỈ KHÁC FORM, ĐỪNG CHẾ THÊM"
|
||||
|
||||
**MỘT khung duy nhất = khung Duyệt NCC**, nhân cho mọi GĐ: (a) sidebar = mục con + 6 leaf (Luồng duyệt/Danh sách/Thao tác/Đang duyệt/Đã duyệt/Đã xóa); (b) cây toàn trình = gói → folder GĐ → sub-folder nhóm → card phiếu (badge trạng thái + mã + ngày + người tạo — như card PE/2026/A/044); (c) layout trang = cây trái · danh sách giữa · panel chi tiết phải. **Thứ KHÁC duy nhất giữa các GĐ = FORM phiếu** (ruột panel phải: PE = ngân sách/NCC tham gia · KHKK = mã kế hoạch/chốt giá per-NCC/hồ sơ · duyệt HĐ = điều khoản…). CẤM chế layout/khái niệm UI mới — *"lấy 1 khung sliderbar của duyệt NCC thôi"*. = luật cookie-cutter mirror (đã dùng PE→Contract→KHKK ở BE) nay CHỐT cho tầng UI: **nhân khung, đổi form**.
|
||||
|
||||
## Treo — hỏi khi design thật (đừng hỏi dồn bây giờ)
|
||||
|
||||
Cardinality gộp: N hạng-mục-đã-duyệt → 1 HĐ hay 1-1? (hỏi 2 lần chưa trả lời — bảng 3.5 nhiều dòng gợi ý gộp được) · "HĐ nguyên tắc" chưa thấy file trong FORM · B2 đánh số trùng 2 dòng "7" · A4 ô "TPB/TBP" dấu / = hoặc? · NĐUQ ngưỡng tiền ở trang chưa gửi · GĐ2 line hiện tại khớp tới đâu (`ContractSigningPlanLines`). Khi build: extract chi tiết từ file gốc QUY_TRINH qua `office-document`, KHÔNG dựng từ memory này.
|
||||
|
||||
**Vai trò:** site = PD·PM·SM·MEP-SM·QS (BCH, không phải phòng ban) · văn-phòng generic = TPB/TBP + NV.PB · thiết-bị = TBP.EQU/NV.EQU · CCM = TP>TBP>NV · PRO = TP>TBP>NV.
|
||||
|
||||
Liên quan: [[h22-wal-session-continuity]] · note (54) HANDOFF: người duyệt = danh sách cũ Duyệt NCC.
|
||||
Reference in New Issue
Block a user