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
|
ac3947b42d
|
docs: update PROJECT_TRACKER with actual progress across all phases
- Phase 0: 6/6 complete
- Phase 1: 7/8 complete (Auth frontend remaining)
- Phase 2: 4/5 complete (Admin module remaining)
- Link commit hashes to each completed task
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-04-08 02:05:37 +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 |
|
Ho Ngoc Hai
|
c981bff771
|
feat(shared): add error handling & structured logging strategy
- Global exception filter with consistent error response format
- Domain exceptions (NotFoundException, ValidationException, etc.)
- Error codes enum for domain-specific error identification
- Correlation ID middleware for request tracing
- Request/response logging middleware with structured JSON
- PII masking in logs (emails, phone numbers, sensitive fields)
- Enhanced LoggerService with pino formatters and ISO timestamps
- Tests for exception filter, domain exceptions, and PII masker
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-04-08 00:18:21 +07:00 |
|
Ho Ngoc Hai
|
1fb7bb39d2
|
feat(shared): add shared module with domain primitives, infrastructure services, and utils
Domain primitives: BaseEntity, AggregateRoot, ValueObject, DomainEvent, Result<T,E>
Infrastructure: PrismaService, RedisService, LoggerService (pino), EventBusService
Utils: Vietnam phone validator/normalizer, VND currency formatter, Vietnamese slug generator
Includes 45 unit tests covering all domain primitives, validators, and formatters.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-04-08 00:07:27 +07:00 |
|