Ho Ngoc Hai
25420720e7
fix(api,ci): remove type-only imports for DI and isolate CI ports from dev
...
- Remove `type` keyword from NestJS injectable class imports across all
modules to fix runtime DI resolution (330+ handler/listener files)
- Offset CI docker-compose ports (5433/6380/8109/9002) to avoid
conflicts with running dev containers
- Update .env.test, playwright.config.ts, and e2e workflow to use
isolated CI ports with configurable overrides
- Fix prisma/seed.ts to use deterministic IDs for Prisma 7 upsert
compatibility (phoneHash replaced phone as unique index)
- Add dedicated Docker bridge network for CI service containers
Co-Authored-By: Claude Opus 4 (1M context) <noreply@anthropic.com >
2026-04-13 01:40:14 +07:00
Ho Ngoc Hai
8179f1c16e
feat(api): complete domain event publishing with aggregate root pattern
...
- Add getUncommittedEvents() and commit() to AggregateRoot base class
- Create 6 new domain events: SubscriptionExpired, SubscriptionRenewed,
ListingStatusChanged, UserKycUpdated, UserDeactivated, PaymentRefunded
- Wire events into entity state changes: SubscriptionEntity (markExpired,
renewPeriod), ListingEntity (all transitions), UserEntity (KYC, deactivate),
PaymentEntity (markRefunded)
- Add 7 new event listeners across notifications, admin, and search modules
(25 total @OnEvent handlers)
- Fix ReviewDeletedListener to handle LISTING target type
- Restore watcher notifications in ListingSoldListener
- Update barrel exports and module registrations
Resolves: TEC-1564
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-09 10:22:20 +07:00
Ho Ngoc Hai
c9fc1f52cb
feat(listings): add price validator, moderation service, and improve handlers
...
Add domain-level price validator and moderation services with Prisma
implementation. Improve listing creation, status management, and media
upload handlers. Add price validator spec.
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-09 09:43:06 +07:00
Ho Ngoc Hai
8a33aae026
feat(listings): implement Listings module with CRUD, media upload, and moderation
...
Full DDD/CQRS implementation for the Listings module (TEC-1423):
- Domain: Property, Listing, PropertyMedia entities with status machine
- Value Objects: Address, GeoPoint, Price with validation
- Events: ListingCreated, ListingApproved, ListingSold
- Commands: CreateListing, UpdateListingStatus, UploadMedia, ModerateListing
- Queries: GetListing, SearchListings, GetPendingModeration
- Infrastructure: Prisma repositories with PostGIS support, MinIO media storage
- Presentation: REST controller with JWT auth, role-based moderation
- 21 domain unit tests (all passing)
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-08 01:47:15 +07:00