[CLAUDE] Docs: User Manual 7 file rewrite compact cho end-user

User feedback: "ko cần quá đầy đủ chi tiết, cho end-user họ làm".

Rewrite 7 generator scripts theo style end-user friendly:
- Bỏ field validation table 5 cột (Tên field / Kiểu / Bắt buộc / Validation / Ví dụ)
- Bỏ error troubleshoot table 3 cột (Lỗi / Nguyên nhân / Cách xử lý)
- Bỏ FAQ chi tiết 8 câu (giữ 1 chương "Khi gặp lỗi" 4-5 bullet)
- Bỏ phím tắt table
- Giữ: tổng quan ngắn, numbered steps đơn giản, note/warn/tip chỉ khi critical

7 file generator (đã refactor dùng _helpers.js shared):
- _gen-user-01: Bắt đầu (login + đổi pwd + hồ sơ + dashboard + sidebar + chuông)
- _gen-user-02: Hợp đồng (7 loại + tạo + sửa + xóa + đính kèm + comment)
- _gen-user-03: Duyệt Workflow (9 phase + 2-stage NV/TPB + reject + resume)
- _gen-user-04: Phiếu Duyệt NCC (PE) (A/B + matrix báo giá + winner + 4PB + tạo HĐ)
- _gen-user-05: Ngân sách (tạo + hạng mục + WF 3-step + liên kết HĐ/PE)
- _gen-user-06: Cheatsheet 7 loại HĐ (mỗi loại 1 page: use case + field + format mã)
- _gen-admin-02: Quản lý Users-Roles (tạo + role + reset + lock + bypass review S9)

Setup: package.json + npm install docx@9.5.0 + script "gen:all".

Output sizes:
- 01: 12.1 KB (cũ 21.7 KB → giảm ~44%)
- 02: 12.4 KB
- 03: 12.2 KB
- 04: 12.4 KB
- 05: 12.0 KB
- 06: 12.8 KB
- admin-02: 12.7 KB
- Tổng ~86 KB cho 7 file đầy đủ chức năng cốt lõi.

Note: ContractType label "Phương án" → "Giải pháp" (đã rebrand session 3).
2-stage dept approval mention ở Phần 03 + admin-02 (Migration 16 Session 8/9).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-05-06 17:06:01 +07:00
parent bdd175c07b
commit 16c2c9c79e
17 changed files with 1231 additions and 0 deletions

View File

