29 KiB
GoodGo Platform AI - Báo Cáo Kiểm Toán Codebase Toàn Diện
Ngày Kiểm Toán: 11 tháng 4, 2026
1. TỔNG QUAN CẤU TRÚC DỰ ÁN
Tổ Chức Thư Mục
goodgo-platform-ai/
├── apps/ # Các ứng dụng trong Monorepo
│ ├── api/ # NestJS Backend (cổng 3001)
│ └── web/ # Next.js Frontend (cổng 3000)
├── libs/ # Thư viện dùng chung
│ ├── mcp-servers/ # Máy chủ Model Context Protocol
│ └── ai-services/ # Dịch vụ AI Python (FastAPI)
├── prisma/ # Schema & migrations cơ sở dữ liệu
│ ├── schema.prisma # 641 dòng
│ └── migrations/ # 13 migrations
├── e2e/ # Kiểm thử end-to-end
│ ├── api/ # Kiểm thử E2E API (16 tệp spec)
│ ├── web/ # Kiểm thử E2E Web (15 tệp spec)
│ └── fixtures/ # Dữ liệu kiểm thử mẫu
├── infra/ # Cấu hình hạ tầng
├── monitoring/ # Prometheus, Grafana, Loki, AlertManager
└── scripts/ # Scripts tiện ích
Số Lượng Tệp
- Tổng số tệp TypeScript/TSX: 992 tệp
- Tổng dòng code (apps/): 70.569 LOC
- Quản lý cấu hình: Turbo monorepo với pnpm
2. BACKEND (apps/api)
Ngăn Xếp Công Nghệ
- Framework: NestJS 11.0.0
- Runtime: Node.js 22+
- Ngôn ngữ: TypeScript 6.0.2 (bật chế độ strict)
- Cơ sở dữ liệu: PostgreSQL 16 + extension PostGIS
- ORM: Prisma 7.7.0
- Tài liệu API: Swagger/OpenAPI
Kiến Trúc Module (16 module)
| Module | Số tệp | Cấu trúc | Trạng thái |
|---|---|---|---|
| auth | 108 | Domain ✓ / App ✓ / Infra ✓ / Presentation ✓ | Phân lớp đầy đủ |
| admin | 93 | Domain ✓ / App ✓ / Infra ✓ / Presentation ✓ | Phân lớp đầy đủ |
| listings | 83 | Domain ✓ / App ✓ / Infra ✓ / Presentation ✓ | Phân lớp đầy đủ |
| analytics | 67 | Domain ✓ / App ✓ / Infra ✓ / Presentation ✓ | Phân lớp đầy đủ |
| search | 66 | Domain ✓ / App ✓ / Infra ✓ / Presentation ✓ | Phân lớp đầy đủ |
| notifications | 49 | Domain ✓ / App ✓ / Infra ✓ / Presentation ✓ | Phân lớp đầy đủ |
| payments | 51 | Domain ✓ / App ✓ / Infra ✓ | Phân lớp đầy đủ |
| subscriptions | 48 | Domain ✓ / App ✓ / Infra ✓ | Phân lớp đầy đủ |
| leads | 41 | Domain ✓ / App ✓ / Infra ✓ | Phân lớp đầy đủ |
| reviews | 38 | Domain ✓ / App ✓ / Infra ✓ | Phân lớp đầy đủ |
| inquiries | 34 | Domain ✓ / App ✓ / Infra ✓ | Phân lớp đầy đủ |
| agents | 29 | Domain ✓ / App ✓ / Infra ✓ | Phân lớp đầy đủ |
| metrics | - | Module chỉ có Infra | Chuyên biệt |
| health | - | Dựa trên controller đơn giản | Kiểm tra trạng thái |
| mcp | - | Chỉ có Presentation | Tích hợp MCP |
| shared | - | Hạ tầng xuyên suốt | Tiện ích |
Kết Nối Module Cốt Lõi (app.module.ts)
Tất cả 16 module được import và đăng ký đúng cách:
- SharedModule, HealthModule, AuthModule
- AgentsModule, InquiriesModule, LeadsModule, ListingsModule
- ReviewsModule, SearchModule, NotificationsModule, PaymentsModule
- SubscriptionsModule, AdminModule, AnalyticsModule, MetricsModule, McpIntegrationModule
Các Lớp Kiến Trúc
Tất cả các module chính tuân theo Kiến Trúc Lục Giác (Hexagonal Architecture):
Domain/
├── Entities (mô hình domain)
├── Value Objects
├── Interfaces (hợp đồng repository)
└── Specifications (quy tắc nghiệp vụ)
Application/
├── Commands (trình xử lý lệnh)
├── Queries (trình xử lý truy vấn)
├── DTOs (đối tượng truyền dữ liệu)
└── Services (điều phối use case)
Infrastructure/
├── Database (Prisma repositories)
├── Cache (Redis)
├── Services (tích hợp bên ngoài)
├── Subscribers (trình xử lý sự kiện)
└── Specifications (truy vấn Prisma)
Presentation/
├── Controllers (REST endpoints)
├── Guards (phân quyền)
└── Interceptors (mối quan tâm xuyên suốt)
Các Dịch Vụ Hạ Tầng Chính (shared/infrastructure)
- PrismaService - Trình bao ORM cơ sở dữ liệu
- RedisService - Caching & giới hạn tốc độ
- LoggerService - Ghi log có cấu trúc (Pino)
- CacheService - Caching đa chiến lược
- FieldEncryptionService - Mã hóa trường PII
- CircuitBreakerService - Khả năng chịu lỗi
- EventBusService - Phân phối sự kiện CQRS
Cấu Hình Toàn Cục
app.module.ts cung cấp:
- CQRS Module (mẫu lệnh/truy vấn)
- Schedule Module (tác vụ nền)
- Throttler Module (giới hạn tốc độ)
- Mặc định: 60 yêu cầu/phút
- Xác thực: 10 yêu cầu/phút
- Thanh toán: 20 yêu cầu/phút
- Tích hợp Sentry (theo dõi lỗi)
main.ts khởi động:
- Pipe xác thực toàn cục (whitelist + transform)
- Header bảo mật (Helmet)
- Cấu hình CORS (dựa trên môi trường)
- Bảo vệ CSRF (double-submit cookies)
- Cookie parser
- Ghi log yêu cầu
- Hook tắt máy nhẹ nhàng
- Tài liệu Swagger
Phiên Bản API
- Tiền tố toàn cục:
/api/v1/ - Endpoint sức khoẻ:
/health(loại trừ khỏi versioning) - Tài liệu Swagger:
/api/v1/docs
Độ Phủ Kiểm Thử
Kiểm Thử Backend:
- Kiểm thử đơn vị: 229 tệp .spec.ts
- Tổng LOC kiểm thử: 23.886 dòng
- Framework kiểm thử: Vitest
- Kiểm thử tích hợp: Cấu hình vitest riêng
- Kiểm thử E2E: 16 bộ kiểm thử endpoint API
3. FRONTEND (apps/web)
Ngăn Xếp Công Nghệ
- Framework: Next.js 15.5.14 (App Router)
- Ngôn ngữ: TypeScript 6.0.2 (strict)
- UI Framework: React 18.3.0
- Tạo kiểu: Tailwind CSS 3.4.0
- Quản lý trạng thái: Zustand 5.0.12
- Lấy dữ liệu: React Query 5.96.2
- Biểu mẫu: React Hook Form 7.72.1 + xác thực Zod
- Đa ngôn ngữ: next-intl 4.9.0
- Bản đồ: Mapbox GL 3.21.0
Các Route Trang (33 trang + 8 layout)
Route Xác Thực:
/[locale]/(auth)/login- Đăng nhập người dùng/[locale]/(auth)/register- Đăng ký người dùng/[locale]/auth/callback/google- Callback OAuth/[locale]/auth/callback/zalo- Callback OAuth
Route Công Khai:
/[locale]/(public)- Trang đích/[locale]/(public)/pricing- Trang giá/[locale]/(public)/search- Tìm kiếm bất động sản/[locale]/(public)/compare- So sánh bất động sản/[locale]/(public)/listings/[id]- Chi tiết tin đăng/[locale]/(public)/agents/[id]- Hồ sơ môi giới
Route Dashboard (Đã xác thực):
/[locale]/(dashboard)/dashboard- Dashboard chính/[locale]/(dashboard)/dashboard/profile- Hồ sơ người dùng/[locale]/(dashboard)/dashboard/kyc- Xác minh KYC/[locale]/(dashboard)/dashboard/subscription- Quản lý gói đăng ký/[locale]/(dashboard)/dashboard/payments- Lịch sử thanh toán/[locale]/(dashboard)/dashboard/saved-searches- Tìm kiếm đã lưu/[locale]/(dashboard)/dashboard/valuation- Định giá bất động sản
Route Tin Đăng:
/[locale]/(dashboard)/listings- Tin đăng của tôi/[locale]/(dashboard)/listings/new- Tạo tin đăng/[locale]/(dashboard)/listings/[id]/edit- Chỉnh sửa tin đăng
Route Môi Giới:
/[locale]/(dashboard)/leads- Quản lý khách hàng tiềm năng/[locale]/(dashboard)/inquiries- Quản lý yêu cầu tư vấn/[locale]/(dashboard)/analytics- Dashboard phân tích
Route Admin:
/[locale]/(admin)/admin- Dashboard quản trị/[locale]/(admin)/admin/users- Quản lý người dùng/[locale]/(admin)/admin/kyc- Hàng chờ KYC/[locale]/(admin)/admin/moderation- Kiểm duyệt nội dung
Cấu Trúc Component (68 component)
Theo Domain:
| Danh mục | Số lượng | Mục đích |
|---|---|---|
| UI Components | 21 | Hệ thống thiết kế (buttons, forms, modals, v.v.) |
| Listings | 7 | Card tin đăng, bộ lọc, biểu mẫu |
| Comparison | 7 | Giao diện so sánh bất động sản |
| Valuation | 6 | Giao diện máy tính định giá |
| Search | 4 | Bộ lọc tìm kiếm, kết quả |
| Charts | 4 | Trực quan hóa phân tích |
| Inquiries | 3 | Biểu mẫu & danh sách yêu cầu |
| Auth | 2 | Biểu mẫu đăng nhập/đăng ký |
| Leads | 4 | Giao diện quản lý khách hàng tiềm năng |
| Providers | 4 | Provider Auth, Query, Theme |
| Map | 1 | Tích hợp Mapbox |
| Agents | 1 | Hiển thị môi giới |
| SEO | 2 | Meta tags & OG |
Quản Lý Trạng Thái
Zustand Stores:
auth-store.ts- Trạng thái xác thực người dùng (3,3 KB)comparison-store.ts- Trạng thái so sánh bất động sản (3,9 KB)
Lớp API (lib/*.ts):
admin-api.ts- Các thao tác adminagents-api.ts- Dữ liệu môi giớianalytics-api.ts- Truy vấn phân tíchauth-api.ts- Endpoint xác thựcpayment-api.ts- Thao tác thanh toánsubscription-api.ts- Quản lý gói đăng kýlistings-api.ts- CRUD tin đăngleads-api.ts- Quản lý khách hàng tiềm nănginquiries-api.ts- Quản lý yêu cầu tư vấnvaluation-api.ts- Truy vấn định giásaved-search-api.ts- Tìm kiếm đã lưucomparison-api.ts- Dữ liệu so sánh
Provider & Tích Hợp
Provider Tùy Chỉnh:
auth-provider.tsx- Quản lý phiên đăng nhậptheme-provider.tsx- Chế độ tối (nếu được bật)query-provider.tsx- Thiết lập React Query
Độ Phủ Kiểm Thử
Kiểm Thử Frontend:
- Kiểm thử component: 45 tệp .spec.tsx
- Tổng LOC kiểm thử: 3.864 dòng
- Framework kiểm thử: Vitest + React Testing Library
- Kiểm thử E2E: 15 bộ kiểm thử Playwright
4. CƠ SỞ DỮ LIỆU
Tổng Quan Schema
21 Model trong prisma schema.prisma (641 dòng):
Xác Thực & Người Dùng:
- User (vai trò: BUYER, SELLER, AGENT, ADMIN)
- RefreshToken
- OAuthAccount (nhà cung cấp: GOOGLE, ZALO)
- Agent
Tin Đăng & Bất Động Sản:
- Property (chỉ mục địa lý với PostGIS)
- PropertyMedia (hình ảnh/media)
- Listing (tin đăng bất động sản với theo dõi trạng thái)
- SavedSearch (tìm kiếm đã lưu của người dùng)
Giao Dịch & Yêu Cầu:
- Transaction (giao dịch người mua-người bán)
- Inquiry (yêu cầu tư vấn bất động sản)
- Lead (khách hàng tiềm năng của môi giới)
Thanh Toán & Gói Đăng Ký:
- Payment (bản ghi thanh toán với tích hợp VNPay)
- Plan (gói đăng ký dịch vụ)
- Subscription (gói đăng ký đang hoạt động)
- UsageRecord (đo lường mức sử dụng)
Phân Tích:
- Valuation (định giá bất động sản)
- MarketIndex (dữ liệu phân tích thị trường)
Ghi Log & Tuân Thủ:
- NotificationLog (lịch sử thông báo)
- NotificationPreference (cài đặt thông báo của người dùng)
- AdminAuditLog (nhật ký kiểm toán hành động admin)
Đánh Giá:
- Review (đánh giá & xếp hạng bất động sản)
Các Tính Năng Cơ Sở Dữ Liệu Chính
- Tích Hợp PostGIS: Truy vấn địa lý (vị trí bất động sản)
- Indexes: 30+ indexes tối ưu hóa truy vấn
- Compound Indexes: Tối ưu cho các mẫu truy vấn phổ biến
- Cascade Delete: Toàn vẹn tham chiếu đúng đắn
- Soft Deletes: User.deletedAt, User.deletionScheduledAt
- Timestamps: createdAt, updatedAt trên tất cả các thực thể
Migrations
13 migrations đã triển khai (từ ngày 7 - 11 tháng 4):
- Schema ban đầu (
20260407165528_init) - Indexes khóa ngoại (
20260407210149_add_missing_fk_indexes) - Idempotency thanh toán (
20260408000000_add_idempotency_key_to_payment) - Sửa toàn vẹn schema (
20260408061200_fix_schema_integrity) - Hạn mức analytics/media (
20260408080000_add_analytics_media_quota_fields) - Index đánh giá (
20260408160000_add_review_userid_index) - Trạng thái đọc thông báo (
20260409000000_add_notification_read_at) - Compound indexes (
20260409100000_add_compound_indexes_query_optimization) - Tối ưu truy vấn (
20260409120000_add_missing_query_indexes) - Soft deletes (
20260410000000_add_user_soft_delete_fields) - Nhật ký kiểm toán admin (
20260410100000_add_admin_audit_log) - Cascade deletes (
20260411000000_add_cascade_delete_strategies) - Mã hóa PII (
20260411100000_add_pii_encryption_hash_columns)
Seeding Cơ Sở Dữ Liệu
- Script seed tùy chỉnh tại
prisma/seed.ts - Lệnh seeding:
pnpm db:seed - Hỗ trợ tạo dữ liệu kiểm thử
5. HẠ TẦNG & TRIỂN KHAI
Các Dịch Vụ Docker Compose
Stack Phát Triển (docker-compose.yml):
- PostgreSQL 16 + PostGIS
- Redis 7
- Typesense 27.1 (tìm kiếm toàn văn)
- MinIO (lưu trữ tương thích S3)
- PgBouncer (connection pooling)
Stack Sản Xuất (docker-compose.prod.yml):
- Container được điều phối
- Volumes bền vững
- Kiểm tra sức khỏe
- Cô lập mạng
Stack CI (docker-compose.ci.yml):
- Môi trường kiểm thử
Stack Giám Sát (monitoring/)
- Prometheus - Thu thập metrics
- Grafana - Trực quan hóa dashboard
- Loki - Tổng hợp log
- Promtail - Chuyển tiếp log
- AlertManager - Định tuyến cảnh báo
Pipeline CI/CD (.github/workflows)
ci.yml (Pipeline Chính)
- Chạy khi: push lên master, PRs
- Dịch vụ: PostgreSQL, Redis, Typesense, MinIO
- Các bước:
- Lint (ESLint)
- Kiểm tra kiểu (tsc)
- Kiểm thử đơn vị (pnpm test)
- Build (pnpm build)
- Phiên bản Node: 22
e2e.yml (Kiểm Thử E2E)
- Phụ thuộc vào: CI đạt
- Dịch vụ: PostgreSQL, Redis, Typesense, MinIO
- Trình duyệt: Chromium (Playwright)
- Tạo báo cáo artifact
deploy.yml (Triển Khai)
- Triển khai có điều kiện dựa trên nhánh
- Build & push Docker image
- Triển khai Kubernetes
- Thông báo trạng thái
security.yml (Quét Bảo Mật)
- Phân tích CodeQL
- Quét phụ thuộc
- SAST
load-test.yml (Hiệu Năng)
- Pipeline kiểm thử tải
- Đo điểm chuẩn hiệu năng
backup-verify.yml (Bảo Vệ Dữ Liệu)
- Xác minh sao lưu cơ sở dữ liệu
- Kiểm thử phục hồi
6. CHẤT LƯỢNG CODE & TIÊU CHUẨN
Cấu Hình TypeScript
tsconfig.base.json:
- Strict mode: BẬT ✓
- Target: ES2022
- Module Resolution: NodeNext
- Các cờ strict chính:
- noUncheckedIndexedAccess: true
- noImplicitOverride: true
- noPropertyAccessFromIndexSignature: true
- declaration: true (phát sinh .d.ts)
- sourceMap: true
Cấu Hình ESLint
eslint.config.mjs:
- Framework: ESLint 9 với hỗ trợ TypeScript
- Import Plugin: Sắp xếp import với các quy tắc đóng gói module
- Tích Hợp Prettier: Định dạng không xung đột
Các Quy Tắc:
- Biến không sử dụng: Lỗi (cho phép dấu _ ở đầu)
- Explicit any: Cảnh báo
- Nhập kiểu nhất quán: Lỗi (inline-type-imports)
- Không có console trong ứng dụng web: Lỗi
- Không import nội bộ chéo module: Lỗi (ngoại trừ kiểm thử)
- Đóng gói module: Bắt buộc (chỉ có thể import từ barrel exports)
Cấu Hình Prettier
- Single quotes: true
- Trailing comma: all
- Tab width: 2
- Semi-colons: true
- Line width: 100
- Arrow parens: always
Sự Sạch Sẽ của Code
- Comment TODO/FIXME/HACK: Tìm thấy 0
- Không Có Dấu Nợ Kỹ Thuật: Codebase sạch
- Đặt Tên Nhất Quán: Pascal case (Classes), camelCase (functions)
- Barrel Exports Module: Bắt buộc qua ESLint
7. FRAMEWORK KIỂM THỬ
Kiểm Thử Đơn Vị
Backend:
- Framework: Vitest 4.1.3
- Định dạng: Tệp .spec.ts cùng vị trí với source
- Độ phủ: 229 tệp spec
- Thiết lập: Supertest cho kiểm thử HTTP
Frontend:
- Framework: Vitest 4.1.3
- Định dạng: Tệp .spec.tsx trong thư mục tests
- Độ phủ: 45 tệp spec
- Thiết lập: React Testing Library + jsdom
Kiểm Thử Tích Hợp
Backend:
- Cấu hình riêng:
vitest.integration.config.ts - Lệnh:
pnpm test:integration - Sử dụng cơ sở dữ liệu kiểm thử
Kiểm Thử E2E
Công cụ: Playwright 1.59.1
- Kiểm thử Web: 15 tệp kiểm thử
- Kiểm thử API: 16 tệp kiểm thử
- Fixtures: Dữ liệu kiểm thử dùng chung
- Thiết lập toàn cục: Seeding cơ sở dữ liệu
- Dọn dẹp toàn cục: Xóa dữ liệu
- Trình duyệt: Chromium
- Báo cáo: HTML + trace artifacts
Phạm Vi E2E:
- Xác thực (đăng nhập, đăng ký, OAuth)
- Tin đăng (CRUD, media, kiểm duyệt)
- Tìm kiếm & lọc
- Thanh toán & callbacks
- Gói đăng ký
- Thao tác admin
- Khả năng đáp ứng
- Luồng điều hướng
8. THƯ VIỆN & PHỤ THUỘC
Phụ Thuộc Chính Backend
Framework & Lõi:
- @nestjs/common@11.0.0
- @nestjs/core@11.0.0
- @nestjs/cqrs@11.0.0
- reflect-metadata@0.2.0
- rxjs@7.8.0
Cơ Sở Dữ Liệu:
- @prisma/client@7.7.0
- @prisma/adapter-pg@7.7.0
- pg@8.20.0
API & Tài Liệu:
- @nestjs/swagger@11.2.7
- swagger-ui-express@5.0.1
Xác Thực:
- passport@0.7.0
- passport-jwt@4.0.1
- passport-google-oauth20@2.0.0
- @nestjs/jwt@11.0.2
- bcrypt@6.0.0
Caching & Tác Vụ Nền:
- ioredis@5.4.0
- @nestjs/schedule@6.1.1
- @nestjs/event-emitter@3.0.0
Tìm Kiếm:
- typesense@3.0.5
Lưu Trữ:
Xác Thực Dữ Liệu:
- class-validator@0.15.1
- class-transformer@0.5.1
Bảo Mật:
- helmet@8.1.0
- sanitize-html@2.17.2
- cookie-parser@1.4.7
Giám Sát & Ghi Log:
- @sentry/nestjs@10.47.0
- @sentry/profiling-node@10.47.0
- pino@10.3.1
- pino-pretty@13.0.0
- @willsoto/nestjs-prometheus@6.1.0
- prom-client@15.1.3
Email:
- nodemailer@8.0.5
- handlebars@4.7.9
Cloud:
- firebase-admin@13.7.0
Phụ Thuộc Chính Frontend
Lõi:
- react@18.3.0
- react-dom@18.3.0
- next@15.5.14
Quản Lý Trạng Thái:
- zustand@5.0.12
- @tanstack/react-query@5.96.2
Biểu Mẫu:
- react-hook-form@7.72.1
- @hookform/resolvers@5.2.2
- zod@4.3.6
UI & Tạo Kiểu:
- tailwindcss@3.4.0
- tailwind-merge@3.5.0
- class-variance-authority@0.7.1
- clsx@2.1.1
- lucide-react@1.7.0
Đa Ngôn Ngữ:
- next-intl@4.9.0
Bản Đồ:
Biểu Đồ:
- recharts@3.8.1
Giám Sát:
Hiệu Năng:
- web-vitals@5.2.0
9. CÁC MẪU HẠ TẦNG
Kiến Trúc Module Dùng Chung
Tiện Ích Domain:
- Hằng số, enums, kiểu
- Decorators (auth, cache, idempotency)
Dịch Vụ Hạ Tầng:
- Truy cập cơ sở dữ liệu (PrismaService)
- Caching (CacheService, RedisService)
- Mã hóa (FieldEncryptionService)
- Ghi log (LoggerService)
- Circuit breaker (khả năng chịu lỗi)
- Che giấu PII
- Event bus
Middleware:
- Bảo vệ CSRF
- Làm sạch đầu vào
- Middleware mã hóa
Guards:
- Xác thực JWT
- Kiểm soát truy cập dựa trên vai trò (RBAC)
- Throttler đằng sau proxy
Filters:
- Xử lý exception toàn cục
- Tích hợp Sentry
Pipes:
- Pipes xác thực
Xác Thực & Phân Quyền
Phương Thức Hỗ Trợ:
- JWT (Bearer tokens)
- Cục bộ (email/mật khẩu)
- OAuth 2.0 (Google, Zalo)
Quản Lý Token:
- Access token (15 phút)
- Refresh token (7 ngày)
- Token families (xoay vòng refresh token)
- Theo dõi thu hồi
Phân Quyền:
- Kiểm soát truy cập dựa trên vai trò (BUYER, SELLER, AGENT, ADMIN)
- Decorators guard
- Hạn chế ở cấp endpoint
Tích Hợp Bên Ngoài
- Cổng Thanh Toán: VNPay (Việt Nam)
- Công Cụ Tìm Kiếm: Typesense (toàn văn, geo-search)
- Lưu Trữ Đối Tượng: MinIO / AWS S3
- Email: Nodemailer + Handlebars
- Thông Báo Đẩy: Firebase Cloud Messaging
- Nhà Cung Cấp OAuth: Google, Zalo
- Giám Sát: Sentry, Prometheus, Grafana, Loki
10. TÌNH TRẠNG BẢO MẬT
Tính Năng Bảo Mật Tích Hợp
✓ Helmet - Header bảo mật (CSP, X-Frame-Options, HSTS, v.v.) ✓ CORS - Danh sách trắng dựa trên môi trường ✓ CSRF - Mẫu double-submit cookie ✓ Rate Limiting - Điều tiết theo từng route ✓ Làm Sạch Đầu Vào - Ngăn chặn XSS ✓ SQL Injection - Truy vấn tham số hóa (Prisma) ✓ Mã Hóa Trường - Trường PII được mã hóa lúc lưu trữ ✓ Trường Hash - Email/số điện thoại được hash để tra cứu ✓ Soft Deletes - Lưu trữ tuân thủ GDPR ✓ Audit Logging - Theo dõi hành động admin ✓ Circuit Breaker - Cuộc gọi bên ngoài an toàn khi thất bại ✓ Hash Mật Khẩu - bcrypt (6 vòng) ✓ Ký JWT - HS256 (có thể cấu hình)
Quét Bảo Mật
- CodeQL (GitHub Actions)
- Quét lỗ hổng phụ thuộc
- Phân tích SAST
11. HIỆU NĂNG & KHẢ NĂNG MỞ RỘNG
Chiến Lược Caching
- Redis: Cache phiên, bộ đếm giới hạn tốc độ, caching dữ liệu
- Cấp ứng dụng: Caching khóa mã hóa trường
- Cấp truy vấn: Caching truy vấn Prisma
Tối Ưu Cơ Sở Dữ Liệu
- Connection Pooling: PgBouncer (pool size 20, 200 max clients)
- Indexes: 30+ bao gồm compound indexes
- Lập kế hoạch truy vấn: Tối ưu cho các mẫu phổ biến
- PostGIS: Indexing địa lý-không gian cho truy vấn vị trí
Tối Ưu Tìm Kiếm
- Typesense: Công cụ tìm kiếm toàn văn
- Geo-search: Tích hợp Mapbox GL
- Lọc: Hỗ trợ tìm kiếm theo facet
Cân Bằng Tải
- Sau Proxy: Cấu hình tin tưởng proxy
- Rate Limiting: Điều tiết theo từng endpoint
- Circuit Breaker: Giảm cấp nhẹ nhàng
12. TÓM TẮT METRICS KIỂM THỬ
Độ Phủ Code Theo Lớp
| Khía Cạnh | Backend | Frontend |
|---|---|---|
| Kiểm Thử Đơn Vị | 229 tệp | 45 tệp |
| LOC Kiểm Thử | 23.886 | 3.864 |
| Kiểm Thử E2E | 16 bộ | 15 bộ |
| Tổng Kiểm Thử | ~261 | ~60 |
Thực Thi Kiểm Thử
- Cục bộ:
pnpm test - Tích hợp:
pnpm test:integration - E2E:
pnpm test:e2e - Báo cáo:
pnpm test:e2e:report
13. QUY TRÌNH PHÁT TRIỂN
Các Script Có Sẵn
Phát Triển:
pnpm dev # Khởi động tất cả ứng dụng ở chế độ dev
pnpm dev:api # Chỉ API
pnpm dev:web # Chỉ Web
Build:
pnpm build # Build tất cả ứng dụng
pnpm build:api # Chỉ API
pnpm build:web # Chỉ Web
Kiểm Thử:
pnpm test # Tất cả kiểm thử đơn vị
pnpm test:integration # Kiểm thử tích hợp
pnpm test:e2e # Kiểm thử E2E
pnpm test:e2e:report # Xem báo cáo
Chất Lượng Code:
pnpm lint # ESLint
pnpm format # Prettier
pnpm format:check # Kiểm tra Prettier
pnpm typecheck # Kiểm tra TypeScript
pnpm dep-cruise # Phân tích phụ thuộc
Cơ Sở Dữ Liệu:
pnpm db:generate # Tạo Prisma client
pnpm db:migrate:dev # Migrations cho dev
pnpm db:migrate:deploy # Migrations cho sản xuất
pnpm db:seed # Seed cơ sở dữ liệu
pnpm db:push # Đồng bộ lên DB
pnpm db:reset # Reset hoàn toàn
pnpm db:studio # Giao diện Prisma Studio
Git Hooks
- Husky: Hook trước khi commit
- Lint-staged: Chạy linters trên các tệp đã stage
- Pre-push: Kiểm tra kiểu & xác thực build
14. TÀI LIỆU & QUY ƯỚC
Tài Liệu Có Sẵn
CLAUDE.md- Hướng dẫn tích hợp AICONTRIBUTING.md- Hướng dẫn đóng góp.env.example- Mẫu thiết lập môi trường- Tài liệu Swagger API tại
/api/v1/docs
Quy Ước Đặt Tên
TypeScript/Tệp:
- Classes: PascalCase (UserService, ListingRepository)
- Functions: camelCase (createUser, getListings)
- Tệp: kebab-case (user.service.ts, create-user.command.ts)
- Thư mục: kebab-case (src/modules/auth)
Cơ Sở Dữ Liệu:
- Bảng: PascalCase (User, Listing, Payment)
- Cột: camelCase (firstName, phoneHash)
- Indexes: Đặt tên tường minh (ví dụ: idx_user_role_active)
15. DỊCH VỤ AI PYTHON (libs/ai-services)
Cấu Trúc
- Framework: FastAPI
- Ngôn ngữ: Python
- Vị trí:
/libs/ai-services/ - Kiểm thử: pytest trong thư mục
tests/ - Docker: Container hóa
Khả Năng
- Định giá/phân tích bất động sản
- Phân tích thị trường
- Tăng cường tìm kiếm bất động sản bằng AI
KẾT QUẢ KIỂM TOÁN - TÓM TẮT ĐIỀU HÀNH
✓ ĐIỂM MẠNH
-
Kiến Trúc Được Cấu Trúc Tốt
- Kiến trúc lục giác được áp dụng nhất quán
- Tách biệt mối quan tâm rõ ràng (domain/application/infrastructure/presentation)
- Đóng gói module được bắt buộc qua ESLint
-
Bảo Mật Cấp Doanh Nghiệp
- Nhiều lớp bảo mật (CSRF, CSP, giới hạn tốc độ, làm sạch đầu vào)
- Mã hóa cấp trường cho PII
- Audit logging để tuân thủ
- Quét SAST/CodeQL trong CI/CD
-
Kiểm Thử Toàn Diện
- 229 kiểm thử đơn vị backend (23.886 LOC)
- 45 kiểm thử component frontend (3.864 LOC)
- 31 bộ kiểm thử E2E (API + Web)
- Hỗ trợ kiểm thử tích hợp
-
Ngăn Xếp Công Nghệ Hiện Đại
- NestJS 11 với mẫu CQRS
- Next.js 15 App Router
- Prisma ORM với PostGIS
- Typesense cho tìm kiếm
- Zustand cho quản lý trạng thái
-
DevOps & Giám Sát
- Hỗ trợ Docker đa môi trường
- Stack giám sát đầy đủ (Prometheus, Grafana, Loki)
- Pipeline CI/CD với quét bảo mật
- Khả năng kiểm thử tải
-
Chất Lượng Code
- Chế độ TypeScript strict
- ESLint + Prettier bắt buộc
- Không có comment TODO/FIXME/HACK
- Phân tích dependency cruiser
⚠ NHẬN XÉT
-
Cơ Sở Dữ Liệu
- 13 migrations trong 4 ngày cho thấy sự không ổn định của schema trong quá trình phát triển
- Cân nhắc chiến lược migration dữ liệu cho môi trường sản xuất
-
Độ Phủ Kiểm Thử
- 70.569 LOC với 229+45 tệp kiểm thử (~tỷ lệ tệp kiểm thử 0,4%)
- Kiểm thử E2E bao gồm đường dẫn hạnh phúc, các trường hợp biên có thể cần mở rộng
- Cân nhắc thêm mutation testing
-
Tài Liệu
- README hạn chế
- Tài liệu cấp module có thể được mở rộng
- Có thể thêm ví dụ API vào tài liệu
-
Giám Sát
- Stack giám sát đã triển khai nhưng các quy tắc cảnh báo cần xác minh
- Mục tiêu SLO chưa được ghi lại tường minh
-
Xác Thực
- Nhà cung cấp OAuth (Google, Zalo) đã được cấu hình nhưng logic làm mới token có thể cần thêm xác thực
- Cân nhắc thêm hỗ trợ 2FA cho tài khoản admin
KHUYẾN NGHỊ
-
Danh Sách Kiểm Tra Trước Khi Sản Xuất
- Hoàn thiện schema cơ sở dữ liệu (dừng migrations mới)
- Kiểm thử tải ở quy mô
- Diễn tập khôi phục thảm họa
- Kiểm thử xâm nhập bảo mật
-
Điều Chỉnh Hiệu Năng
- Chiến lược warm-up cache
- Phân tích truy vấn cơ sở dữ liệu (slow log)
- Phân tích bundle frontend
-
Sẵn Sàng Vận Hành
- Tạo runbook
- Tài liệu lịch trực trực tuyến
- Quy trình phản ứng sự cố
- Chính sách lưu giữ log
-
Tuân Thủ
- Xác minh tuân thủ GDPR (soft deletes, xuất dữ liệu)
- Triển khai chính sách lưu giữ dữ liệu
- Điều khoản dịch vụ / Chính sách bảo mật
TRẠNG THÁI TRIỂN KHAI
Trạng Thái Hiện Tại: Phát triển/Staging Docker Compose: ✓ Đã cấu hình đầy đủ CI/CD: ✓ Pipeline GitHub Actions sẵn sàng Cơ Sở Dữ Liệu: ✓ 13 migrations đã triển khai Giám Sát: ✓ Stack đầy đủ có sẵn Quét Bảo Mật: ✓ CodeQL + kiểm tra phụ thuộc
Sẵn Sàng Cho Sản Xuất: Chờ kiểm toán bảo mật cuối cùng & kiểm thử tải
Báo Cáo Được Tạo: 11 tháng 4, 2026 Kiểm Toán Viên: Claude Code Phạm Vi: Phân tích codebase hoàn chỉnh