## Core Features - 6 types of reward calculation (Share Right 500U, Province Team 20U, Province Area 15U+1% hashpower, City Team 40U, City Area 35U+2% hashpower, Community Right 80U) - 24-hour countdown mechanism for pending rewards - Reward settlement with multi-currency support (BNB/OG/USDT/DST) - Automatic reward expiration with scheduled tasks ## Domain Layer - RewardLedgerEntry aggregate root with state machine (PENDING -> SETTLEABLE -> SETTLED, PENDING -> EXPIRED) - RewardSummary aggregate for user reward overview - Value objects: Money, Hashpower, RewardSource, RewardStatus, RightType - Domain events: RewardCreated, RewardClaimed, RewardSettled, RewardExpired - Domain services: RewardCalculationService, RewardExpirationService ## Application Layer - RewardApplicationService for orchestrating business workflows - RewardExpirationScheduler for automatic expiration processing ## Infrastructure Layer - PostgreSQL persistence with Prisma ORM - Redis caching integration - Kafka event publishing/consuming - External service clients (Referral, Authorization, Wallet) ## API Layer - REST endpoints: /health, /rewards/summary, /rewards/details, /rewards/pending, /rewards/settle - JWT authentication with Passport.js - Swagger/OpenAPI documentation ## Testing (77 tests, 100% pass rate) - 43 unit tests for domain logic (Money, Hashpower, aggregates) - 20 integration tests for application services - 14 E2E tests for API endpoints - Docker Compose test infrastructure (PostgreSQL, Redis, Kafka) ## Documentation - docs/ARCHITECTURE.md - DDD architecture overview - docs/API.md - REST API documentation - docs/DEVELOPMENT.md - Developer guide - docs/TESTING.md - Testing guide - docs/DEPLOYMENT.md - Deployment guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| api | ||
| application | ||
| config | ||
| domain | ||
| infrastructure | ||
| shared | ||
| app.module.ts | ||
| main.ts | ||