Files
goodgo-platform/docs/audits/COMPREHENSIVE_AUDIT_REPORT_2026-04-11.md
Ho Ngoc Hai 11f2bf26e6
Some checks failed
CI / Lint → Typecheck → Test → Build (22) (push) Failing after 29s
CI / E2E Tests (push) Has been skipped
CodeQL Analysis / CodeQL (javascript-typescript) (push) Failing after 2m42s
Deploy / Build Web Image (push) Failing after 27s
Deploy / Build AI Services Image (push) Failing after 29s
E2E Tests / Playwright E2E (push) Failing after 43s
Deploy / Build API Image (push) Failing after 1m31s
Security Scanning / Dependency Audit (pnpm) (push) Failing after 6s
Security Scanning / Trivy Scan — API Image (push) Failing after 5m35s
Security Scanning / Trivy Scan — AI Services Image (push) Failing after 3m45s
Deploy / Deploy to Staging (push) Has been skipped
Deploy / Smoke Test Staging (push) Has been skipped
Deploy / Deploy to Production (push) Has been skipped
Deploy / Smoke Test Production (push) Has been skipped
Deploy / Rollback Staging (push) Has been skipped
Deploy / Rollback Production (push) Has been skipped
Security Scanning / Trivy Scan — Web Image (push) Failing after 13m51s
Security Scanning / Trivy Filesystem Scan (push) Failing after 14m46s
Security Scanning / Security Gate (push) Has been cancelled
chore: update project documentation, audit reports, and initialize IDE configuration files
2026-04-19 03:12:54 +07:00

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 admin
  • agents-api.ts - Dữ liệu môi giới
  • analytics-api.ts - Truy vấn phân tích
  • auth-api.ts - Endpoint xác thực
  • payment-api.ts - Thao tác thanh toán
  • subscription-api.ts - Quản lý gói đăng ký
  • listings-api.ts - CRUD tin đăng
  • leads-api.ts - Quản lý khách hàng tiềm năng
  • inquiries-api.ts - Quản lý yêu cầu tư vấn
  • valuation-api.ts - Truy vấn định giá
  • saved-search-api.ts - Tìm kiếm đã lưu
  • comparison-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ập
  • theme-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):

  1. Schema ban đầu (20260407165528_init)
  2. Indexes khóa ngoại (20260407210149_add_missing_fk_indexes)
  3. Idempotency thanh toán (20260408000000_add_idempotency_key_to_payment)
  4. Sửa toàn vẹn schema (20260408061200_fix_schema_integrity)
  5. Hạn mức analytics/media (20260408080000_add_analytics_media_quota_fields)
  6. Index đánh giá (20260408160000_add_review_userid_index)
  7. Trạng thái đọc thông báo (20260409000000_add_notification_read_at)
  8. Compound indexes (20260409100000_add_compound_indexes_query_optimization)
  9. Tối ưu truy vấn (20260409120000_add_missing_query_indexes)
  10. Soft deletes (20260410000000_add_user_soft_delete_fields)
  11. Nhật ký kiểm toán admin (20260410100000_add_admin_audit_log)
  12. Cascade deletes (20260411000000_add_cascade_delete_strategies)
  13. 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:
    1. Lint (ESLint)
    2. Kiểm tra kiểu (tsc)
    3. Kiểm thử đơn vị (pnpm test)
    4. 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:

Bảo Mật:

Giám Sát & Ghi Log:

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:

Biểu Mẫu:

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 AI
  • CONTRIBUTING.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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. Độ 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
  3. 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
  4. 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
  5. 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Ị

  1. 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
  2. Đ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
  3. 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
  4. 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