[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,168 @@
// User Manual 06 — Cheatsheet 7 loại HĐ (mỗi loại 1 page tóm gọn)
// Style: end-user friendly — chỉ thông tin cốt lõi để Drafter biết khi nào dùng loại nào.
const fs = require('fs'); const path = require('path');
const H = require('./_helpers');
const { h1, h2, p, bullet, num, note, tip, titlePage, buildDoc, Packer } = H;
const cheatsheet = (info) => {
const out = [
h1(info.title),
p("Khi nào dùng: " + info.use),
];
if (info.bypass !== undefined) {
out.push(p("Bypass CCM: " + (info.bypass ? "Có (skip phase Kiểm tra CCM)" : "Không (đầy đủ 9 phase)")));
}
out.push(h2("Field đặc thù khi tạo"));
for (const f of info.fields) out.push(bullet(f));
out.push(h2("Mã HĐ format"));
out.push(p(info.codeFormat));
if (info.tips) {
out.push(h2("Lưu ý"));
for (const t of info.tips) out.push(bullet(t));
}
return out;
};
const children = [
...titlePage(
"Cheatsheet 7 loại Hợp đồng",
"Phần 06: Khi nào dùng loại nào + Field đặc thù mỗi loại",
),
h1("Tóm tắt - Bảng phân loại nhanh"),
bullet("HĐ Thầu phụ (HĐTP) — thuê NTP làm việc cho dự án xây dựng (xây thô, hoàn thiện, MEP)"),
bullet("HĐ Giao khoán (HĐGK) — khoán việc cho tổ đội nhỏ (theo công nhật, theo m²)"),
bullet("HĐ NCC — mua vật tư / thiết bị 1 lần từ NCC (cụ thể đầu việc)"),
bullet("HĐ Dịch vụ (HĐDV) — thuê tư vấn / kiểm định / vệ sinh / dịch vụ phụ trợ"),
bullet("HĐ Mua bán (HĐMB) — mua bán thiết bị / hàng hóa (không phải vật tư xây dựng)"),
bullet("HĐ Nguyên tắc NCC — khung hợp tác lâu dài với NCC, cụ thể từng đợt qua phiếu yêu cầu"),
bullet("HĐ Nguyên tắc DV — khung dịch vụ lâu dài (vd hợp đồng vệ sinh năm)"),
tip("Nếu phân vân, hỏi P.CCM hoặc P.Mua hàng để chốt loại."),
...cheatsheet({
title: "1. HĐ Thầu phụ (HĐTP) — Type 1",
use: "Thuê nhà thầu phụ (NTP) thực hiện gói thầu xây dựng cho 1 dự án cụ thể.",
bypass: false,
fields: [
"NCC/NTP: chọn từ danh sách nhà thầu phụ (Master)",
"Dự án: chọn dự án áp dụng",
"Hạng mục: liệt kê đầy đủ công việc + khối lượng + đơn giá",
"Thanh toán: tỷ lệ tạm ứng / thanh toán theo tiến độ / quyết toán / bảo hành",
"Bảo hành: thời gian bảo hành sau quyết toán",
],
codeFormat: "{Mã DA}/HĐTP/SOL&{Mã NCC}/{số thứ tự 2 chữ số}",
tips: [
"Đầy đủ 9 phase, có duyệt CCM",
"Mỗi NTP chỉ 1 HĐTP active per dự án (chia nhiều đợt qua Hạng mục)",
],
}),
...cheatsheet({
title: "2. HĐ Giao khoán (HĐGK) — Type 2",
use: "Khoán việc cho tổ đội nhỏ (10-50 người) làm phần việc cụ thể trong dự án.",
bypass: false,
fields: [
"Tổ đội: chọn tổ trưởng + tên tổ (Master)",
"Dự án + Phạm vi công việc",
"Khối lượng giao khoán: theo m², công nhật, hoặc trọn gói",
"Đơn giá khoán: per đơn vị",
"Thời hạn hoàn thành",
],
codeFormat: "{Mã DA}/HĐGK/SOL&{Mã NCC}/{số thứ tự 2 chữ số}",
}),
...cheatsheet({
title: "3. HĐ NCC — Type 3",
use: "Mua vật tư / thiết bị 1 lần từ NCC cho 1 dự án (vd mua thép, xi măng, thang máy).",
bypass: false,
fields: [
"NCC: chọn từ Master",
"Dự án",
"Hạng mục: vật tư + quy cách + khối lượng + đơn giá",
"Giao hàng: địa điểm + thời gian + điều kiện",
"Thanh toán: tỷ lệ tạm ứng + còn lại sau giao hàng",
],
codeFormat: "{Mã DA}/NCC/SOL&{Mã NCC}/{số thứ tự 2 chữ số}",
tips: [
"Trước khi tạo HĐ NCC, NÊN tạo Phiếu Duyệt NCC (PE) để so sánh giá nhiều NCC",
"Sau khi PE Đã duyệt, click \"Tạo HĐ từ phiếu\" → tự sinh HĐ NCC nháp",
],
}),
...cheatsheet({
title: "4. HĐ Dịch vụ (HĐDV) — Type 4",
use: "Thuê dịch vụ tư vấn, kiểm định, thí nghiệm, vệ sinh, an ninh cho 1 dự án.",
bypass: true,
fields: [
"NCC dịch vụ",
"Dự án",
"Phạm vi dịch vụ: liệt kê công việc tư vấn / kiểm định / ...",
"Phí dịch vụ: trọn gói hoặc theo giờ / theo lần",
"Sản phẩm bàn giao: báo cáo / chứng nhận / ...",
],
codeFormat: "{Mã DA}/HĐDV/SOL&{Mã NCC}/{số thứ tự 2 chữ số}",
}),
...cheatsheet({
title: "5. HĐ Mua bán (HĐMB) — Type 5",
use: "Mua bán thiết bị / hàng hóa không thuộc nhóm vật tư xây dựng (vd máy tính văn phòng).",
bypass: true,
fields: [
"NCC bán hàng",
"Dự án (nếu có) hoặc Phòng ban đặt mua",
"Hạng mục hàng hóa: tên / model / số lượng / đơn giá",
"Bảo hành nhà sản xuất + bảo hành NCC",
"Phương thức giao hàng + thanh toán",
],
codeFormat: "{Mã DA}/MB/SOL&{Mã NCC}/{số thứ tự 2 chữ số}",
}),
...cheatsheet({
title: "6. HĐ Nguyên tắc NCC — Type 6",
use: "Khung hợp tác lâu dài với 1 NCC (vd hợp đồng nguyên tắc cung cấp xi măng cả năm).",
bypass: true,
fields: [
"NCC + Phạm vi sản phẩm",
"Đơn giá khung (có thể điều chỉnh theo CPI / thị trường)",
"Thời hạn HĐ nguyên tắc (thường 1 năm)",
"Điều kiện chung: thanh toán / giao hàng / phạt",
],
codeFormat: "{Năm 4 chữ số}/NCC/SOL&{Mã NCC}/{số thứ tự 2 chữ số}",
tips: [
"Mã HĐ theo NĂM (không theo dự án) — vì áp dụng cho nhiều dự án",
"Mỗi đợt mua thực tế tạo Phiếu yêu cầu vật tư (chưa có module — manual)",
],
}),
...cheatsheet({
title: "7. HĐ Nguyên tắc DV — Type 7",
use: "Khung dịch vụ lâu dài (vd hợp đồng vệ sinh hàng năm cho mọi dự án).",
bypass: true,
fields: [
"NCC dịch vụ + Phạm vi dịch vụ",
"Phí dịch vụ khung",
"Thời hạn HĐ nguyên tắc (thường 1 năm)",
"Điều kiện chung",
],
codeFormat: "{Năm 4 chữ số}/HĐDV/SOL&{Mã NCC}/{số thứ tự 2 chữ số}",
}),
h1("Mẹo chung khi tạo HĐ"),
bullet("Chọn đúng loại ngay từ đầu — không chuyển loại sau khi tạo (phải xóa + tạo lại)"),
bullet("Liên kết Ngân sách dự án nếu có — để theo dõi \"đã chi vs ngân sách\""),
bullet("Đính kèm đầy đủ: báo giá, biên bản đàm phán, phụ lục"),
bullet("Mã HĐ KHÔNG gen ngay — chỉ gen khi chuyển sang phase \"Đang đóng dấu\""),
];
const doc = buildDoc(
"User Manual - 06 Cheatsheet 7 loại HĐ",
"SOLUTION_ERP - User Manual - 06 Cheatsheet 7 loại HĐ",
children,
);
const outPath = path.join(__dirname, 'user', '06-7-Loai-HD-Cheatsheet.docx');
Packer.toBuffer(doc).then(buf => {
fs.writeFileSync(outPath, buf);
console.log('✅ Generated:', outPath);
console.log(' Size:', (buf.length / 1024).toFixed(1) + ' KB');
});