init git
This commit is contained in:
208
.claude/skills/ba-2-analysis/templates/business-rules.md
Normal file
208
.claude/skills/ba-2-analysis/templates/business-rules.md
Normal file
@@ -0,0 +1,208 @@
|
||||
# BR — Business Rules — <Tên module>
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Version** | 1.0 |
|
||||
| **Date** | YYYY-MM-DD |
|
||||
| **Author** | <BA> (skill ba-2-analysis) |
|
||||
| **Status** | 🟡 Draft |
|
||||
| **Approved by** | — |
|
||||
| **Source** | |
|
||||
| **Scope** | |
|
||||
|
||||
## Change Log
|
||||
|
||||
| Version | Date | Người sửa | Thay đổi | CR |
|
||||
|---|---|---|---|---|
|
||||
|
||||
---
|
||||
|
||||
## 1. Danh sách quy tắc
|
||||
|
||||
> **Rule sống độc lập với user story.** Cùng một rule thường chi phối nhiều US; nhét rule
|
||||
> vào mô tả US thì sửa một chỗ sẽ quên chín chỗ.
|
||||
|
||||
### BR-001 — <tên ngắn>
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Loại** | Ràng buộc dữ liệu / Điều kiện hành động / Tính toán / Quy trình-phê duyệt |
|
||||
| **Nguồn** | 🔴 Quy định pháp luật / 🟠 Hợp đồng-chính sách / 🟢 Thói quen nội bộ |
|
||||
| **Người chốt** | STK-nn, ngày… |
|
||||
| **RQ** | RQ-007 |
|
||||
| **US áp dụng** | US-011, US-013 |
|
||||
| **Khi vi phạm** | Chặn / Cảnh báo cho qua / Chỉ ghi log |
|
||||
| **Có ngoại lệ** | Không / Có — ai được cho phép: … |
|
||||
| **Có thể đổi trong 1 năm** | Có / Không |
|
||||
|
||||
**Phát biểu:**
|
||||
> *(một câu, một quy tắc — quy tắc W1)*
|
||||
|
||||
**Điều kiện áp dụng:** *(khi nào rule này có hiệu lực)*
|
||||
|
||||
**Ví dụ đúng / sai:**
|
||||
|
||||
| Trường hợp | Dữ liệu | Kết quả mong đợi |
|
||||
|---|---|---|
|
||||
| Hợp lệ | | Cho qua |
|
||||
| Vi phạm | | Chặn, báo `E-XXX-0001` |
|
||||
| Biên | | |
|
||||
|
||||
---
|
||||
|
||||
**Cột `Nguồn` quyết định độ cứng của rule:**
|
||||
|
||||
| Nguồn | Được đề xuất bỏ/sửa không |
|
||||
|---|---|
|
||||
| 🔴 Quy định pháp luật | Không. Chỉ tuân thủ, và phải ghi rõ điều khoản nào |
|
||||
| 🟠 Hợp đồng / chính sách công ty | Có, nhưng phải qua cấp ký hợp đồng/chính sách |
|
||||
| 🟢 Thói quen nội bộ | Có — và **nên hỏi** khi nó đang cản trở, vì thường không ai nhớ vì sao có |
|
||||
|
||||
## 2. Bảng tổng hợp
|
||||
|
||||
| ID | Tên | Loại | Nguồn | US áp dụng | Khi vi phạm | Mã lỗi (GĐ3) |
|
||||
|---|---|---|---|---|---|---|
|
||||
| BR-001 | | | 🔴 | US-011 | Chặn | E-STL-0001 |
|
||||
|
||||
## 3. Vòng đời trạng thái
|
||||
|
||||
*Bắt buộc với mọi thực thể có trạng thái (quy tắc W6).*
|
||||
|
||||
### Thực thể: `<tên>`
|
||||
|
||||
**Bốn câu phải trả lời:**
|
||||
|
||||
| Câu hỏi | Trả lời |
|
||||
|---|---|
|
||||
| Trạng thái khởi tạo | |
|
||||
| Trạng thái cuối (không đi tiếp được) | |
|
||||
| Từ trạng thái cuối quay lại được không | |
|
||||
| Trạng thái nào cho phép xoá | |
|
||||
|
||||
**Sơ đồ:**
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
state "Nháp" as Nhap
|
||||
state "Chờ duyệt" as ChoDuyet
|
||||
state "Đã duyệt" as DaDuyet
|
||||
state "Đã đóng" as DaDong
|
||||
|
||||
[*] --> Nhap
|
||||
Nhap --> ChoDuyet: gửi duyệt (đủ trường bắt buộc)
|
||||
ChoDuyet --> DaDuyet: duyệt
|
||||
ChoDuyet --> Nhap: từ chối
|
||||
DaDuyet --> DaDong: đóng (có ghi chú lý do)
|
||||
DaDong --> [*]
|
||||
```
|
||||
|
||||
*ID trạng thái không dấu, nhãn có dấu — xem `../../ba-lifecycle/references/diagram-rules.md` §1.*
|
||||
|
||||
**Bảng chuyển trạng thái:**
|
||||
|
||||
| # | Nguồn | Sự kiện | Điều kiện | Đích | Ai được làm | BR | Ghi vết |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 1 | Nháp | Gửi duyệt | Đã điền đủ trường bắt buộc | Chờ duyệt | Người tạo | BR-005 | ✅ |
|
||||
|
||||
**Chuyển trạng thái KHÔNG được phép** *(ghi ra để dev biết mà chặn):*
|
||||
|
||||
| Từ | Sang | Vì sao cấm |
|
||||
|---|---|---|
|
||||
| Đã đóng | Nháp | Mất dấu vết đối soát |
|
||||
|
||||
## 4. Mô hình dữ liệu khái niệm (ERD)
|
||||
|
||||
🔴 **Mục bắt buộc khi US có từ 2 thực thể trở lên.** Không có nó, dev tự suy ra quan hệ giữa
|
||||
các thực thể từ những bảng field rời rạc của từng màn hình — và mỗi người suy một kiểu.
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
CUA_HANG ||--o{ GIAO_DICH : "phát sinh"
|
||||
GIAO_DICH ||--o| CHENH_LECH : "sinh ra khi lệch"
|
||||
NGUOI_DUNG ||--o{ CHENH_LECH : "xử lý"
|
||||
|
||||
CUA_HANG {
|
||||
string ma_cua_hang PK "3-20 ký tự"
|
||||
string ten
|
||||
enum trang_thai
|
||||
}
|
||||
GIAO_DICH {
|
||||
bigint id PK
|
||||
string ma_cua_hang FK
|
||||
decimal so_tien "VND"
|
||||
datetime thoi_diem "UTC"
|
||||
}
|
||||
CHENH_LECH {
|
||||
bigint id PK
|
||||
bigint giao_dich_id FK
|
||||
decimal so_tien "VND"
|
||||
enum trang_thai
|
||||
}
|
||||
```
|
||||
|
||||
*Tên thực thể **không dấu, viết hoa**; tên tiếng Việt để ở bảng §4.1. Ký hiệu lực lượng:
|
||||
`||--o{` một-nhiều · `||--||` một-một · `||--o|` một-không hoặc một · `}o--o{` nhiều-nhiều.*
|
||||
|
||||
🔴 **Đây là mô hình khái niệm, không phải schema.** Nêu thực thể, quan hệ, khoá nghiệp vụ.
|
||||
**Không** nêu kiểu dữ liệu vật lý, index, bảng trung gian, chiến lược phân mảnh — đó là việc
|
||||
của Solution Architect và dev.
|
||||
|
||||
### 4.1 Bảng thực thể *(bắt buộc đi kèm sơ đồ — quy tắc W13)*
|
||||
|
||||
| Thực thể | Tên nghiệp vụ | Khoá nghiệp vụ | Số bản ghi hiện có | Ai tạo | Vòng đời | BR |
|
||||
|---|---|---|---|---|---|---|
|
||||
| `CUA_HANG` | Cửa hàng | `ma_cua_hang` | ~1.200 | Admin | §3 | BR-021 |
|
||||
|
||||
**Khoá nghiệp vụ** là thứ người dùng dùng để nhận biết, không phải id kỹ thuật. Nó quyết
|
||||
định quy tắc chống trùng — thiếu cột này thì rule "không được trùng" không có nghĩa.
|
||||
|
||||
### 4.2 Quan hệ cần làm rõ
|
||||
|
||||
*Sơ đồ chỉ vẽ được lực lượng. Bốn câu sau phải trả lời bằng chữ:*
|
||||
|
||||
| Quan hệ | Xoá bên "một" thì bên "nhiều" ra sao | Bắt buộc có quan hệ? | Đổi được sang bên khác? | BR |
|
||||
|---|---|---|---|---|
|
||||
| `CUA_HANG` → `GIAO_DICH` | Chặn xoá nếu còn giao dịch | ✅ giao dịch luôn thuộc 1 cửa hàng | ❌ | BR-006 |
|
||||
|
||||
### 4.3 Thực thể ngoài phạm vi
|
||||
|
||||
*Thực thể có nhắc tới nhưng do hệ thống khác sở hữu — nêu rõ để không ai định tạo bảng cho nó.*
|
||||
|
||||
| Thực thể | Ai sở hữu | Lấy về bằng cách nào | Cache không |
|
||||
|---|---|---|---|
|
||||
|
||||
## 5. Công thức tính toán
|
||||
|
||||
| ID | Đại lượng | Công thức | Đơn vị | Làm tròn | Nguồn dữ liệu | Ví dụ |
|
||||
|---|---|---|---|---|---|---|
|
||||
| BR-0nn | Chênh lệch | tổng POS − tổng hệ thống | VND | Tới đơn vị, làm tròn xuống | | 1.234.567 − 1.234.000 = 567 |
|
||||
|
||||
🔴 Ghi rõ: **thứ tự phép tính**, **làm tròn ở bước nào** (làm tròn từng dòng rồi cộng ≠ cộng
|
||||
rồi làm tròn), **múi giờ** với mọi mốc thời gian, **tiền tệ** với mọi số tiền.
|
||||
|
||||
## 6. Kiểm tra mâu thuẫn giữa các rule
|
||||
|
||||
*Đối chiếu từng cặp rule cùng tác động lên một thực thể.*
|
||||
|
||||
| # | Rule A | Rule B | Mâu thuẫn ở đâu | Trạng thái |
|
||||
|---|---|---|---|---|
|
||||
| 1 | BR-003 | BR-011 | | 🔴 Chờ PO quyết — OQ-0nn |
|
||||
|
||||
Không tự chọn bên nào. Đưa PO quyết, ghi vào `DEC-nn`.
|
||||
|
||||
## 7. Rule của hệ thống hiện tại bị thay đổi
|
||||
|
||||
*Chỉ dùng khi làm enhancement.*
|
||||
|
||||
| Rule cũ | Đang áp dụng ở đâu | Đổi thành | Dữ liệu cũ theo rule cũ xử lý sao |
|
||||
|---|---|---|---|
|
||||
|
||||
## 8. Open Questions
|
||||
|
||||
| ID | Câu hỏi | Hỏi ai | Từ ngày | Chặn gì |
|
||||
|---|---|---|---|---|
|
||||
|
||||
## 9. Ngoài phạm vi
|
||||
|
||||
- Thông điệp lỗi hiển thị nguyên văn → GĐ3 `SRS` §bảng mã lỗi
|
||||
- Ai được thực hiện hành động → `RBAC_…md`
|
||||
Reference in New Issue
Block a user