# 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ữ:** - @aws-sdk/client-s3@3.1026.0 - @aws-sdk/s3-request-presigner@3.1026.0 **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 Đồ:** - mapbox-gl@3.21.0 **Biểu Đồ:** - recharts@3.8.1 **Giám Sát:** - @sentry/nextjs@10.47.0 **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:** ```bash pnpm dev # Khởi động tất cả ứng dụng ở chế độ dev pnpm dev:api # Chỉ API pnpm dev:web # Chỉ Web ``` **Build:** ```bash pnpm build # Build tất cả ứng dụng pnpm build:api # Chỉ API pnpm build:web # Chỉ Web ``` **Kiểm Thử:** ```bash 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:** ```bash 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:** ```bash 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