Ho Ngoc Hai
97a9541fde
fix(lint): resolve 327 ESLint errors blocking CI pipeline
...
Auto-fix 326 `@typescript-eslint/consistent-type-imports` violations
across 182 files with `pnpm lint --fix`. Suppress 1 `no-empty-pattern`
in Playwright e2e fixture where empty destructuring is idiomatic.
All 1454 unit tests pass. Typecheck clean.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-12 21:07:40 +07:00
Ho Ngoc Hai
db7147a95d
feat: add pricing checkout flow, MFA type fixes, and Wave 13 audit docs
...
- Pricing page: enhanced with checkout modal integration, plan
comparison table, and subscription funnel
- Payment return page: new VNPay/MoMo callback handler
- Subscription components: new checkout-modal with payment method
selection (VNPay, MoMo, ZaloPay)
- API modules: type-safe PII encryption, improved error handling in
MFA/auth/payments/analytics/search/notifications modules
- Audit docs: comprehensive Wave 13 platform assessment, pricing
audit, production readiness checklist
- Updated PROJECT_TRACKER with Wave 13 status
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-12 20:17:11 +07:00
Ho Ngoc Hai
34202f2527
refactor(api): replace new Logger() with DI LoggerService and split large files
...
- Migrate 30 files from `new Logger(ClassName.name)` to injected LoggerService
for consistent PII masking and centralized logging config
- Split prisma-admin-query.repository.ts (313→121 lines) into admin-stats.queries.ts
and admin-user.queries.ts
- Split admin.controller.ts (285→154 lines) into admin-moderation.controller.ts
- Split prisma-listing.repository.ts (274→111 lines) into listing-read.queries.ts
- Update 28 test files with mock LoggerService
- All 831 tests passing, zero direct new Logger() calls remaining
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-10 05:35:04 +07:00
Ho Ngoc Hai
f15e98a33b
feat(payments): improve VNPay, MoMo, ZaloPay services with ConfigService
...
Migrate payment gateway services from hardcoded config to NestJS
ConfigService injection. Improve payment handler error handling and
update gateway factory specs.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-09 09:43:19 +07:00
Ho Ngoc Hai
ee50b4c07c
feat(api): add Vietnam validators and migrate payment services to ConfigService
...
- Create custom class-validator decorators: IsVietnamPhone, IsVietnamDistrict, IsVND
- Replace process.env/requireEnv() with NestJS ConfigService DI in VNPay, MoMo, ZaloPay services
- Update all payment infrastructure tests with ConfigService mocks (42 tests passing)
TEC-1569
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-09 09:23:10 +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
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
7e64e32d8f
feat(web): add error boundaries, 404 page, loading states, and SEO metadata
...
- Add branded not-found.tsx with navigation links
- Add global error.tsx boundary with retry and error digest display
- Add root loading.tsx skeleton for route transitions
- Expand root layout metadata: OpenGraph, Twitter cards, robots, viewport
- Add sitemap.ts and robots.ts for SEO
- Add search page and listing detail metadata via route layouts
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 04:05:55 +07:00
Ho Ngoc Hai
ad7713968a
feat(payments): implement Payments module with VNPay, MoMo, ZaloPay integration
...
Implement complete payment processing module following DDD + CQRS patterns:
- Domain layer: PaymentEntity aggregate, Money value object, domain events
- Infrastructure: PrismaPaymentRepository, VnpayService, MomoService, ZalopayService
- PaymentGatewayFactory pattern for provider abstraction
- CQRS Commands: CreatePayment, HandleCallback, RefundPayment
- CQRS Queries: GetPaymentStatus, ListTransactions
- Callback/webhook endpoints with signature verification and idempotency
- 23 unit tests covering domain, VNPay service, and gateway factory
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 01:57:23 +07:00