[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,83 @@
// User Manual 01 — Bắt đầu (Đăng nhập + Đổi pwd + Hồ sơ + Dashboard + Sidebar + Chuông)
// Style: end-user friendly — chỉ các bước thực hiện đơn giản, không bảng field/error chi tiết.
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 Bắt đầu",
"Phần 01: Đăng nhập, Đổi mật khẩu, Hồ sơ, Điều hướng",
),
h1("1. Mở hệ thống"),
p("Truy cập https://eoffice.solutions.com.vn bằng trình duyệt Chrome / Edge / Cốc Cốc."),
p("Tài khoản: email công ty cấp (vd ten.ho@solutions.com.vn). Mật khẩu lần đầu: User@123456."),
h1("2. Đăng nhập"),
num("Mở https://eoffice.solutions.com.vn"),
num("Nhập Email + Mật khẩu"),
num("Click \"Đăng nhập\""),
note("Lần đầu đăng nhập, hệ thống tự chuyển sang trang Đổi mật khẩu."),
h1("3. Đổi mật khẩu lần đầu"),
num("Nhập Mật khẩu hiện tại (User@123456)"),
num("Nhập Mật khẩu mới (≥ 6 ký tự, có chữ hoa, chữ thường, số, ký tự đặc biệt)"),
num("Nhập lại Mật khẩu mới để xác nhận"),
num("Click \"Lưu\""),
num("Hệ thống đăng xuất → đăng nhập lại bằng mật khẩu mới"),
warn("Phải nhớ chính xác mật khẩu mới. Nếu quên, liên hệ admin reset."),
h1("4. Cập nhật hồ sơ cá nhân"),
num("Click avatar góc trên phải → \"Hồ sơ của tôi\""),
num("Sửa Họ tên / Chức vụ / Số điện thoại"),
num("Click \"Lưu\""),
note("Email + Phòng ban + Vai trò là read-only, do admin gán. Liên hệ admin nếu cần đổi."),
h1("5. Dashboard - Trang chủ"),
p("Sau khi đăng nhập, Dashboard hiển thị 5 thẻ:"),
bullet("Bản nháp đang soạn — HĐ user là Drafter, ở phase Đang soạn thảo"),
bullet("Chờ tôi duyệt — HĐ ở phase mà role user được duyệt"),
bullet("Sắp đến hạn — HĐ có SLA trong 2 ngày tới"),
bullet("Quá hạn — HĐ đã quá SLA chưa xử lý"),
bullet("Tổng giá trị nháp — tổng giá trị HĐ đang soạn"),
p("Click thẻ → mở danh sách tương ứng."),
h1("6. Sidebar - Menu trái"),
p("Menu 3 cấp:"),
num("Cấp 1: Hợp đồng / Phiếu duyệt NCC / Ngân sách / Báo cáo / ..."),
num("Cấp 2: 7 loại HĐ (Thầu phụ, Giao khoán, NCC, Dịch vụ, Mua bán, Nguyên tắc NCC, Nguyên tắc DV)"),
num("Cấp 3: 3 thao tác (Danh sách / Tạo mới / Duyệt)"),
tip("Click cấp 1 → mở rộng. Khi mở 1 nhóm, các nhóm khác tự đóng."),
h1("7. Chuông thông báo"),
p("Icon chuông góc trên phải. Badge số đỏ = số notification chưa đọc."),
num("Click chuông → popup 10 notification mới nhất"),
num("Click 1 notification → đánh dấu đã đọc + chuyển đến trang HĐ liên quan"),
num("Click \"Đánh dấu tất cả đã đọc\" để clear badge"),
note("Notification mới đẩy realtime — không cần refresh trang."),
h1("8. Đăng xuất"),
num("Click avatar góc trên phải"),
num("Click \"Đăng xuất\""),
p("Hệ thống clear session, chuyển về trang Đăng nhập."),
h1("9. Khi gặp lỗi"),
bullet("Sai mật khẩu nhiều lần → tài khoản bị khóa 30 phút (auto unlock)"),
bullet("Trang trắng / không response → Ctrl + Shift + R (hard refresh)"),
bullet("Sidebar trống → liên hệ admin xác nhận quyền"),
bullet("Lỗi không tự xử lý → email admin@solutions.com.vn kèm screenshot + URL"),
];
const doc = buildDoc(
"User Manual - 01 Bắt đầu",
"SOLUTION_ERP - User Manual - 01 Bắt đầu",
children,
);
const outPath = path.join(__dirname, 'user', '01-Bat-dau.docx');
Packer.toBuffer(doc).then(buf => {
fs.writeFileSync(outPath, buf);
console.log('✅ Generated:', outPath);
console.log(' Size:', (buf.length / 1024).toFixed(1) + ' KB');
});