App 6 – Dự án, công việc & sprint
Hướng: Xây mới bằng builder · Đợt: Đợt 2 · Phụ thuộc: hrm (đợt 0), App 7
Quy ước chung, nguồn dữ liệu nhân viên và cách chạy builder: 00-tong-quan.md
Mục đích: quản lý dự án (khách hàng, ngân sách, thành viên), task theo bảng kanban và sprint, cảnh báo khi dự án sắp vượt ngân sách. Nguồn: Project Management, Task Management, Priorities & Sizes, Sprints, Budget Tracking.
Hướng: xây mới bằng builder. Phụ thuộc: khách hàng từ App 7 (tạm dùng bảng tham chiếu có dữ liệu mẫu, lượt 5 nối thật), nhân viên và phòng ban từ hrm.
Vai trò & quyền
| Vai trò | Được làm |
|---|---|
| Quản trị | Tạo dự án, cấu hình trạng thái task, xem mọi dự án |
| Quản lý dự án | Sửa dự án mình quản lý, thêm/bớt thành viên, tạo và đóng sprint, giao task, xóa task |
| Thành viên | Xem dự án mình tham gia; tạo task; sửa và chuyển trạng thái task; bình luận |
Dữ liệu
| Thực thể | Trường | Ghi chú |
|---|---|---|
| Dự án | tên, mã tiền tố (ví dụ CRM), khách hàng, mô tả, ngày bắt đầu, hạn kết thúc, hình thức tính phí (Theo giờ, Trọn gói, Theo milestone), loại ngân sách (Giờ, Tiền), ngân sách, ngưỡng cảnh báo (%), kiểu bảng (Kanban, Sprint), quản lý dự án, màu, trạng thái (Đang chạy, Tạm dừng, Hoàn thành, Lưu trữ) | Khách hàng tham chiếu App 7 |
| Thành viên dự án | dự án, nhân viên, vai trò (Quản lý, Thành viên) | |
| Module | dự án, tên, mô tả | Nhóm task theo chức năng |
| Task | số (tự tăng theo dự án, hiển thị CRM-12), tiêu đề, mô tả, loại (Bug, Story, Task, Epic), trạng thái, ưu tiên (Khẩn cấp, Cao, Trung bình, Thấp, Không), kích thước (XS=1, S=2, M=3, L=5, XL=8, XXL=13 điểm), ước lượng giờ, ngày bắt đầu, hạn, người làm (nhiều), task cha, module, sprint, tag | |
| Liên kết task | task nguồn, task đích, loại (Bị chặn bởi, Chặn, Trùng với, Liên quan) | |
| Sprint | dự án, tên, mục tiêu, ngày bắt đầu, ngày kết thúc, trạng thái (Dự kiến, Đang chạy, Đã xong) | |
| Bình luận | task, người viết, nội dung, người được nhắc (@), trả lời bình luận nào |
Trạng thái
- Task (mặc định, cấu hình được): Mở → Đang làm → Chờ review → Đang review → Xong; thêm Bị chặn từ bất kỳ bước nào trước Xong.
- Sprint: Dự kiến → Đang chạy → Đã xong.
Quy tắc nghiệp vụ
- Số task tự tăng và duy nhất trong một dự án; mã tiền tố dự án không trùng.
- Mỗi dự án chỉ có tối đa một sprint Đang chạy; các sprint của một dự án không chồng ngày.
- Đóng sprint: task chưa Xong được chuyển sang sprint Dự kiến kế tiếp (hoặc về backlog nếu chưa có); lưu velocity = tổng điểm kích thước của task Xong.
- Task không chuyển sang Xong khi còn task con chưa Xong hoặc còn bị chặn bởi task chưa Xong.
- Task cha phải cùng dự án và không tạo vòng (task không là cha của tổ tiên mình).
- Người làm phải là thành viên dự án; chỉ thành viên mới thấy dự án và task.
- Ngân sách: đã dùng = tổng giờ (hoặc giờ × đơn giá) từ App 4; khi vượt ngưỡng cảnh báo (mặc định 75% và 90%) thì hiển cảnh báo trên dự án.
- Dự án Lưu trữ chỉ xem, không tạo task mới.
Màn hình
| Màn hình | Nội dung |
|---|---|
| Danh sách dự án | Thẻ dự án với tiến độ task và % ngân sách đã dùng |
| Bảng kanban | Cột theo trạng thái, kéo thả; nhóm theo ưu tiên hoặc người làm |
| Danh sách task | Bảng có lọc theo trạng thái, ưu tiên, người làm, sprint, tag, hạn; thao tác hàng loạt (đổi trạng thái, giao người) |
| Chi tiết task | Thông tin, task con, liên kết, bình luận |
| Sprint | Backlog bên trái, sprint bên phải; Bắt đầu / Đóng sprint; biểu đồ burndown |
| Task của tôi | Task được giao qua mọi dự án, nhóm theo hạn |
Prompt cho builder – chia lượt
Dán từng lượt theo thứ tự, mỗi lượt là một tin nhắn. Duyệt kế hoạch trước khi builder chạy; chỉ sang lượt sau khi lượt trước đã kiểm tra xong trong bản xem trước.
Lượt 1 – Lõi: dự án, thành viên, task, sprint
text
Tôi cần app quản lý dự án và công việc có phân quyền, lưu trong database.
Mọi dữ liệu tách theo tổ chức của người đăng nhập.
Nhân viên và phòng ban không tự quản lý mà lấy từ sự kiện của app hrm
(hrm:stream:employees và sự kiện phòng ban) vào bảng chỉ đọc; người đăng nhập
khớp với nhân viên qua mã user Shell.
Có dữ liệu mẫu cho bảng nhân viên và phòng ban (khoảng 3 phòng ban, 10 nhân viên,
có quản lý và nhân viên) để thử phân quyền trong bản xem trước.
Khách hàng tạm lưu bảng tham chiếu chỉ đọc (mã, tên), có dữ liệu mẫu.
Dữ liệu: dự án (tên, mã tiền tố không trùng, khách hàng, mô tả, ngày bắt đầu, hạn,
loại ngân sách giờ hoặc tiền, ngân sách, kiểu bảng Kanban hoặc Sprint, trạng thái
Đang chạy/Tạm dừng/Hoàn thành/Lưu trữ), thành viên dự án (nhân viên, vai trò quản lý
hoặc thành viên), task (số tự tăng theo dự án hiển thị dạng MÃ-12, tiêu đề, mô tả,
loại Bug/Story/Task/Epic, trạng thái Mở/Đang làm/Chờ review/Đang review/Bị chặn/Xong,
ưu tiên Khẩn cấp/Cao/Trung bình/Thấp/Không, kích thước XS=1 S=2 M=3 L=5 XL=8 XXL=13
điểm, ước lượng giờ, hạn, nhiều người làm, task cha, sprint), sprint (tên, mục tiêu,
từ ngày, đến ngày, trạng thái Dự kiến/Đang chạy/Đã xong, velocity).
Phân quyền: chỉ thành viên dự án mới xem được dự án và task; quản lý dự án quản lý
thành viên, sprint và xóa task; thành viên tạo, sửa, chuyển trạng thái task.
Quy tắc (kiểm tra ở API): số task tự tăng và không trùng trong dự án; người làm phải
là thành viên dự án; task cha cùng dự án và không tạo vòng; task không được Xong khi
còn task con chưa xong; mỗi dự án tối đa một sprint đang chạy, sprint không chồng
ngày; đóng sprint thì task chưa xong chuyển sang sprint dự kiến kế tiếp (hoặc về
backlog) và lưu velocity bằng tổng điểm task đã xong; dự án lưu trữ không tạo task.
Màn hình: danh sách dự án, bảng kanban kéo thả theo trạng thái, danh sách task có
lọc, chi tiết task, màn sprint có backlog bên trái và sprint bên phải.Lượt 2 – Cộng tác
text
Thêm liên kết task (Bị chặn bởi, Chặn, Trùng với, Liên quan) và bình luận trên task
có nhắc tên @nhân viên và trả lời bình luận. Task không được Xong khi còn bị chặn
bởi task chưa xong. Thêm thao tác hàng loạt trên danh sách task: đổi trạng thái,
giao người.Lượt 3 – Ngân sách và báo cáo
text
Thêm theo dõi ngân sách dự án: đã dùng lấy từ tổng giờ ghi cho dự án (tạm nhập
tay hoặc đồng bộ từ app ghi giờ), cảnh báo khi vượt 75% và 90%. Thêm biểu đồ
burndown cho sprint và màn Task của tôi (task được giao qua mọi dự án, nhóm theo hạn).Lượt 4 – Phát sự kiện cho app khác
text
Phát sự kiện qua Redis Streams khi dự án và task được tạo, sửa, lưu trữ hoặc xóa
(mã, tên, mã tiền tố, khách hàng, trạng thái; task thêm số, tiêu đề, dự án), để app
ghi giờ và app chi phí đồng bộ.Lượt 5 (sau khi App 7 xong) – Nối khách hàng thật
text
Thay bảng tham chiếu khách hàng bằng dữ liệu đồng bộ từ sự kiện liên hệ của app CRM
vào bảng chỉ đọc; giữ nguyên liên kết khách hàng của các dự án đã có.Kiểm tra trước khi Publish
Đăng nhập lần lượt bằng từng vai trò trong bản xem trước:
- [ ] Người không là thành viên dự án không xem được dự án và task (thử gọi thẳng API).
- [ ] Mở sprint thứ hai khi đã có sprint đang chạy thì bị từ chối.
- [ ] Task còn task con chưa xong hoặc còn bị chặn thì không chuyển được Xong.
- [ ] Đóng sprint: task dở chuyển sang sprint kế tiếp, velocity đúng tổng điểm task xong.
- [ ] Checklist chung trong 00-tong-quan.md (mục Checklist chung trước khi Publish).