# TDEBT — Technical Debt Register — | | | |---|---| | **Cập nhật** | YYYY-MM-DD | | **Author** | (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` — | | | |---|---| | **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 | |