| Môi trường | URL / Port | Mục đích | Quy tắc |
|---|---|---|---|
| local | localhost | Phát triển, debug nhanh | Không commit trực tiếp vào test |
| dev | dev-vid.k9tech.space | Integration test trước khi lên test | ✅ Dùng để verify trước khi merge |
| test | (hiện tại) | Production-like validation | 🔒 Read-mostly, không test trực tiếp |
Checkout từ main
↓
Tạo branch: feature/<ticket>-<mô-tả>
↓
Phát triển + chạy lint + typecheck + unit tests trên local
↓
Deploy lên dev để integration test
↓
Tạo PR / merge vào main
↓
Deploy lên test khi đã ổn định trên dev
Branch naming: feature/<ticket>-<mô-tả-ngắn>
Commit message prefix:
feat: tính năng mớifix: sửa bugrefactor: tái cấu trúctest: thêm/sửa testdocs: cập nhật docschore: config, dependencygit fetch origin && git rebase origin/main
npm run lint && npm run typecheck && npm test
# Deploy lên dev
./scripts/deploy.sh dev <branch-name>
# Xem worker logs trên dev
docker logs -f vidreview-worker-dev
# Check health dev
curl https://dev-vid.k9tech.space/api/health
# Reset stuck jobs trên dev
docker restart vidreview-worker-dev
| ✅ NÊN | ❌ KHÔNG |
|---|---|
| Test trên dev trước | Test trực tiếp trên test |
Dùng .env.local cho local |
Hardcode credentials |
| Viết migration idempotent | Migration fail giữa chừng |
| Backup DB trước thay đổi lớn | Sửa schema trên test không qua migration |
| Có test cho logic mới | Deploy lên test sau giờ làm việc |
Post-mortem sau khi resolved
IMPORTANT: This project has a knowledge graph. ALWAYS use the code-review-graph MCP tools BEFORE using Grep/Glob/Read to explore the codebase. The graph is faster, cheaper (fewer tokens), and gives you structural context (callers, dependents, test coverage) that file scanning cannot.
semantic_search_nodes or query_graph instead of Grepget_impact_radius instead of manually tracing importsdetect_changes + get_review_context instead of reading entire filesquery_graph with callers_of/callees_of/imports_of/tests_forget_architecture_overview + list_communitiesFall back to Grep/Glob/Read only when the graph doesn't cover what you need.
| Tool | Use when |
|---|---|
detect_changes |
Reviewing code changes — gives risk-scored analysis |
get_review_context |
Need source snippets for review — token-efficient |
get_impact_radius |
Understanding blast radius of a change |
get_affected_flows |
Finding which execution paths are impacted |
query_graph |
Tracing callers, callees, imports, tests, dependencies |
semantic_search_nodes |
Finding functions/classes by name or keyword |
get_architecture_overview |
Understanding high-level codebase structure |
refactor_tool |
Planning renames, finding dead code |
detect_changes for code review.get_affected_flows to understand impact.query_graph pattern="tests_for" to check coverage.