📘 Guide vận hành

PHẦN 8 — THUẬT NGỮ

File thuật ngữ này là vận hành nội bộ — giữ nguyên qua mọi dự án. Khác với 01-analysis/glossary.md vốn dành cho thuật ngữ nghiệp vụ của khách hàng (RO, PNKN, DDMS, THILOGI…) và thay đổi theo từng dự án.

Tra nhanh theo viết tắt

Viết tắtĐầy đủNhóm
ACAcceptance CriteriaTài liệu
ADRArchitecture Decision RecordTài liệu
BABusiness AnalystVai trò
BRBusiness RuleTài liệu
CRChange RequestTài liệu
DoDDefinition of DoneChốt kiểm soát
DoRDefinition of ReadyChốt kiểm soát
MRMerge RequestGitLab
OQOpen QuestionTài liệu
PMProject ManagerVai trò
PRDProduct Requirement DocumentTài liệu
QCQuality ControlKiểm thử
SRSSoftware Requirement SpecificationTài liệu
UATUser Acceptance TestingKiểm thử
WIPWork In ProgressĐo lường

Tài liệu và yêu cầu

Thuật ngữGiải thích
PRDTài liệu mô tả một tính năng, đủ chi tiết để DEV code và QC viết test case mà không phải hỏi lại
SRSTài liệu tổng quan phạm vi toàn hệ thống, đứng trên các PRD
BaselineBản tài liệu đã được khách hàng phê duyệt chính thức và khóa lại làm mốc đối chiếu
Tag gitNhãn đánh dấu một thời điểm cụ thể trong lịch sử repo, ví dụ FE-001-v1.0
BRQuy tắc nghiệp vụ. Ví dụ: "xe nhập khẩu tính ngày giao từ mốc thông quan"
ACĐiều kiện để coi tính năng là làm xong, viết đủ rõ để chuyển thành test case
Tech noteGhi chú kỹ thuật DEV viết trước khi code: các phương án, phương án chọn và lý do, thay đổi DB, API, rủi ro, cách rollback
Traceability IDMã định danh chạy xuyên suốt từ tài liệu → issue → branch → commit → test case → báo cáo
Scope creepPhạm vi công việc phình dần qua các yêu cầu nhỏ lẻ mà không ai ghi nhận chính thức

Hai chốt kiểm soát

DoR — Definition of Ready. Danh sách điều kiện để một issue được phép giao cho DEV. Trả lời: *yêu cầu này đã đủ rõ để bắt đầu chưa?*

DoD — Definition of Done. Danh sách điều kiện để coi issue là xong. Trả lời: *đã đủ điều kiện đóng chưa?*

Không có DoR thì DEV code trên yêu cầu mơ hồ rồi làm lại. Không có DoD thì issue được đóng lúc code chạy được, nhưng tài liệu chưa cập nhật và khách hàng chưa ký.

GitLab

Thuật ngữGiải thích
Scoped labelLabel có dấu :: như status::in-dev. GitLab tự động gỡ label cũ khi gắn label mới cùng scope
MilestoneNhóm issue theo mốc thời gian — ở đây dùng làm sprint
WeightTrường số nguyên trên issue, dùng làm story point
Estimate / SpendThời gian ước lượng (/estimate 3d) và thời gian thực tế (/spend 4h, cập nhật hằng ngày)
`Closes #42`Từ khóa trong mô tả MR; khi MR merge, GitLab tự đóng issue 42
CODEOWNERSFile khai báo ai sở hữu thư mục nào, dùng để thực thi ranh giới ghi
`resource_label_events`API trả về lịch sử gắn/gỡ label — nguồn dữ liệu để tính cycle time

Kiểm thử

Thuật ngữGiải thích
QCKiểm thử nội bộ do team tự làm trước khi đưa khách hàng
UATKhách hàng tự kiểm thử và ký xác nhận
Staging / ProductionMôi trường gần giống thật để test / môi trường thật người dùng cuối đang dùng
Severity (Sev)Mức nghiêm trọng của lỗi (Sev1–Sev4)
Edge caseTrường hợp biên, ít xảy ra nhưng vẫn phải xử lý
RegressionLỗi mới phát sinh ở phần đang chạy tốt, do thay đổi ở chỗ khác

Kỹ thuật (nguồn edge case hay bị bỏ sót)

Thuật ngữGiải thích
ConcurrentHai người cùng thao tác trên một bản ghi tại cùng thời điểm
TimeoutHết thời gian chờ phản hồi từ hệ thống khác
MigrateChuyển dữ liệu cũ sang cấu trúc mới
RollbackQuay ngược về trạng thái trước khi triển khai, khi deploy lỗi
API contractThỏa thuận về endpoint, method, cấu trúc request/response giữa hai bên
Polling / WebhookChủ động hỏi theo chu kỳ / hệ thống khác chủ động đẩy dữ liệu sang khi có thay đổi

Bốn từ đầu (concurrent, timeout, migrate, rollback) là bốn nguồn edge case bị bỏ sót nhiều nhất. PRD thường mô tả rất kỹ luồng thuận, nhưng im lặng về chuyện hai nhân viên cùng sửa một phiếu, hoặc dữ liệu cũ đã migrate không thỏa mãn ràng buộc mới.

AI và Claude Code

Thuật ngữGiải thích
CLAUDE.mdFile chứa chỉ dẫn cho AI, tự động nạp khi mở workspace
Bộ nhớ dự án / cá nhân./CLAUDE.md ở gốc repo (commit) / ~/.claude/CLAUDE.md trên máy từng người (không commit)
ContextToàn bộ thông tin AI đang có trong phiên làm việc
Slash commandLệnh tắt gọi bằng /tên-lệnh, định nghĩa trong .claude/commands/
HallucinationAI tạo ra thông tin nghe hợp lý nhưng không có thật

Rủi ro lớn nhất khi dùng AI trong quy trình này không phải là AI viết sai, mà là AI tự lấp khoảng trống trong tài liệu bằng suy diễn hợp lý. Suy diễn của AI thường rất thuyết phục và trôi chảy, nên rất khó phát hiện khi đọc lướt. Đây là lý do có luật P5: mọi giả định phải ghi vào open-questions.md.

Những cặp thuật ngữ hay bị nhầm

  • Baseline ≠ version mới nhất. Version thay đổi liên tục; baseline là bản đã đóng dấu và chỉ được đổi qua CR. Đây là lý do issue phải link tới PRD tại tag baseline chứ không link nhánh đang chạy.
  • Cycle time ≠ lead time. Lead time là thứ khách hàng cảm nhận (yêu cầu hôm nay, bao giờ có). Cycle time là thứ đo năng lực đội (bắt tay vào thì bao lâu xong). Lead time dài mà cycle time ngắn nghĩa là việc nằm chờ quá lâu ở khâu làm rõ, không phải DEV chậm.
  • QC ≠ UAT. QC hỏi "có đúng như tài liệu không". UAT hỏi "có dùng được không". Một tính năng có thể pass QC hoàn toàn mà rớt UAT.
  • Estimate ≠ spend. Estimate là dự đoán trước khi làm, spend là thực tế sau khi làm. Tỷ số giữa hai cái đo chất lượng ước lượng, không đo năng suất cá nhân.
  • Story point ≠ giờ công. Story point đo độ phức tạp tương đối, không quy đổi trực tiếp ra giờ.
  • Defect ≠ Change Request. Defect là code không làm đúng như tài liệu mô tả — sửa miễn phí. CR là tài liệu cần mô tả khác đi — tính chi phí. Baseline chính là căn cứ để phân xử ranh giới này.