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>
95 lines
4.5 KiB
JavaScript
95 lines
4.5 KiB
JavaScript
// User Manual 03 — Duyệt Workflow (9 phase + 2-stage approval + smart reject)
|
|
// Style: end-user friendly — các bước duyệt cơ bả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 Duyệt Workflow",
|
|
"Phần 03: 9 phase HĐ + 2-cấp duyệt phòng ban + Từ chối/Trình lại",
|
|
),
|
|
|
|
h1("1. 9 phase quy trình"),
|
|
num("Đang chọn — chưa khởi tạo"),
|
|
num("Đang soạn thảo — Drafter đang soạn"),
|
|
num("Đang góp ý — các phòng ban góp ý song song"),
|
|
num("Đang đàm phán — đàm phán với NCC/NTP"),
|
|
num("Đang in ký — in nháp, ký nháp"),
|
|
num("Đang kiểm tra CCM — CCM kiểm tra (skip với HĐ Bypass)"),
|
|
num("Đang trình ký — BOD trình ký"),
|
|
num("Đang đóng dấu — HRA đóng dấu (mã HĐ tự gen)"),
|
|
num("Đã phát hành — HĐ phát hành chính thức"),
|
|
bullet("Từ chối — bị reject, Drafter có thể sửa và trình lại"),
|
|
|
|
h1("2. Inbox - HĐ chờ tôi duyệt"),
|
|
num("Mở /inbox hoặc Sidebar → \"Hộp thư\""),
|
|
num("Panel trái: danh sách HĐ chờ vai trò bạn duyệt"),
|
|
num("Click 1 HĐ → Panel giữa hiện chi tiết, Panel phải hiện Quy trình"),
|
|
|
|
h1("3. Duyệt 1 HĐ"),
|
|
num("Mở HĐ trong Inbox"),
|
|
num("Đọc kỹ: Header / Chi tiết / Đính kèm / Bình luận"),
|
|
num("Panel Quy trình bên phải → click nút \"Trình → [phase tiếp theo]\""),
|
|
num("(Tùy chọn) Nhập ghi chú duyệt"),
|
|
num("Click \"Xác nhận\""),
|
|
p("HĐ chuyển sang phase mới, Drafter + role kế tiếp nhận notification."),
|
|
|
|
h1("4. Duyệt 2-cấp phòng ban (mới)"),
|
|
p("Khi vai trò bạn thuộc phòng ban (ví dụ NV.PRO), quy trình duyệt 2 cấp:"),
|
|
num("Bạn (NV) duyệt → ghi nhận \"Review\" — phase CHƯA chuyển"),
|
|
num("Trưởng phòng cùng dept (TPB) duyệt → ghi nhận \"Confirm\" — phase chuyển"),
|
|
p("Panel Quy trình hiển thị section \"Tiến trình duyệt 2-cấp phòng ban\":"),
|
|
bullet("Review NV — ai đã review + thời gian + ghi chú"),
|
|
bullet("Confirm TPB — chờ TPB confirm (highlight vàng)"),
|
|
note("Admin có thể bật \"Bypass\" cho 1 NV cụ thể — NV được Confirm trực tiếp, skip Review."),
|
|
|
|
h1("5. Từ chối (Reject)"),
|
|
num("Mở HĐ trong Inbox"),
|
|
num("Panel Quy trình → click nút \"Trình → Từ chối\""),
|
|
num("Nhập lý do từ chối (bắt buộc)"),
|
|
num("Click \"Xác nhận\""),
|
|
p("HĐ tự động về phase Đang soạn thảo. Drafter sửa rồi trình lại."),
|
|
|
|
h1("6. Trình lại sau khi sửa (Resume)"),
|
|
num("Drafter mở HĐ ở Đang soạn thảo (sau reject)"),
|
|
num("Sửa Header / Chi tiết theo góp ý"),
|
|
num("Panel Quy trình → click \"Trình → [phase tiếp theo]\""),
|
|
num("Click \"Xác nhận\""),
|
|
note("Hệ thống tự nhảy về phase đã reject (không cần đi lại từ đầu)."),
|
|
|
|
h1("7. Comment / Góp ý"),
|
|
num("Mở HĐ → tab \"Bình luận\""),
|
|
num("Nhập nội dung"),
|
|
num("Click \"Gửi\""),
|
|
p("Comment KHÔNG ảnh hưởng phase — chỉ thông tin cho team."),
|
|
|
|
h1("8. SLA - Hạn xử lý"),
|
|
bullet("Mỗi phase có SLA mặc định (1-7 ngày tùy phase)"),
|
|
bullet("Khi sắp hết hạn (còn 20%), Drafter nhận notification cảnh báo"),
|
|
bullet("Hết hạn → hệ thống tự auto-approve (qua phase tiếp theo)"),
|
|
tip("Inbox có badge đỏ \"Quá hạn\" để ưu tiên xử lý."),
|
|
|
|
h1("9. Lịch sử duyệt"),
|
|
num("Mở HĐ → Panel phải → cuộn xuống section \"Lịch sử duyệt\""),
|
|
p("Hiển thị từng lần chuyển phase: ai duyệt, từ phase nào → phase nào, ghi chú, thời gian."),
|
|
|
|
h1("10. Quy tắc đặc biệt"),
|
|
bullet("Admin có quyền duyệt mọi phase (skip role check + 2-stage)"),
|
|
bullet("HĐ Dịch vụ / Mua bán / Nguyên tắc bypass phase Kiểm tra CCM"),
|
|
bullet("Sau Đang đóng dấu, HĐ KHÔNG sửa được nữa — chỉ xem"),
|
|
];
|
|
|
|
const doc = buildDoc(
|
|
"User Manual - 03 Duyệt Workflow",
|
|
"SOLUTION_ERP - User Manual - 03 Duyệt Workflow",
|
|
children,
|
|
);
|
|
|
|
const outPath = path.join(__dirname, 'user', '03-Duyet-Workflow.docx');
|
|
Packer.toBuffer(doc).then(buf => {
|
|
fs.writeFileSync(outPath, buf);
|
|
console.log('✅ Generated:', outPath);
|
|
console.log(' Size:', (buf.length / 1024).toFixed(1) + ' KB');
|
|
});
|