Files
solution-erp/docs/_user-guide/_gen-user-02.js
pqhuy1987 16c2c9c79e [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>
2026-05-06 17:06:01 +07:00

97 lines
4.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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');
});