| Mã | Chức năng | Loại | Vai trò | Ghi chú |
| TASK-01 | Xem kanban 4 cột (todo/in_progress/review/done) | Cơ bản | User có quyền tasks | dnd-kit kéo-thả |
| TASK-02 | Xem bảng tanstack (sort đa cột, filter) | Cơ bản | User | Sort 7 cột |
| TASK-03 | Lọc theo dự án / giải pháp (gp:*) | Cơ bản | User | Checkbox multi-select |
| TASK-04 | Sửa nhanh (inline) ưu tiên/phụ trách/hạn ngay trên dòng | Cơ bản | User | Gọi thẳng updateTask |
| TASK-05 | Mở PreviewSheet xem/sửa chi tiết task | Cơ bản | User | Deep-link ?record=<id> |
| TASK-06 | Bulk action (chọn nhiều → gán/xoá/đổi trạng thái hàng loạt) | Khác | User | |
| TASK-07 | Xem Backlog (task archived) | Cơ bản | User | |
| TASK-08 | Nhập CSV danh sách công việc | Khác | User | lib/csv.ts parser tự viết |
| TASK-09 | Lưu view đã lọc (Saved views) | Khác | User | localStorage erp-saved-views:tasks |
| TASK-10 | Trang chi tiết đầy đủ /tasks/[id] | Cơ bản | User | Rail 20rem field panel + tab theo ?section= |
| TASK-11 | Việc con (subtasks) — thêm/tick hoàn thành | Cơ bản | User | |
| TASK-12 | Đính kèm tài liệu (links) | Cơ bản | User | |
| TASK-13 | Gắn tag tự do + viec:* | Cơ bản | User | |
| TASK-14 | Bình luận + @mention trên task | Workflow | User | Review layer |
| TASK-15 | Scope dữ liệu member: chỉ thấy task assigneeId = mình | Cơ bản | Member | Client-side, xem trang Vai trò |
| Mã | Chức năng | Loại | Vai trò | Ghi chú |
| CRM-01 | Xem bảng đối tác (tanstack) | Cơ bản | User có quyền crm | |
| CRM-02 | Lọc theo giải pháp (gp:*) + ngành (nganh:*) | Cơ bản | User | |
| CRM-03 | Panel chi tiết 4 tab: Tổng quan/Dự án/Tương tác/Ghi chú | Cơ bản | User | |
| CRM-04 | Sửa inline từng field trong panel | Cơ bản | User | |
| CRM-05 | Nhãn giai đoạn theo ngữ cảnh (quan hệ đối tác vs bán hàng dự án, cùng 7 key dealStage) | Cơ bản | User | |
| CRM-06 | Card "Dự án của đối tác": gán / gỡ dự án | Cơ bản | User | Ràng buộc 1 dự án — 1 đối tác |
| CRM-07 | Xoá đối tác (kèm cảnh báo số dự án/công việc đang gắn) | Cơ bản | User | ConfirmDialog |
| CRM-08 | Bulk gán phụ trách / gán tag hàng loạt | Khác | User | |
| CRM-09 | Win/Lost modal (đóng deal) | Workflow | User | |
| CRM-10 | Ghi nhận tương tác (Activity: call/zalo/email/meeting/note) + @mention | Cơ bản | User | Quick-add trong tab Tương tác |
| CRM-11 | Xem Giá trị hợp đồng (rollup Σ dự án, đọc-only) | Cơ bản | User | Thay dealValue nhập tay |
| CRM-12 | Nhập CSV danh bạ | Khác | User | contact-import |
| CRM-13 | Lưu view đã lọc (Saved views) | Khác | User | |
| CRM-14 | Trang chi tiết đầy đủ /crm/[id] | Cơ bản | User | |
| CRM-15 | Đồng bộ HubSpot (xem trước dry-run → đồng bộ thật) | Khác | Admin | /api/hubspot/sync |
| CRM-16 | Import contact từ Zalo (chống trùng phone/tên) | Khác | User | |
| Mã | Chức năng | Loại | Vai trò | Ghi chú |
| PRJ-01 | 3 chế độ xem: Bảng / Phễu bán hàng / Lưới thẻ | Cơ bản | User có quyền projects | Cùng 1 table instance |
| PRJ-02 | Phễu 7 cột dealStage, kéo-thả đổi giai đoạn | Cơ bản | User | Hiện tổng giá trị/cột |
| PRJ-03 | Bảng inline-edit 10 cột | Cơ bản | User | |
| PRJ-04 | Filter bar (đối tác/giai đoạn/trạng thái/ưu tiên/giải pháp) | Cơ bản | User | |
| PRJ-05 | Sort 9 cột trên bảng | Cơ bản | User | |
| PRJ-06 | Modal sửa trường deal (dealValue/dealStage) | Cơ bản | User | |
| PRJ-07 | Panel chi tiết Tabs: Tổng quan/Công việc/Tài liệu | Cơ bản | User | |
| PRJ-08 | Dự án nội bộ (không vào phễu) — sentinel NO_STAGE | Cơ bản | User | |
| PRJ-09 | Trang chi tiết đầy đủ /projects/[id] | Cơ bản | User | |
| PRJ-10 | Scope dữ liệu member: theo memberIds hoặc có task của mình | Cơ bản | Member | |
| Mã | Chức năng | Loại | Vai trò | Ghi chú |
| INV-01 | Xem bảng hoá đơn (lọc theo status) | Cơ bản | User có quyền invoices | |
| INV-02 | Tạo hoá đơn mới, thêm dòng hàng hoá (line-items) | Cơ bản | User | Sửa inline commit-on-blur |
| INV-03 | Đánh dấu đã thanh toán | Cơ bản | User | ConfirmDialog → markInvoicePaid |
| INV-04 | Bulk chuyển trạng thái draft → sent | Khác | User | Duy nhất trong các bulk action hoá đơn |
| INV-05 | Xuất bản in hoá đơn | Khác | User | Tái dùng #invoice-print qua ?print= |
| INV-06 | Quét hoá đơn OCR (ScanInvoiceModal) | Workflow | User | Nguồn CTC gốc |
| INV-07 | Card "Hoá đơn quá hạn" (daysOverdue>0) | Cơ bản | User | Đếm cả status=sent quá hạn, không chỉ overdue |
| INV-08 | Sửa hoá đơn đã tạo (modal prefill toàn bộ form) | Cơ bản | User | |
| Mã | Chức năng | Loại | Vai trò | Ghi chú |
| BC-01 | Quản lý NCC (Vendor) theo chiến dịch | Cơ bản | User có quyền budget | |
| BC-02 | Ghi nhận thanh toán NCC + duyệt (VendorPayment) | Workflow | User | |
| BC-03 | Nghiệm thu vượt hợp đồng (overage) + duyệt CĐT | Workflow | User | |
| BC-04 | Cấu hình ngân sách "Lớp A" (percent/reserve) | Cơ bản | User | |
| BC-05 | Quản lý thông điệp chính (KeyMessage) + duyệt + xử lý xung đột (KeyConflict) | Workflow | User | |
| BC-06 | Quản lý nội dung (ContentItem) qua vòng brief (ContentBrief) → duyệt → đăng → nghiệm thu | Workflow | User | 7 trạng thái ContentStatus |
| BC-07 | Nhật ký thay đổi (BcChange) — trích dẫn before/after | Khác | User | Kiểu NotebookLM |
Hệ thống tự động hoá No-Code tích hợp sẵn, cho phép nhân sự tự xây dựng các kịch bản "Khi sự kiện X → Nếu điều kiện Y → Làm hành động Z" bằng giao diện kéo-thả React Flow mà không cần viết mã. Engine chạy phân tán ở client-side với cơ chế chống bắn lặp 3 lớp.
| Mã | Chức năng | Loại | Vai trò | Ghi chú & Ràng buộc kỹ thuật |
| WF-01 | Quản lý danh sách Workflow | Cơ bản | Mọi user | Xem danh sách quy trình mình sở hữu hoặc được chia sẻ qua shared_with[]. |
| WF-0a | Trợ lý ngoài dựng quy trình nháp | Workflow | Chủ khoá API | Mới 03/09. POST /api/agent/action action tao_quy_trinh. Quy trình tạo ra luôn TẮT — nó chạy nền và ghi vào dữ liệu thật, nên bật là việc của người sau khi đọc. Cần phân hệ workflows. |
| WF-0b | Không còn bị tắt lặng lẽ | Quản trị | — | Vá 03/09. POST /api/workflows từng viết active: !!p.active, nên lời gọi nào không kèm active đều bị hiểu là lệnh tắt: đổi tên hay sửa mô tả là quy trình đang chạy dừng hẳn, không ai biết và không có gì trong nhật ký. Nay active chỉ đổi khi người gọi thực sự gửi trường đó; tạo mới vẫn mặc định TẮT. Có thêm nhật ký [workflows] ghi ai tạo/sửa và có đổi bật/tắt không. |
| WF-02 | Visual Canvas Builder (@xyflow/react) | Workflow | User sở hữu | Thiết kế quy trình trên canvas kéo-thả Node: Trigger → Condition → Action; route /workflows/[id]. |
| WF-03 | Cơ chế Kích hoạt Trigger đa nguồn | Engine | Tự động | 2 loại: status_change (diff realtime trong store) và daily_scan (quét tự động mỗi 30 phút). |
| WF-04 | Bộ lọc điều kiện (Condition Filtering) | Engine | Tự động | Lọc logic AND: toán tử eq, neq, has (cho trường tags). |
| WF-05 | Thực thi chuỗi 5 loại Action | Engine | Tự động | 3 nội bộ: create_task (hỗ trợ template {name}, {entity}), notify, set_field; 2 relay ngoài: send_telegram, send_gws. |
| WF-06 | Cơ chế Chống bắn lặp 3 lớp (Anti-Loop Guard) | Engine | Tự động | Lớp 1: Fired-key deduplication (user_data); Lớp 2: Gắn tag ẩn wf:<id>:<key>; Lớp 3: Kiểm tra giá trị trước khi set. |
| WF-07 | Lịch sử thực thi & Audit (Workflow Runs) | Cơ bản | User | Tab Lượt chạy: Ghi nhận log từng lần chạy lên server qua POST /api/workflow-runs (success/error). |
| WF-08 | Quản lý Phiên bản (Versioning Engine) | Workflow | User | Tab Phiên bản: Server tự động snapshot lưu 10 phiên bản gần nhất mỗi khi định nghĩa workflow thay đổi. |
| WF-09 | Chia sẻ & Phân quyền chỉ-xem (Viewer) | Khác | User sở hữu | Chia sẻ quy trình cho đồng nghiệp; người nhận có quyền xem và nhân bản (Duplicate), không có quyền sửa bản gốc. |
| WF-10 | Đấu nối Webhook Relay (Telegram & GWS) | Bảo mật | User | Relay qua /api/me/relay/telegram và /api/me/relay/gws (chỉ gửi domain Whitelist: script.google.com, chat.googleapis.com, zapier, telegram). |
| WF-11 | 5 Mẫu quy trình dựng sẵn (Templates W1-W5) | Khác | User | W1: Chốt deal sinh task kickoff · W2: Task review nhắc QA · W3: Hoá đơn quá hạn nhắc nợ · W4: Cảnh báo task ngâm lâu · W5: Bắn tin Telegram chốt hợp đồng. |
Hệ thống quản trị tri thức và chuẩn hoá quy trình thao tác chuẩn (SOP - Standard Operating Procedure) cho 6 lĩnh vực: Sales, Content, Tech, Ops, Finance và Other. Mỗi kỹ năng là một cẩm nang hành động gồm các bước tuần tự, checklist nghiệm thu và tài liệu đính kèm.
| Mã | Chức năng | Loại | Vai trò | Ghi chú & Ràng buộc kỹ thuật |
| SKL-01 | Xem bảng danh bạ Kỹ năng (Tanstack Table) | Cơ bản | Mọi user | Lọc theo danh mục (6 category), tìm kiếm không dấu, xem kỹ năng cá nhân và kỹ năng toàn công ty. |
| SKL-02 | Biên soạn Kỹ năng (Skill Panel 2 tab) | Cơ bản | User sở hữu | Tab 1 Nội dung: summary, các bước steps[], checklist[], resources[], tags[]; Tab 2 Phiên bản: xem lịch sử thay đổi. |
| SKL-03 | Nhập từ file Markdown (Markdown Importer) | Workflow | User | Tự động bóc tách file .md: H1 → Tên kỹ năng, Text đầu → Tóm tắt, H2 → Các bước steps, Checkbox - [ ] → checklist. Hỗ trợ 2 chế độ: Tạo mới hoặc Điền vào form đang mở. |
| SKL-04 | Chia sẻ cho đồng nghiệp — ba mức: Không · Xem · Sửa | Quản trị | Chủ sở hữu | Đổi 03/09. Mỗi người đúng một mức. Xem (skills.shared_with) = đọc và nhân bản. Sửa (cột mới skills.shared_edit) = sửa được nội dung nhưng KHÔNG đổi được chia sẻ, KHÔNG phát hành, KHÔNG xoá — quyền sửa không kéo theo quyền phát cho người khác, nếu không thì một lần cấp là mất kiểm soát cả chuỗi. Server chốt lại ở POST /api/skills: người không phải chủ gửi sharedWith/sharedEdit/published lên thì bị bỏ qua lặng lẽ. Tách hai cột thay vì đoán ý bản ghi cũ: mọi chia sẻ trước 03/09 đều là chỉ-xem, đúng như nó vốn thế. |
| SKL-04b | Vòng đời nội dung & phát hành toàn team | Quản trị | Chủ sở hữu | published (mọi thành viên xem được) và status (draft · active · archived) là hai cờ độc lập — phạm vi xem và vòng đời nội dung, hệ thống chỉ nhắc nhẹ chứ không ép đồng bộ. |
| SKL-05 | Lịch sử phiên bản tự động (20 versions) | Workflow | User | Server tự động đẩy snapshot vào versions[] khi nội dung def thay đổi, giữ 20 phiên bản gần nhất, hỗ trợ so sánh và khôi phục. |
| SKL-06 | Nhân bản Kỹ năng (Clone / Duplicate) | Cơ bản | User | Nhân bản từ kỹ năng dùng chung hoặc kỹ năng được chia sẻ thành bản sao cá nhân để tuỳ biến riêng. |
| SKL-07 | Bulk Action: Phát hành / Thu hồi / Xoá hàng loạt | Khác | User sở hữu | Thao tác nhanh trên nhiều kỹ năng cùng lúc (chỉ áp dụng với các mục do mình làm chủ). |
| SKL-08 | Phát hành kỹ năng cho trợ lý của từng người | Quản trị | Chủ sở hữu | Mới 03/09. Việc khác hẳn SKL-04, dễ lẫn nên nói rõ: kỹ năng là quy trình cho trợ lý AI làm theo, nó chỉ có tác dụng khi nằm trong bot_api_keys.skill_ids — agent cầm khoá đó mới biết kỹ năng. Chia sẻ cho một người không làm trợ lý của họ biết kỹ năng, và ngược lại. Giao diện tích theo từng khoá API qua GET/POST /api/api-keys/by-skill; ai chưa có khoá thì hiện tách riêng kèm nhắc cấp khoá ở Cài đặt → Khoá API. |
| SKL-09 | Trợ lý ngoài dựng kỹ năng nháp | Workflow | Chủ khoá API | Mới 03/09. Trợ lý gọi POST /api/agent/action action tao_ky_nang, tham số là chuỗi JSON. Chỉ TẠO MỚI và luôn ở trạng thái draft; không sửa bản có sẵn, không xoá, không chia sẻ, không phát hành. Chủ sở hữu ép theo scope_user_id trong khoá, không tin gì trợ lý gửi lên. Hạn 40 bản nháp/người/24 giờ. |
Kênh tiếp nhận và phê duyệt chính thức mọi đề xuất tạo mới hoặc sửa đổi Quy trình tự động và Sổ tay Kỹ năng trong doanh nghiệp, thay thế cho việc báo miệng hoặc chat rời rạc.
| Mã | Chức năng | Loại | Vai trò | Ghi chú & Ràng buộc kỹ thuật |
| REQ-01 | Gửi yêu cầu phát triển (Dev Request) | Cơ bản | Mọi nhân sự | Chọn loại kind (workflow hoặc skill), tiêu đề, nội dung mô tả (hỗ trợ @mention), và chọn đối tượng liên quan targetId nếu là sửa đổi. |
| REQ-02 | Chỉnh sửa nội dung yêu cầu | Cơ bản | Người gửi | Ràng buộc an toàn: Chỉ được phép chỉnh sửa tiêu đề/nội dung khi yêu cầu đang ở trạng thái status = 'new'. |
| REQ-03 | Quy trình Phê duyệt 5 trạng thái (Admin Only) | Workflow | Admin / BOD | Chuyển trạng thái: new → reviewing → approved / rejected → released qua endpoint bảo vệ POST /api/requests/review. |
| REQ-04 | Ghi chú duyệt & Gắn phiên bản phát hành | Workflow | Admin | Admin nhập reviewNote (thông báo tới người gửi) và điền releasedVersion (ví dụ: v1.2) khi phát hành chính thức. |
| REQ-05 | Timeline truy vết vòng đời yêu cầu | Cơ bản | Mọi nhân sự | Hiển thị trực quan tiến độ xử lý từ lúc gửi → đang xem xét → đã duyệt → phiên bản phát hành trên giao diện. |
| Mã | Chức năng | Loại | Vai trò | Ghi chú |
| DASH-01 | 4 KPI tổng quan | Cơ bản | User có quyền dashboard | |
| DASH-02 | Card Tỷ trọng — chọn 1 trong 3 donut (ngân sách giải pháp / khối lượng việc / ngân sách ngành) | Cơ bản | User | Hover/tap hiện chi tiết giữa donut |
| DASH-03 | Card Công việc lọc theo cá nhân | Cơ bản | User | |
| DASH-04 | Đối tác theo ngành (số lượng/doanh thu) | Cơ bản | User | |
| ANA-01 | Phân tích cá nhân: 5 KPI, bar 8 tuần, donut viec:*, việc sắp đến hạn | Cơ bản | User có quyền tasks | Route /analytics |
| ANA-02 | Chọn xem thành viên khác | Cơ bản | Admin | |
| ANA-03 | Khối "Toàn đội": so sánh 7 người, badge Quá tải, stacked bar, panel Sales-90, AR quá hạn | Khác | Admin | |
| Mã | Chức năng | Loại | Vai trò | Ghi chú |
| SYS-01 | Xem nhật ký hệ thống (revision, thay đổi) | Cơ bản | User có quyền system-log | |
| SET-01 | Sửa thông tin công ty (AppSettings) | Cơ bản | Admin | |
| SET-02 | Quản lý người dùng & phân quyền (CRUD tài khoản, gán module) | Cơ bản | Admin | /api/admin/users |
| SET-03 | Tab Kết nối Zalo | Khác | Admin | |
| SET-04 | Tab Khoá API | Quản trị | Admin · owner để cấp cho người khác | Cấp/thu hồi khoá cho trợ lý ngoài. Bản rõ hiện một lần. Danh sách hiện phạm vi (khoá chạy dưới danh nghĩa ai) và thời điểm dùng lần cuối — cột đó là cách nhanh nhất để biết một trợ lý có thật sự gọi vào ERP hay không. |
| SET-05 | Tab Quy trình tự động (cấu hình engine) | Quản trị | Admin | Chọn engine chạy phía server hay phía client cho tenant. |
| SET-06 | Hình nền riêng — tải ảnh từ máy | Cơ bản | Mọi user | Mới 03/09. Ngoài thư viện ảnh có sẵn và ô dán URL, nay chọn được ảnh từ thiết bị: nút chọn tệp hoặc kéo thả, POST /api/wallpaper (multipart, tối đa 8MB, jpg/png/webp/gif/avif). Ảnh chỉ chính chủ xem được — đường GET /api/wallpaper/<tệp> kiểm tên tệp có mang id của người đang đăng nhập, kể cả admin cũng không xem được ảnh người khác. Giữ 3 tệp gần nhất mỗi người rồi tự dọn. Không nhúng data URL vì cấu hình hình nền đồng bộ mỗi lần đổi — vài MB base64 ở đó là làm nặng mọi lượt đồng bộ, mãi mãi. |
| SET-07 | Đặt ảnh riêng cho chế độ Ngày và Đêm | Cơ bản | Mọi user | Chọn áp dụng cho Cả hai / Ngày / Đêm, kèm thanh trượt độ mờ và độ phủ để chữ dễ đọc. Lưu theo tài khoản nên mọi thiết bị dùng chung. |
| ACC-01 | Sửa hồ sơ cá nhân | Cơ bản | Mọi user | /account |
| ACC-02 | Đổi mật khẩu (rate-limit 5/10 phút) | Cơ bản | Mọi user | /api/me/password |
| ACC-03 | Cấu hình tuỳ chọn thông báo | Cơ bản | Mọi user | |
| SRC-01 | Tìm kiếm toàn cục ⌘K (bỏ dấu, nhóm theo phần, tôn trọng quyền) | Cơ bản | User | |
| SRC-02 | Trang kết quả /search đầy đủ | Cơ bản | User | |
| HLP-01 | Hướng dẫn 4 tab + sơ đồ hệ thống (React Flow, 17 node) + FAQ | Cơ bản | Mọi user | |
| AUTH-01 | Đăng nhập (email/username + mật khẩu) | Cơ bản | Mọi user | /api/login, layout 2 cột kính mờ |
| AUTH-02 | Đăng xuất | Cơ bản | Mọi user | /api/logout |