@ -0,0 +1,96 @@
// User Manual 02 — Hợp đồng (Tạo + Sửa + 7 loại + Xóa)
// Style: end-user friendly — các bước đơn giản.
const fs = require('fs'); const path = require('path');
const H = require('./_helpers');
const { h1, h2, h3, p, bullet, num, note, warn, tip, titlePage, buildDoc, Packer } = H;
const children = [
...titlePage(
"Hướng dẫn Hợp đồng",
"Phần 02: 7 loại HĐ - Tạo, Sửa, Xóa",
),
h1("1. 7 loại hợp đồng"),
bullet("HĐ Thầu phụ (HĐTP) — thuê NTP xây thô / hoàn thiện"),
bullet("HĐ Giao khoán (HĐGK) — khoán công việc cho tổ đội"),
bullet("HĐ NCC — mua vật tư, thiết bị từ NCC"),
bullet("HĐ Dịch vụ (HĐDV) — thuê tư vấn, kiểm định, vệ sinh"),
bullet("HĐ Mua bán (HĐMB) — mua bán thiết bị, vật phẩm"),
bullet("HĐ Nguyên tắc NCC — khung nguyên tắc lâu dài với NCC"),
bullet("HĐ Nguyên tắc DV — khung nguyên tắc dịch vụ lâu dài"),
note("Tham khảo Phần 06 để biết field đặc thù mỗi loại."),
h1("2. Inbox vs Hợp đồng của tôi"),
bullet("Inbox (/inbox) — HĐ đang chờ vai trò bạn duyệt"),
bullet("Hợp đồng của tôi (/my-contracts) — HĐ bạn là Drafter (mọi phase)"),
tip("Filter theo loại: thêm ?type=N (1-7) vào URL hoặc dùng menu Sidebar."),
h1("3. Tạo HĐ mới"),
num("Sidebar → Hợp đồng → chọn loại HĐ → Tạo mới"),
num("Hoặc URL trực tiếp /contracts/new?type=N (N = 1-7)"),
num("Điền Header: Tên HĐ, NCC/NTP, Dự án, Phòng ban chủ trì, Giá trị, Ngày dự kiến"),
num("(Tùy chọn) Liên kết Ngân sách dự án"),
num("Click \"Lưu nháp\" → hệ thống tạo HĐ ở phase Đang soạn thảo"),
note("Mã HĐ chưa gen ngay — sẽ tự gen khi chuyển sang phase Đang đóng dấu."),
h1("4. Thêm chi tiết HĐ"),
p("Sau khi tạo nháp, mở HĐ → tab \"Chi tiết\" để nhập hạng mục cụ thể."),
num("Mở HĐ → tab \"Chi tiết\""),
num("Click \"Thêm hạng mục\""),
num("Nhập Mã / Tên hạng mục / Đơn vị / Khối lượng / Đơn giá"),
num("Hệ thống tự tính Thành tiền = Khối lượng × Đơn giá"),
num("Click \"Lưu\""),
tip("Lặp lại để thêm nhiều hạng mục. Tổng giá trị HĐ tự tổng hợp."),
h1("5. Sửa HĐ nháp"),
num("Mở HĐ ở phase Đang soạn thảo"),
num("Click \"Sửa\" ở Header hoặc inline edit từng hạng mục"),
num("Click \"Lưu\""),
warn("Sau khi trình duyệt (Phase ≠ Đang soạn thảo), HĐ bị khóa edit. Phải reject về Đang soạn thảo mới sửa được."),
h1("6. Trình duyệt HĐ"),
num("Mở HĐ ở phase Đang soạn thảo"),
num("Panel Quy trình bên phải → click \"Trình → Đang góp ý\""),
num("(Tùy chọn) Nhập ghi chú"),
num("Click \"Xác nhận\""),
p("HĐ chuyển sang phase tiếp theo, người duyệt nhận notification."),
p("Chi tiết quy trình duyệt 9 phase: xem Phần 03 - Duyệt Workflow."),
h1("7. Đính kèm file"),
num("Mở HĐ → tab \"Đính kèm\" hoặc kéo thả file vào khu vực dropzone"),
num("Chọn loại file: Báo giá / Yêu cầu KT / Phiếu duyệt / ..."),
num("File upload xong, hiển thị trong danh sách"),
num("Click tên file để tải về"),
h1("8. Comment / Góp ý"),
num("Mở HĐ → tab \"Bình luận\""),
num("Nhập nội dung góp ý vào khung text"),
num("Click \"Gửi\""),
note("Drafter + role đã comment trước nhận notification realtime."),
h1("9. Xóa HĐ nháp"),
num("Mở HĐ ở phase Đang soạn thảo / Từ chối"),
num("Click icon \"Xóa\" (thùng rác) ở Header"),
num("Xác nhận \"Xóa\""),
warn("Chỉ xóa được HĐ ở phase Đang soạn thảo hoặc Từ chối. HĐ đã trình duyệt KHÔNG xóa được."),
h1("10. Tìm + Filter"),
bullet("Search box: tìm theo Mã HĐ / Tên / NCC"),
bullet("Filter Phase: dropdown 9 phase + Từ chối"),
bullet("Filter NCC / Dự án: dropdown"),
bullet("Filter SLA: chỉ hiện HĐ sắp đến hạn / quá hạn"),
tip("URL có thể bookmark, vd /my-contracts?type=5&phase=2 = HĐ Mua bán phase Đang soạn thảo."),
];
const doc = buildDoc(
"User Manual - 02 Hợp đồng",
"SOLUTION_ERP - User Manual - 02 Hợp đồng",
children,
);
const outPath = path.join(__dirname, 'user', '02-Hop-dong.docx');
Packer.toBuffer(doc).then(buf => {
fs.writeFileSync(outPath, buf);
console.log('✅ Generated:', outPath);
console.log(' Size:', (buf.length / 1024).toFixed(1) + ' KB');
});