Tài khoản & Phân quyền
Nền tảng quản lý người dùng, đăng nhập và phân quyền truy cập cho toàn bộ hệ thống FieldFlow. Module đầu tiên cần triển khai — mọi module khác đều phụ thuộc.
Module Core làm gì?
Trả lời 3 câu hỏi cốt lõi trước khi dùng hệ thống:
Quản lý tài khoản — tạo, khóa, phân quyền người dùng. Mỗi người có 1 tài khoản duy nhất.
Đăng nhập bằng SĐT/Email + mật khẩu. Xác thực danh tính mỗi lần truy cập.
Phân quyền theo vai trò — mỗi người chỉ thấy và thao tác những gì cần thiết cho công việc.
Mỗi người chỉ thấy và làm những gì cần thiết cho công việc của họ. Không thấy chức năng không liên quan.
Ai dùng hệ thống?
Hệ thống chia 6 vai trò, mỗi vai trò có quyền hạn khác nhau:
Quản trị hệ thống
Quyền cao nhất. IT support, đơn vị triển khai.
Giám đốc / Quản lý
Toàn quyền trong công ty. Quản lý NV, cài đặt, báo cáo.
Giám sát
Quản lý đội ngũ, duyệt đơn, giám sát tuyến.
Nhân viên chung
Vai trò cơ bản. Chỉ chấm công + xem profile.
NV thị trường
Đi tuyến, check-in GPS, tạo đơn, nhập tồn kho.
NV kho
Quản lý kho, nhập/xuất hàng, kiểm kê.
Ví dụ thực tế: Công ty ABC (20 NV)
| Vai trò | Ai? | Công việc hàng ngày | Nền tảng |
|---|---|---|---|
| Admin | Anh Minh (IT) | Quản lý hệ thống, backup, xử lý lỗi | Web |
| Manager | Chị Lan (Giám đốc) | Xem báo cáo, quản lý NV, cài đặt | Web |
| Supervisor | Anh Hùng + Chị Ngọc | Theo dõi đội ngũ, duyệt đơn, quản lý tuyến | Web + Mobile |
| Staff | 3 NV mới / văn phòng | Chấm công, xem thông tin cá nhân | Mobile |
| Sales Rep | 10 NV bán hàng | Đi tuyến 8-10 điểm/ngày, check-in, tạo đơn | Mobile |
| Warehouse | 3 NV kho | Nhập/xuất hàng, kiểm kê, quản lý NVL | Web + Mobile |
Entity & Thông tin lưu trữ
Module Core quản lý 2 entity chính: Công ty và Người dùng.
erDiagram
Company ||--o{ User : "1:N (một công ty có nhiều NV)"
User ||--o{ Session : "1:N (mỗi thiết bị = 1 phiên)"
Company {
text name "Tên công ty ✱"
text address "Địa chỉ ✱"
text industry "FMCG / Dược / VLXD ✱"
text logo_url "Logo"
text phone "SĐT liên hệ"
text email "Email liên hệ"
}
User {
text full_name "Họ tên đầy đủ ✱"
text phone "SĐT đăng nhập ✱"
text email "Email (thay thế)"
text password_hash "Mật khẩu ✱"
text role "6 vai trò ✱"
text is_active "Hoạt động / Khóa ✱"
text fcm_token "Token push notification"
text last_login_at "Lần login cuối"
}
Session {
text device_name "Tên thiết bị"
text ip_address "Địa chỉ IP"
text expires_at "Thời điểm hết hạn"
}
Chi tiết thông tin Người dùng
Thông tin bắt buộc (khi tạo mới)
| Trường | Ví dụ | Ghi chú |
|---|---|---|
| Họ tên đầy đủ | Nguyễn Văn A | Hiển thị trên app/dashboard |
| Số điện thoại | 0901234567 | Dùng đăng nhập. Phải duy nhất trong công ty |
| Mật khẩu | Abc@12345 | Tạo mặc định, NV tự đổi sau |
| Vai trò | Sales Rep | Quyết định quyền truy cập |
| Trạng thái | Đang hoạt động | Hoặc "Tạm khóa" |
Thông tin tùy chọn
| Trường | Ví dụ | Ghi chú |
|---|---|---|
| nva@company.com | Thay thế SĐT để đăng nhập | |
| Ghi chú | "NV khu vực Quận 1" | Ghi chú nội bộ |
Thông tin bổ sung (Phase 2+)
| Trường | Ví dụ | Phase |
|---|---|---|
| Ảnh đại diện | avatar.jpg | Phase 2 |
| Mã nhân viên | NV-001 | Phase 2 |
| Bộ phận | Kinh doanh | Phase 3 |
| Ai tạo tài khoản | Manager Lan | Phase 2 |
Trạng thái tài khoản
Đăng nhập và sử dụng bình thường
Không đăng nhập được. Dữ liệu vẫn giữ.
Ẩn khỏi danh sách. Lịch sử vẫn còn để tra cứu.
Ai được làm gì?
✅ = Được dùng | 👁️ = Chỉ xem | ✏️ = Tạo/Sửa | — = Không truy cập
| Chức năng | 🔴 Admin | 🟡 Manager | 🔵 Supervisor | ⚪ Staff | 🟢 Sales Rep | 🟠 Warehouse |
|---|---|---|---|---|---|---|
| 🔐 Tài khoản & Cài đặt | ||||||
| Quản lý nhân viên (tạo/xóa/khóa) | ✅ | ✅ | — | — | — | — |
| Xem danh sách nhân viên | ✅ | ✅ | 👁️ | — | — | — |
| Cài đặt hệ thống | ✅ | ✅ | — | — | — | — |
| Quản lý sản phẩm | ✅ | ✅ | — | — | — | — |
| Xem danh mục sản phẩm | ✅ | ✅ | 👁️ | 👁️ | 👁️ | 👁️ |
| Xem/sửa thông tin cá nhân | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 📦 Phân phối (DMS) | ||||||
| Dashboard tổng quan | ✅ | ✅ | ✅ | — | — | — |
| Quản lý điểm bán | ✅ | ✅ | ✏️ | — | 👁️ | — |
| Thêm điểm bán mới (chờ duyệt) | ✅ | ✅ | ✏️ | — | ✏️ | — |
| Duyệt điểm bán mới | ✅ | ✅ | ✅ | — | — | — |
| Quản lý tuyến bán | ✅ | ✅ | ✏️ | — | 👁️ | — |
| Check-in tại điểm bán (GPS) | — | — | — | — | ✅ | — |
| Xem lịch sử ghé thăm | ✅ | ✅ | ✅ | — | 👁️ | — |
| Tạo đơn hàng | — | — | — | — | ✏️ | — |
| Duyệt đơn hàng | ✅ | ✅ | ✅ | — | — | — |
| Xem đơn hàng | ✅ | ✅ | ✅ | — | 👁️ | 👁️ |
| Theo dõi GPS nhân viên | ✅ | ✅ | ✅ | — | — | — |
| 🏭 Kho hàng (Inventory) | ||||||
| Quản lý kho | ✅ | ✅ | — | — | — | ✅ |
| Xem tồn kho | ✅ | ✅ | 👁️ | — | — | 👁️ |
| Nhập / Xuất kho | ✅ | ✅ | — | — | — | ✏️ |
| ⏰ Chấm công (Attendance) | ||||||
| Chấm công (check-in/out) | — | — | — | ✅ | ✅ | ✅ |
| Xem bảng công | ✅ | ✅ | ✅ | 👁️ | — | — |
| Quản lý ca / Lịch làm việc | ✅ | ✅ | ✏️ | — | — | — |
| 📊 Báo cáo (Reports) | ||||||
| Báo cáo doanh số | ✅ | ✅ | ✅ | — | — | — |
| Báo cáo tồn kho | ✅ | ✅ | ✅ | — | — | ✅ |
| Báo cáo chấm công | ✅ | ✅ | ✅ | 👁️ | — | — |
| Báo cáo hiệu suất NV | ✅ | ✅ | ✅ | — | — | — |
| Xuất báo cáo (Excel/PDF) | ✅ | ✅ | ✅ | — | — | — |
4 Quy trình nghiệp vụ chính
Flow 1: Đăng nhập
Nhập SĐT (hoặc email)
Ít nhất 8 ký tự
Hệ thống kiểm tra
Màn hình theo vai trò
Mỗi người đăng nhập tối đa 5 thiết bị. Không dùng 7 ngày → phải đăng nhập lại.
Flow 2: Quản lý tạo tài khoản NV mới
"Thêm nhân viên"
Tên + SĐT + MK + Vai trò
SĐT không trùng
Gửi SĐT + MK cho NV
Flow 3: Reset mật khẩu cho nhân viên
Từ danh sách
Nhập MK mới hoặc tự tạo
NV bị đăng xuất mọi thiết bị
Gửi MK mới cho NV
Flow 4: Đổi mật khẩu (tự làm)
Nhập MK hiện tại
8+ ký tự, có hoa + thường + số
Nhập lại MK mới
Đăng xuất thiết bị khác
3 Phase: MVP → Nâng cao → Đầy đủ
gantt
title Lộ trình Module Core
dateFormat WW
axisFormat Tuần %U
section MVP (Phase 1)
Đăng nhập SĐT/Email + MK :m1, 01, 2w
6 vai trò phân quyền :m2, 01, 1w
Quản lý NV (tạo/khóa/reset) :m3, 01, 2w
Session management :m4, 01, 1w
Trang đăng nhập + quản lý NV :m5, 02, 2w
section Nâng cao (Phase 2)
Push notification :p1, 08, 1w
OTP quên mật khẩu :p2, 08, 1w
Lịch sử hoạt động (audit) :p3, 09, 1w
Giả danh (impersonate) :p4, 09, 1w
Trang cá nhân NV :p5, 09, 1w
section Đầy đủ (Phase 3)
Tự tạo vai trò dynamic :f1, 22, 2w
Xác thực 2 lớp (2FA) :f2, 23, 1w
Đăng nhập sinh trắc học :f3, 23, 1w
Đăng nhập Google/OAuth :f4, 24, 1w
Phân quyền theo nhóm :f5, 24, 1w
Chi tiết từng Phase
| # | Chức năng | Mô tả |
|---|---|---|
| 1 | Đăng nhập | SĐT/Email + mật khẩu |
| 2 | Đăng xuất | Đăng xuất khỏi thiết bị hiện tại |
| 3 | Đổi mật khẩu | NV tự đổi |
| 4 | 6 vai trò phân quyền | Admin, Manager, Supervisor, Staff, Sales Rep, Warehouse |
| 5 | Tạo tài khoản NV | Manager/Admin tạo mới |
| 6 | Khóa/Mở khóa NV | Tạm ngưng, không xóa data |
| 7 | Reset mật khẩu | Manager/Admin reset cho NV |
| 8 | Xem danh sách NV | Filter theo vai trò, trạng thái |
| 9 | Gán vai trò | Thay đổi vai trò của NV |
| 10 | Session management | Tối đa 5 thiết bị, hết hạn 7 ngày |
| 11 | Bảo vệ route | Mỗi vai trò chỉ thấy chức năng được phép |
| 12 | Thông tin công ty | Cập nhật tên, địa chỉ, logo |
| 13 | Validation SĐT VN | +84 / 0xx format |
| 14 | Khóa tài khoản tạm thời | Sai MK 5 lần → khóa 15 phút |
| 15 | Trang đăng nhập | Giao diện web + mobile |
- Push notification — Thông báo đẩy qua app
- OTP quên mật khẩu — Gửi mã xác nhận qua SMS
- Trang cá nhân NV — Tự xem và sửa thông tin
- Lịch sử hoạt động — Ghi nhận login, đổi MK, thay vai trò
- Giả danh (Impersonate) — Manager xem hệ thống dưới góc nhìn NV
- Đăng xuất từ xa — Manager đăng xuất NV khỏi thiết bị khác
- Ảnh đại diện — Upload ảnh profile cho NV
- Tự tạo vai trò — Manager tạo vai trò tùy chỉnh, gán quyền từ UI
- Xác thực 2 lớp (2FA) — Bắt buộc cho Admin/Manager
- Đăng nhập sinh trắc học — Vân tay, Face ID
- Đăng nhập Google/GitHub — OAuth providers
- SMS gateway — Tích hợp SpeedSMS/eSMS (local VN)
- Phân quyền theo nhóm — Supervisor chỉ thấy data team mình
- Quản lý bộ phận — Phân NV theo bộ phận
- API keys — Token cho tích hợp hệ thống khác
- Vòng đời tài khoản — Mời → Kích hoạt → Sử dụng → Khóa
- Dashboard audit — Báo cáo hoạt động người dùng
| MVP (Phase 1) | Nâng cao (Phase 2) | Đầy đủ (Phase 3) | |
|---|---|---|---|
| Chức năng | 15 | +7 = 22 | +10 = 32 |
| Đăng nhập | SĐT/Email + MK | + OTP quên MK | + 2FA, sinh trắc học, OAuth |
| Phân quyền | 6 vai trò cố định | Giống MVP | Tự tạo vai trò + dynamic permissions |
| Quản lý NV | Tạo/Khóa/Reset | + Audit log, impersonate | + Bộ phận, API keys, lifecycle |
| Timeline | Tuần 1-2 | Tuần 7-12 | Sau tuần 21 |
Cần xác nhận trước khi triển khai
- 6 vai trò đủ chưa? Cần thêm Kế toán, IT staff?
- Supervisor thấy team mình hay toàn công ty?
- Staff dùng cho ai? NV mới / NV văn phòng / base role?
- SĐT đăng nhập đúng nhu cầu chưa? Cần email không?
- Khóa sau mấy lần sai MK? Đề xuất: 5 lần → 15 phút
- Session hết hạn khi nào? Đề xuất: 7 ngày
- Cần OTP SMS cho MVP không? Hiện tại: chỉ MK
- NV tự đăng ký? Hay chỉ quản lý mới tạo?
- Manager được giả danh NV? Xem app từ góc nhìn NV
- Đăng xuất từ xa cần không? Khi NV mất điện thoại
- SMS gateway? SpeedSMS (VN, rẻ) / Twilio / Không cần MVP
- Thông tin bắt buộc khi tạo NV? Chỉ: tên + SĐT + MK + vai trò?
FieldFlow — Core Module: Tài khoản & Phân quyền — Tháng 6/2026
← Quay lại Tổng quan Dự án