This commit is contained in:
Leonard-ThindPad-P50
2026-09-08 10:26:21 +07:00
commit c81f249920
169 changed files with 38726 additions and 0 deletions

View File

@@ -0,0 +1,101 @@
# TDEBT — Technical Debt Register — <PROJECT>
| | |
|---|---|
| **Cập nhật** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-3-enablement) |
| **Scope** | |
> **Đây là sổ sống** — ghi thêm liên tục, không lên version. Mục đóng vẫn giữ lại.
---
## 1. Tóm tắt
| | Số mục | Tổng lãi suất/tháng | Tổng chi phí trả nợ |
|---|---|---|---|
| 🔴 Cao | | … ngày công/tháng | … ngày công |
| 🟠 Trung bình | | | |
| 🟡 Thấp | | | |
| ✅ Đã trả | | — | — |
**Ba mục nên trả trước** *(lãi suất cao / chi phí trả thấp)*: `TD-…`, `TD-…`, `TD-…`
🔴 **Cột "lãi suất" là cột làm cho nợ được ưu tiên.** Không có nó, sổ nợ chỉ tăng không giảm.
Viết bằng ngôn ngữ PM hiểu: *"mỗi tính năng chạm module này tốn thêm 2 ngày"*, *"gây trung bình
1 sự cố/tháng"*.
## 2. Phân loại
| Loại | Nghĩa | Xử lý |
|---|---|---|
| 🎯 **Có ý thức, có kế hoạch** | Chấp nhận để kịp mốc, biết rõ sẽ sửa khi nào | Ghi hạn, theo dõi |
| 🌫️ **Có ý thức, chưa có kế hoạch** | Biết là sai, chưa biết sửa thế nào | Ghi, đưa vào `TRM` |
| 💥 **Vô ý** | Phát hiện qua review hoặc `FIT` đỏ | Đánh giá rồi xếp vào 2 loại trên |
| ⚠️ **Do kiến trúc sai** | Thiết kế không khả thi | **Không phải nợ** — mở `ADR` mới, đừng ghi ở đây |
## 3. Sổ nợ
| ID | Mô tả | Loại | Nguồn | Vì sao chấp nhận | **Lãi suất** | Chi phí trả | Mức | Chủ | Hạn xét lại | Trạng thái |
|---|---|---|---|---|---|---|---|---|---|---|
| `TD-01` | | 🎯 | `DREV-012` | | +2 ngày/tính năng chạm module | 5 ngày công | 🔴 | | | Mở |
| `TD-02` | | 💥 | `FIT-01` đỏ, 12 vi phạm | | | | | | | |
**Trạng thái:** Mở · Đang trả · Đã trả (kèm ngày) · Đã chuyển thành `ADR` · Chấp nhận vĩnh viễn
🔴 Mục "sẽ sửa sau" không có **chủ** và **hạn** ⇒ không phải mục nợ hợp lệ, chặn AG3.
## 4. Chi tiết mục mức cao
### `TD-01` — <tên>
| | |
|---|---|
| **Lệch so với** | `ADR-nnn` / `AGD` §… / `QAS-nnn` |
| **Ở đâu trong code** | `<đường dẫn>` |
| **Ai chấp nhận · ngày** | |
| **Vì sao chấp nhận** | *(lý do thật: mốc nào, đánh đổi gì)* |
| **Lãi suất** | *(con số)* |
| **Rủi ro nếu để lâu** | |
| **Cách trả** | *(các bước cụ thể)* |
| **Chi phí trả** | … ngày công |
| **Điều kiện phải trả ngay** | *(dấu hiệu nào thì không hoãn được nữa)* |
| **Ngoại lệ trong `FIT`** | `FIT-nn` whitelist mục … · hạn … |
🔴 **Whitelist trong `FIT` phải có hạn.** Whitelist không hạn là cách biến nợ tạm thời thành
kiến trúc vĩnh viễn.
## 5. Nợ đã trả
| ID | Mô tả | Trả ngày | Chi phí thực tế | So với ước lượng | Bài học |
|---|---|---|---|---|---|
*Cột "so với ước lượng" giúp lần sau ước lượng đúng hơn. Nợ thường tốn hơn ước lượng ban đầu
khoảng 1,5–2 lần.*
## 6. Nợ chấp nhận vĩnh viễn
*Nợ quyết định không trả. Ghi lại để người sau không mất thời gian điều tra "sao chỗ này lạ vậy".*
| ID | Mô tả | Vì sao không trả | Ai quyết · ngày | Cần biết gì khi động vào chỗ này |
|---|---|---|---|---|
## 7. Trình bày cho PM / PO
*Bảng này dùng để đưa nợ vào sprint. Dịch sang ngôn ngữ tiến độ và rủi ro.*
| Nợ | Đang làm chậm cái gì | Chậm bao nhiêu | Trả mất | Hoà vốn sau |
|---|---|---|---|---|
| `TD-01` | mọi tính năng chạm module Order | +2 ngày/tính năng | 5 ngày | 3 tính năng |
**Câu hỏi trình PM:** *"Quý tới có bao nhiêu tính năng chạm module Order?"* — nếu ≥ 3 thì trả
nợ ngay là lựa chọn rẻ hơn, và PM tự thấy điều đó.
## 8. Rà định kỳ
| Việc | Tần suất | Ai | Lần gần nhất |
|---|---|---|---|
| Rà mục quá hạn xét lại | 2 tuần/lần | SA | |
| Cập nhật lãi suất theo thực tế | hàng tháng | SA + Tech Lead | |
| Rà whitelist `FIT` hết hạn | hàng tháng | SA | |
| Trình bảng §7 cho PM | mỗi lần lập kế hoạch sprint/quý | SA | |