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
267 lines
14 KiB
Markdown
267 lines
14 KiB
Markdown
# Nhật Ký Thay Đổi
|
|
|
|
Tất cả các thay đổi đáng chú ý của GoodGo Platform sẽ được ghi lại trong tệp này.
|
|
|
|
Định dạng dựa trên [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
và dự án này tuân theo [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
### Đã thêm (CEO Audit Wave 13 — 2026-04-12)
|
|
- Quy trình kiểm tra CEO (TEC-1915) — kiểm tra toàn bộ codebase + xem xét trạng thái dự án
|
|
- Tài liệu kế hoạch với báo cáo 7 phần: tóm tắt kiểm tra, các vấn đề quan trọng, ưu tiên, khuyến nghị
|
|
- 6 subtask mới được tạo (TEC-1918 đến TEC-1923) cho Wave 13
|
|
- Cập nhật PROJECT_TRACKER với phần theo dõi Wave 13
|
|
|
|
### Kết Quả QA (2026-04-12)
|
|
- Lint: PASS (0 lỗi)
|
|
- TypeScript: 7 lỗi trong các tệp test web (thiếu kiểu vitest) — TEC-1918
|
|
- Kiểm thử đơn vị: 232 tệp, 1454 bài kiểm thử, TẤT CẢ ĐỀU PASS
|
|
- Build: TẤT CẢ 3 gói build thành công
|
|
- Git: Cây làm việc sạch
|
|
|
|
### Đã thêm
|
|
- Kiểm tra toàn diện CEO & kế hoạch triển khai (TEC-1882) — báo cáo 8 phần bao gồm kiến trúc, chất lượng, bảo mật
|
|
- 7 subtask mới được tạo (TEC-1888 đến TEC-1894) cho Wave 11D-13
|
|
- Cập nhật PROJECT_TRACKER với theo dõi subtask Waves 11D-13
|
|
- Cập nhật QA_TRACKER với báo cáo kiểm thử ngày 2026-04-11 (xác định 27 bài kiểm thử thất bại)
|
|
- Các báo cáo kiểm tra toàn diện: AUDIT_SUMMARY, COMPREHENSIVE_AUDIT, AUDIT_INDEX
|
|
|
|
### Đã xác định (từ CEO Audit 2026-04-11)
|
|
- 725 lỗi ESLint (712 có thể tự động sửa) — TEC-1888
|
|
- Lỗi TypeScript trong các bài kiểm thử web (json-ld.spec.tsx) — TEC-1888
|
|
- 27 bài kiểm thử rate limit guard thất bại — TEC-1889
|
|
- 3 module API chưa hoàn chỉnh (health, metrics, mcp) — TEC-1890
|
|
- Các MCP server chỉ là stub (~50 dòng mỗi cái) — TEC-1891
|
|
- Chỉ có 6 bài kiểm thử đơn vị web (cần 50+) — TEC-1892
|
|
- Không có mã hóa PII ở cấp độ trường — TEC-1893
|
|
- Không có MFA cho tài khoản agent/admin — TEC-1894
|
|
|
|
### Đã thêm trước đó
|
|
- Tài liệu kế hoạch kiểm tra CEO với ma trận cải tiến & tính năng đầy đủ (TEC-1682)
|
|
- Các vấn đề Wave 5: sửa lỗ hổng npm, độ phủ kiểm thử, Saved Searches, Dependabot
|
|
- Kết nối pool PgBouncer cho PostgreSQL môi trường production
|
|
- Tối ưu hóa SEO — JSON-LD, sitemap động, meta tags cho danh sách bất động sản
|
|
- Tài liệu tham khảo mã lỗi API
|
|
- Tăng cường tiêu đề bảo mật cho cả API và ứng dụng Web
|
|
- Dockerfile production đa giai đoạn cho NestJS API
|
|
- Kiểm tra giá trị JWT secret khi khởi động (từ chối giá trị giữ chỗ)
|
|
- Giới hạn kích thước tệp theo loại và phản hồi 413 cho tải lên media
|
|
- Rate limiting và auth guard cho MCP transport controller
|
|
- Xử lý lỗi bất đồng bộ cho các handler module quan trọng
|
|
- Component QueryErrorBoundary với tọa độ bản đồ thực tế (web)
|
|
- Endpoint xóa dữ liệu người dùng tuân thủ GDPR
|
|
- Cache kết quả tìm kiếm danh sách bất động sản với decorator @Cacheable
|
|
- Bản dịch i18n cho Auth + search và khả năng truy cập filter-bar
|
|
|
|
### Đã sửa
|
|
- MCP transport controller hiện yêu cầu xác thực JWT (BUG-004 đã giải quyết)
|
|
- 21 lỗi lint từ các commit GDPR/logger/caching
|
|
- Thay thế `new Logger()` bằng DI LoggerService xuyên suốt các module
|
|
- Đã sửa nhánh đích của CI workflow từ main sang master
|
|
- Lỗi lint và typecheck để chuẩn bị ra mắt MVP
|
|
|
|
### Đã thay đổi
|
|
- Tách các tệp lớn trong quá trình refactor logger
|
|
|
|
---
|
|
|
|
## [1.4.0] - 2026-04-08
|
|
|
|
### Đã thêm
|
|
- Redis caching cho kiểm tra quota người dùng với xóa cache theo tiền tố
|
|
- Kiểm thử đơn vị tầng domain trên tất cả các module (auth, payments, subscriptions, admin, analytics, listings, notifications, reviews, search, metrics)
|
|
- Các endpoint health check (`/health`, `/health/db`, `/health/redis`) sử dụng `@nestjs/terminus`
|
|
- Giao diện Định giá Bất động sản với tích hợp AVM (Automated Valuation Model) trên web frontend
|
|
|
|
### Đã thay đổi
|
|
- Cải thiện cache service với các mẫu xóa theo tiền tố
|
|
- Nâng cao các handler truy vấn analytics với tầng caching
|
|
|
|
### Đã sửa
|
|
- Giải quyết các lỗi lint trên toàn bộ codebase
|
|
|
|
---
|
|
|
|
## [1.3.0] - 2026-03-28
|
|
|
|
### Đã thêm
|
|
- Hệ thống gửi thông báo hoàn chỉnh với email (Nodemailer + Handlebars), push (Firebase Cloud Messaging), và các kênh trong ứng dụng
|
|
- Trực quan hóa heatmap quận huyện bằng Mapbox và dashboard hiệu suất agent trên web frontend
|
|
- Module đánh giá với đầy đủ các endpoint CRUD, các handler CQRS, và value object đánh giá 1-5 sao
|
|
- Kiểm thử đơn vị cho các module analytics, metrics, notifications, payments và search
|
|
- Cải thiện geo-search với truy vấn không gian PostGIS và các event handler listing-approved của Typesense
|
|
- Endpoint `/health` chuyên dụng với phản hồi timestamp
|
|
|
|
### Đã thay đổi
|
|
- Refactor nội bộ cache service và các handler analytics để tăng độ tin cậy
|
|
|
|
### Đã sửa
|
|
- Thiếu các thuộc tính `AuthState` trong các mock kiểm thử web frontend
|
|
- Cải thiện quy trình E2E: bước Prisma generate, cache trình duyệt, trace artifacts
|
|
|
|
---
|
|
|
|
## [1.2.0] - 2026-03-20
|
|
|
|
### Đã thêm
|
|
- Tích hợp React Query cho data fetching với UX thử lại khi lỗi
|
|
- Nút chuyển đổi dark mode cho web frontend
|
|
- Tầng Redis caching cho các đường dẫn hot của search và analytics
|
|
- Pipeline NLP tiếng Việt (Underthesea) để phân tích mô tả bất động sản trong AI services
|
|
- `MetricsService`, `HttpMetricsInterceptor` Prometheus, và các hằng số metric tùy chỉnh
|
|
- Trang Agent Profile, xác minh KYC, Subscription, và bảng điều khiển Payment trên web frontend
|
|
- Kiểm thử đơn vị cho các MCP server (tìm kiếm bất động sản, phân tích thị trường, định giá)
|
|
- Kiểm thử đơn vị cho các hàm kiểm tra và tiện ích web frontend
|
|
|
|
### Đã sửa
|
|
- Xóa thông tin xác thực MinIO được mã hóa cứng; thêm hỗ trợ presigned URL cho tải lên media
|
|
- Áp dụng kiểm tra JWT secret cho tất cả môi trường (không chỉ production)
|
|
- Thêm chỉ mục `Review.userId` còn thiếu để tăng hiệu suất truy vấn FK
|
|
|
|
---
|
|
|
|
## [1.1.0] - 2026-03-12
|
|
|
|
### Đã thêm
|
|
- Dịch vụ phát hiện danh sách bất động sản trùng lặp để ngăn chặn các bài đăng dư thừa
|
|
- Giới hạn quota subscription với giới hạn tính năng theo gói và đo lường mức sử dụng
|
|
- Các chiến lược OAuth backend Google và Zalo cho đăng nhập mạng xã hội
|
|
- 58 bài kiểm thử đơn vị bao phủ các đường dẫn auth, payment và subscription quan trọng
|
|
- Skeleton loading, error boundary, và cải thiện khả năng truy cập trên web frontend
|
|
- Tích hợp theo dõi lỗi Sentry cho cả API và ứng dụng web
|
|
|
|
### Đã sửa
|
|
- Tăng cường cấu hình triển khai Docker production cho tất cả các dịch vụ
|
|
|
|
---
|
|
|
|
## [1.0.0] - 2026-03-01
|
|
|
|
### Đã thêm
|
|
|
|
#### Xác Thực & Bảo Mật
|
|
- Đăng ký và đăng nhập người dùng bằng số điện thoại và mật khẩu
|
|
- JWT access token (hết hạn sau 15 phút) với xoay vòng refresh token (hết hạn sau 7 ngày)
|
|
- Phát hiện xoay vòng dựa trên token family để ngăn chặn tấn công replay
|
|
- Hỗ trợ đăng nhập mạng xã hội OAuth (Google, Zalo)
|
|
- Quy trình xác minh KYC (Know Your Customer) (NONE -> PENDING -> VERIFIED/REJECTED)
|
|
- Kiểm soát truy cập theo vai trò với decorator `@Roles()` (USER, AGENT, ADMIN)
|
|
- Rate limiting: mặc định 60 req/phút, 10 req/phút cho auth, 20 req/phút cho payment callback
|
|
- `ThrottlerBehindProxyGuard` để theo dõi IP nhận biết X-Forwarded-For
|
|
- Tiêu đề bảo mật Helmet, cấu hình CORS
|
|
- Kiểm tra đầu vào (class-validator) và làm sạch nội dung (sanitize-html)
|
|
- Bảo vệ CSRF với mẫu double-submit cookie
|
|
- Che giấu PII trong structured log (Pino)
|
|
- Băm mật khẩu Bcrypt
|
|
|
|
#### Danh Sách Bất Động Sản
|
|
- CRUD đầy đủ cho danh sách bất động sản với máy trạng thái (DRAFT -> PENDING_REVIEW -> ACTIVE -> RESERVED -> SOLD/RENTED)
|
|
- Hỗ trợ tải lên media (S3/MinIO) với kiểm tra tệp
|
|
- Chấm điểm kiểm duyệt hỗ trợ bởi AI qua Claude API
|
|
- Hàng đợi kiểm duyệt admin với phê duyệt/từ chối hàng loạt
|
|
- Tạo danh sách bị giới hạn bởi quota gắn với gói subscription
|
|
|
|
#### Tìm Kiếm & Khám Phá
|
|
- Tìm kiếm bất động sản toàn văn bản qua Typesense với hỗ trợ tiếng Việt
|
|
- Tìm kiếm địa lý không gian bằng PostGIS (truy vấn lat/long + bán kính)
|
|
- Lọc nhiều mặt theo giá, loại bất động sản, số phòng ngủ, quận huyện
|
|
- Cập nhật chỉ mục tìm kiếm theo sự kiện (listing approved/updated/sold -> re-index)
|
|
- Xóa cache theo tiền tố cho kết quả tìm kiếm
|
|
|
|
#### Thanh Toán
|
|
- Xử lý thanh toán với tích hợp các nhà cung cấp VNPay, MoMo và ZaloPay
|
|
- Xử lý webhook callback idempotent với xác minh chữ ký
|
|
- Hỗ trợ hoàn tiền
|
|
- Chuyển đổi trạng thái nguyên tử (PENDING -> COMPLETED/FAILED)
|
|
- Phát sự kiện khi hoàn thành/thất bại thanh toán cho xử lý downstream
|
|
|
|
#### Subscription & Thanh Toán Định Kỳ
|
|
- Các gói subscription với cờ tính năng phân tầng (cột JSON)
|
|
- Đo lường mức sử dụng và kiểm tra quota (được hỗ trợ bởi Redis)
|
|
- Nâng cấp và hủy gói
|
|
- Theo dõi lịch sử thanh toán
|
|
- Theo dõi mức sử dụng theo sự kiện (`listing.created` -> đo lường mức sử dụng)
|
|
|
|
#### Bảng Điều Khiển Admin
|
|
- Dashboard với thống kê toàn hệ thống
|
|
- Quản lý người dùng (liệt kê, xem, cấm/bỏ cấm)
|
|
- Hàng đợi phê duyệt KYC với hành động phê duyệt/từ chối
|
|
- Hàng đợi kiểm duyệt danh sách với kiểm duyệt hàng loạt
|
|
- Thống kê doanh thu và analytics
|
|
- Điều chỉnh subscription cho người dùng cá nhân
|
|
|
|
#### Analytics & Dữ Liệu Thị Trường
|
|
- Báo cáo thị trường theo quận huyện với tổng hợp không gian PostGIS
|
|
- Phân tích xu hướng giá theo loại bất động sản và quận huyện
|
|
- Dữ liệu heatmap quận huyện (tổng hợp địa lý)
|
|
- Theo dõi và cập nhật chỉ số thị trường
|
|
- Phân phối báo cáo dựa trên cache
|
|
|
|
#### Thông Báo
|
|
- Gửi thông báo đa kênh: EMAIL, SMS, PUSH (FCM), IN_APP
|
|
- 8 listener theo sự kiện: email chào mừng, phê duyệt KYC, phê duyệt/từ chối danh sách, xác nhận/thất bại thanh toán, hết hạn subscription, vượt quota
|
|
- Mẫu email Handlebars với bản địa hóa tiếng Việt
|
|
- Tùy chọn thông báo người dùng (từ chối nhận theo kênh/loại)
|
|
|
|
#### Đánh Giá
|
|
- Đánh giá bất động sản và agent với xếp hạng 1-5 sao
|
|
- CRUD đánh giá với tính đa hình đối tượng (agent hoặc bất động sản)
|
|
- Tính toán xếp hạng trung bình theo đối tượng
|
|
|
|
#### Máy Chủ MCP (Model Context Protocol)
|
|
- Property Search Server: `search_properties`, `compare_properties`, `get_property_details`
|
|
- Market Analytics Server: `get_market_report`, `analyze_trends`, `get_price_indices`
|
|
- Valuation Server: `estimate_valuation`, `extract_features`, `compare_valuations` (XGBoost qua FastAPI)
|
|
- HTTP transport controller với `McpRegistryService`
|
|
|
|
#### Dịch Vụ AI
|
|
- Microservice FastAPI với mô hình định giá bất động sản XGBoost
|
|
- Kiểm duyệt nội dung mô tả danh sách được hỗ trợ bởi Claude API
|
|
- Tiền xử lý NLP tiếng Việt với Underthesea
|
|
|
|
#### Hạ Tầng
|
|
- PostgreSQL 16 với extension PostGIS (22 model, chỉ mục không gian)
|
|
- Tầng Redis caching cho search, analytics, quota và dữ liệu phiên
|
|
- Công cụ tìm kiếm Typesense với hỗ trợ tiếng Việt
|
|
- Endpoint Prometheus metrics với histogram thời gian yêu cầu HTTP và bộ đếm tỷ lệ lỗi
|
|
- Dashboard Grafana tự động cấu hình từ thư mục `monitoring/`
|
|
- Ghi log JSON có cấu trúc Pino với correlation ID
|
|
- Prisma ORM với hệ thống migration và dữ liệu seed (quận huyện/phường Thành phố Hồ Chí Minh, bất động sản mẫu, các gói subscription)
|
|
|
|
#### Frontend (Next.js 15)
|
|
- App Router với Tailwind CSS và quản lý trạng thái Zustand
|
|
- Trang tìm kiếm bất động sản với tích hợp bản đồ Mapbox GL
|
|
- Trang chi tiết danh sách với thư viện media
|
|
- Dashboard agent với quản lý KYC, subscription và thanh toán
|
|
- Trực quan hóa heatmap quận huyện
|
|
- Giao diện định giá bất động sản với tích hợp AVM
|
|
- Nút chuyển đổi dark mode
|
|
- Skeleton loading và error boundary
|
|
- Văn bản giao diện tiếng Việt xuyên suốt (loại bất động sản, quận huyện, tiền tệ theo VND)
|
|
|
|
#### Trải Nghiệm Nhà Phát Triển
|
|
- Monorepo với pnpm workspaces và Turborepo
|
|
- ESLint với các quy tắc sắp xếp import
|
|
- Định dạng code Prettier
|
|
- Git hook Husky
|
|
- Kiểm thử E2E với Playwright (14 tệp kiểm thử web)
|
|
- CI pipeline GitHub Actions (lint -> typecheck -> test -> build)
|
|
|
|
### Bảo Mật
|
|
- Lưu trữ token dựa trên cookie httpOnly với tăng cường CSRF
|
|
- Khóa idempotency trên các luồng thanh toán với kiểm tra số tiền
|
|
- Kiểm tra magic byte cho tệp tải lên media
|
|
- Ghi log kiểm tra admin
|
|
- Kiểm tra audience/issuer JWT
|
|
- Kiểm tra biến môi trường production
|
|
- `.env.example` được làm sạch (không rò rỉ bí mật)
|
|
- Hook tắt dịch vụ nhẹ nhàng để kết thúc tiến trình sạch
|
|
|
|
[Unreleased]: https://github.com/goodgo/platform-ai/compare/v1.4.0...HEAD
|
|
[1.4.0]: https://github.com/goodgo/platform-ai/compare/v1.3.0...v1.4.0
|
|
[1.3.0]: https://github.com/goodgo/platform-ai/compare/v1.2.0...v1.3.0
|
|
[1.2.0]: https://github.com/goodgo/platform-ai/compare/v1.1.0...v1.2.0
|
|
[1.1.0]: https://github.com/goodgo/platform-ai/compare/v1.0.0...v1.1.0
|
|
[1.0.0]: https://github.com/goodgo/platform-ai/releases/tag/v1.0.0
|