Ho Ngoc Hai
9b2b8c2ba5
test(e2e): add 14 new web E2E test files for critical user flows
...
Cover auth (login, register, OAuth callbacks), search with filters,
listing detail, dashboard, analytics, create listing form, admin
dashboard/users/moderation/KYC, navigation routing, and responsive
design. Total 91 test cases using Playwright with API route mocking.
Also fix mcp-servers tsconfig deprecation warning for TS 7.x compat.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 13:13:46 +07:00
Ho Ngoc Hai
2502aa69b7
fix: production readiness — resolve build, lint, and code quality issues
...
- Fix Next.js build failure: remove duplicate route at (dashboard)/listings/[id]
that conflicted with (public)/listings/[id] (same URL path in two route groups)
- Fix 772 ESLint errors: auto-fix import ordering (import-x/order), remove unused
imports/variables, convert empty interfaces to type aliases, replace require()
with ESM imports, fix consistent-type-imports violations
- Add CLAUDE.md for developer onboarding documentation
- All checks pass: 0 lint errors, typecheck clean, 230 tests passing, build success
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 07:15:06 +07:00
Ho Ngoc Hai
e60b95cdec
fix(infra): harden AI service — graceful shutdown, rate limiting, API key auth, pinned deps, Grafana secrets
...
- Add dumb-init + --timeout-graceful-shutdown 30 to AI service Dockerfile
- Add slowapi rate limiting (configurable via AI_RATE_LIMIT) and X-API-Key auth middleware
- Pin all Python dependencies to exact versions for reproducible builds
- Move Grafana admin credentials from env vars to Docker secrets in production compose
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 06:13:29 +07:00
Ho Ngoc Hai
811417d77d
fix: restrict CORS origins, require payment env vars, replace raw SQL with Prisma findMany
...
- AI service: replace allow_origins=["*"] with env-configured AI_CORS_ORIGINS
- Payment services (VNPay, MoMo, ZaloPay): use requireEnv() instead of empty string defaults for credentials
- Search indexer: replace raw SQL template literals with Prisma findMany + parameterized PostGIS queries
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 06:11:59 +07:00
Ho Ngoc Hai
271ad76e6f
fix: resolve E2E test failures and API runtime issues for Docker dev environment
...
- Fix DI issues: circular MCP module dependency, EventBus type import,
SearchModule provider, CacheService metric counters placement
- Fix Express 5 readonly req.query in SanitizeInputMiddleware
- Fix Typesense client lazy initialization (getter instead of constructor)
- Fix MinIO bucket init error handling (non-fatal on 403)
- Fix missing class-validator decorators on bigint DTO fields (priceVND, amountVND)
- Fix subscription plan 404 (was returning 500 for invalid tier)
- Disable CSRF and raise rate limits in test environment
- Update E2E tests to match actual API response shapes
- Update CI workflow with Redis, Typesense, MinIO services and env vars
All 101 API E2E tests now pass against Docker dev environment.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 05:44:00 +07:00
Ho Ngoc Hai
cb00b12d7b
feat(mcp): add MCP Server Integration — Property Search, Analytics, Valuation
...
Implement 3 MCP servers in libs/mcp-servers/ using @modelcontextprotocol/sdk:
- Property Search: NL search via Typesense, property comparison, detail lookup
- Market Analytics: market reports, price trends, district comparison
- Valuation: AVM integration with Python AI service, feature extraction, batch valuation
Includes NestJS integration module with SSE transport for in-process hosting.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 03:22:27 +07:00
Ho Ngoc Hai
d99dfbafbc
feat(monitoring): add Prometheus metrics endpoint and Grafana dashboards
...
Add observability stack with @willsoto/nestjs-prometheus for /metrics endpoint,
Prometheus scraping config, and 4 auto-provisioned Grafana dashboards
(API overview, database, search, business metrics).
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 03:08:54 +07:00
Ho Ngoc Hai
b392bc3570
feat(ai-services): add Python FastAPI AI/ML services container
...
Create libs/ai-services/ with FastAPI app providing:
- POST /avm/predict — XGBoost-backed property price prediction (heuristic fallback)
- POST /avm/extract-features — Vietnamese NLP feature extraction from listing text
- POST /moderation/check — content moderation with rule-based flagging
- GET /health — health check endpoint
Includes Dockerfile (Python 3.12), docker-compose integration, Pydantic models,
and 9 passing tests covering all endpoints.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 03:08:39 +07:00