388 lines
22 KiB
Markdown
388 lines
22 KiB
Markdown
# GoodGo Platform — Roadmap & Development Tracker
|
|
|
|
> Last updated: 2026-03-06
|
|
> Maintained by: CTO & Agents Team
|
|
> Status convention: `DONE` | `IN-PROGRESS` | `TODO` | `BLOCKED` | `SKIPPED`
|
|
|
|
---
|
|
|
|
## I. Platform Overview
|
|
|
|
| Metric | Current | Phase 1 Target | Phase 2 Target | Phase 3 Target |
|
|
|--------|:-------:|:--------------:|:--------------:|:--------------:|
|
|
| Services production-ready | 8/24 | 12/24 | 16/24 | 20/24 |
|
|
| Test coverage (estimated) | ~50% | 70% | 80% | 85% |
|
|
| POS verticals fully working | 5/5 | 2/5 (stable) | 5/5 | 5/5 |
|
|
| Payment methods live | 0 | 2 | 3 | 4+ |
|
|
| Real-time features | 0 | KDS + Orders | Full POS | Full |
|
|
| Mobile apps | Template | Template | iOS v1 | iOS + Android |
|
|
| Environment | Dev + Staging ready | Staging | Staging + Prod | Prod (SLA 99.9%) |
|
|
|
|
---
|
|
|
|
## II. Microservices Status
|
|
|
|
### Production-Ready (8)
|
|
|
|
| Service | Controllers | Tests | Notes | Last Updated |
|
|
|---------|:-----------:|:-----:|-------|:------------:|
|
|
| iam-service | 12 | 30 | OAuth2, RBAC, MFA, Sessions, Access Reviews | 2026-03-06 |
|
|
| storage-service | 11 | 10 | Multipart uploads, versioning, signed URLs | 2026-03-06 |
|
|
| merchant-service | 10 | 2 | Shop lifecycle, subscription plans (NEW) | 2026-03-06 |
|
|
| wallet-service | 5 | 5 | Balance, loyalty points, holds | 2026-03-06 |
|
|
| order-service | 3 | 2 | Full order lifecycle, POS dashboard | 2026-03-06 |
|
|
| membership-service | 2 | 12 | Tier management, loyalty | 2026-03-06 |
|
|
| promotion-service | 5 | 5 | Vouchers, campaigns, discounts | 2026-03-06 |
|
|
| chat-service | 3 | 6 | SignalR + Redis backplane | 2026-03-06 |
|
|
|
|
### In-Progress (11)
|
|
|
|
| Service | Status | What's Done | What's Missing | Priority |
|
|
|---------|--------|-------------|----------------|:--------:|
|
|
| fnb-engine | Controllers OK | Kitchen/Reservation/Session/Table controllers | Handler logic, 0 tests | P0 |
|
|
| catalog-service | Basic CRUD | Products, Categories controllers | Variants, advanced queries | P1 |
|
|
| inventory-service | Basic CRUD | Create/Update/Delete items | Auto-deduction, alerts, tests | P0 |
|
|
| booking-service | 7 controllers | API structure, entities defined, handler logic complete, therapist + appointment CRUD | Handler completion | P1 |
|
|
| social-service | Core domain | Relationships, Blocks, Follows | API integration | P2 |
|
|
| mining-service | Skeleton | Controllers + entities defined | Business logic | P3 |
|
|
| mission-service | Controllers exist | Missions, CheckIns | Workflow handlers | P2 |
|
|
| ads-manager | 7 controllers | Campaign/Ad/AdSet/Audience structure | Campaign logic | P3 |
|
|
| ads-analytics | Read-heavy | Metrics/Insights structure | Aggregation logic | P3 |
|
|
| ads-billing | Core entities | BillingAccount/Invoice/Charge | Invoice flow | P3 |
|
|
| ads-serving | Skeleton | API structure | Real-time serving | P3 |
|
|
|
|
### Scaffold / Not Started (5)
|
|
|
|
| Service | Status | Note |
|
|
|---------|--------|------|
|
|
| ads-tracking | Scaffold | Template only, not in docker-compose |
|
|
| mkt-facebook | Scaffold | Facebook API not connected |
|
|
| mkt-whatsapp | Scaffold | WhatsApp API not connected |
|
|
| mkt-x | Scaffold | X/Twitter API not connected |
|
|
| mkt-zalo | Scaffold | Zalo API not connected |
|
|
|
|
---
|
|
|
|
## III. Frontend Apps Status
|
|
|
|
| App | Status | Components | Notes |
|
|
|-----|--------|:----------:|-------|
|
|
| web-client-tpos-net (POS) | PRODUCTION-READY | 181 | Multi-layout, multi-vertical, real API integration |
|
|
| web-client-base-net (Portal) | IN-PROGRESS | 16 | Basic page structure |
|
|
| app-client-base-swift (iOS) | IN-PROGRESS | 34 files | MVVM + Combine, auth + home |
|
|
| app-client-base-net (MAUI) | SCAFFOLD | 2 VMs | Template phase |
|
|
| web-docs (VitePress) | MINIMAL | — | Placeholder docs |
|
|
|
|
### POS Vertical Status
|
|
|
|
| Vertical | Backend | Frontend | Order Flow | Payment | Status |
|
|
|----------|:-------:|:--------:|:----------:|:-------:|:------:|
|
|
| Karaoke | DONE | DONE | DONE | UI-ONLY | WORKING |
|
|
| Restaurant | DONE | DONE | DONE | UI-ONLY | WORKING |
|
|
| Cafe | DONE | DONE | DONE | UI-ONLY | PARTIAL |
|
|
| Spa/Beauty | DONE | DONE | DONE | UI-ONLY | PARTIAL |
|
|
| Retail | DONE | UI-ONLY | DONE | UI-ONLY | TODO |
|
|
|
|
---
|
|
|
|
## IV. Critical Gaps Tracker
|
|
|
|
### P0 — Must Fix Before Launch
|
|
|
|
| # | Gap | Status | Owner | Sprint | Notes |
|
|
|:-:|-----|:------:|-------|:------:|-------|
|
|
| 1 | Payment Gateway — VN Pay | `DONE` | Backend #1 | Phase 1 / W1-2 | wallet-service: IPaymentGateway + VnPayGateway |
|
|
| 2 | Payment Gateway — Momo | `TODO` | Backend #2 | Phase 1 / W1-2 | wallet-service integration |
|
|
| 3 | Real-time SignalR Hub | `DONE` | Backend #3 | Phase 1 / W1-2 | PosHub + Redis backplane + MessagePack |
|
|
| 4 | Kitchen → Inventory Deduction | `DONE` | Backend #1 | Phase 1 / W2 | Domain events + HTTP + Polly + idempotency |
|
|
| 5 | Multi-tenant Row-Level Security | `DONE` | Backend #2 | Phase 1 / W2-3 | EF Core filters + PostgreSQL RLS, 5 services |
|
|
| 6 | Payment UI Completion | `DONE` | Frontend Blazor | Phase 1 / W1-2 | Cash/Card/QR wired to real gateway |
|
|
| 7 | Integration Test Suite | `DONE` | QA Engineer | Phase 1 / W3 | 29 functional tests, full order lifecycle |
|
|
| 8 | Staging Deployment | `DONE` | DevOps | Phase 1 / W3-4 | 16 K8s manifests, CI/CD, deploy script |
|
|
|
|
### P1 — Required for Full Feature Set
|
|
|
|
| # | Gap | Status | Owner | Sprint | Notes |
|
|
|:-:|-----|:------:|-------|:------:|-------|
|
|
| 9 | Retail POS Workflow | `DONE` | Backend + Frontend | Phase 2 / W5-6 | Scan, stock, return/exchange |
|
|
| 10 | Spa Backend Domain Logic | `DONE` | Backend | Phase 2 / W5-6 | Appointments, therapist scheduling |
|
|
| 11 | EOD Reports + Daily Close | `DONE` | Frontend Blazor | Phase 1 / W4 | order-service queries |
|
|
| 12 | FnB Engine Test Coverage | `DONE` | QA Engineer | Phase 1 / W3 | 96 tests (57 domain + 39 handler) |
|
|
| 13 | Cafe Workflow Completion | `DONE` | Backend + Frontend | Phase 2 / W5-6 | Loyalty stamps, barista queue |
|
|
| 14 | Critical Path Unit Tests (inventory, payment, events) | `DONE` | QA Engineer | Phase 1 / W4 | Deduction, payment callback, domain event handlers |
|
|
|
|
### P2 — Enhancement
|
|
|
|
| # | Gap | Status | Sprint | Notes |
|
|
|:-:|-----|:------:|:------:|-------|
|
|
| 15 | Marketing — Zalo OA | `TODO` | Phase 3 | mkt-zalo-service |
|
|
| 16 | Marketing — Facebook | `TODO` | Phase 3 | mkt-facebook-service |
|
|
| 17 | Ads Platform | `TODO` | Phase 3 | 5 ads services |
|
|
| 18 | Mobile iOS v1 | `TODO` | Phase 3 | app-client-base-swift |
|
|
| 19 | Mobile MAUI v1 | `TODO` | Phase 3 | app-client-base-net |
|
|
| 20 | Observability Stack | `DONE` | Phase 2 | Prometheus + Grafana + Loki + Promtail |
|
|
|
|
---
|
|
|
|
## V. Phase Roadmap
|
|
|
|
### Phase 1: Production MVP (Week 1-4)
|
|
|
|
> Goal: Karaoke + Restaurant verticals ready for real customers
|
|
|
|
#### Week 1-2: Payment & Real-time
|
|
|
|
| Task | Agent | Status | Depends On |
|
|
|------|-------|:------:|:----------:|
|
|
| VN Pay payment gateway integration | Senior Backend #1 | `DONE` | wallet-service |
|
|
| Momo payment gateway integration | Senior Backend #2 | `DEFERRED` | wallet-service (VNPay sufficient for MVP) |
|
|
| SignalR hub for real-time updates | Senior Backend #3 | `DONE` | — |
|
|
| KDS push notifications via SignalR | Senior Backend #3 | `DONE` | SignalR hub |
|
|
| Payment UI — connect to real gateway | Senior Frontend | `DONE` | Payment backends |
|
|
| Order status push to POS | Senior Backend #3 | `DONE` | SignalR hub |
|
|
|
|
#### Week 2-3: Data Integrity & Security
|
|
|
|
| Task | Agent | Status | Depends On |
|
|
|------|-------|:------:|:----------:|
|
|
| Kitchen → Inventory auto-deduction | Senior Backend #1 | `DONE` | fnb-engine, inventory |
|
|
| Row-level security (all services) | Senior Backend #2 | `DONE` | — |
|
|
| Rate limiting audit | DevOps | `DONE` | — |
|
|
| Input sanitization audit | QA | `DONE` | — |
|
|
| FnB Engine unit tests | QA | `DONE` | — |
|
|
| Order lifecycle integration tests | QA | `DONE` | 29 tests, WebApplicationFactory |
|
|
|
|
#### Week 3-4: Polish & Deploy
|
|
|
|
| Task | Agent | Status | Depends On |
|
|
|------|-------|:------:|:----------:|
|
|
| EOD reports + daily close workflow | Senior Frontend | `DONE` | order-service |
|
|
| Full regression testing | QA | `TODO` | All P0 done |
|
|
| Staging K8s deployment | DevOps | `DONE` | 16 manifests + CI/CD |
|
|
| Grafana monitoring dashboards | DevOps | `DONE` | Observability stack |
|
|
| Production deploy checklist | DevOps + CTO | `DONE` | Staging verified |
|
|
| Load testing (100 concurrent users) | QA + DevOps | `TODO` | Staging live |
|
|
|
|
### Phase 2: Multi-Vertical Expansion (Week 5-8)
|
|
|
|
> Goal: Cafe + Spa + Retail verticals fully operational
|
|
|
|
#### Week 5-6: Vertical Completion
|
|
|
|
| Task | Agent | Status | Depends On |
|
|
|------|-------|:------:|:----------:|
|
|
| Spa domain logic (appointments, therapists) | Senior Backend | `DONE` | booking-service |
|
|
| Retail POS workflow (scan, stock, returns) | Senior Backend | `DONE` | catalog, inventory |
|
|
| Cafe-specific (loyalty stamps, barista queue) | Senior Backend | `DONE` | membership |
|
|
| Vertical-specific UI refinement | Senior Frontend | `DONE` | Backend done |
|
|
| Multi-branch management features | Senior Backend | `DONE` | merchant-service |
|
|
|
|
#### Week 7-8: Advanced Features
|
|
|
|
| Task | Agent | Status | Depends On |
|
|
|------|-------|:------:|:----------:|
|
|
| Advanced reports (revenue, staff perf) | Backend + Frontend | `DONE` | order-service |
|
|
| Customer-facing menu (QR code) | Frontend | `DONE` | catalog-service |
|
|
| Mobile-responsive POS layout | Frontend | `DONE` | — |
|
|
| E2E tests per vertical (Playwright) | QA | `DONE` | Verticals done |
|
|
| Observability stack activation | DevOps | `DONE` | — |
|
|
| Production deployment (Karaoke + Restaurant) | DevOps + CTO | `TODO` | Phase 1 stable |
|
|
|
|
### Phase 3: Growth Features (Week 9-12)
|
|
|
|
> Goal: Marketing, Ads, Mobile apps
|
|
|
|
#### Week 9-10: Marketing & CRM
|
|
|
|
| Task | Agent | Status | Depends On |
|
|
|------|-------|:------:|:----------:|
|
|
| Zalo OA integration | Backend | `TODO` | mkt-zalo-service |
|
|
| Facebook Messenger integration | Backend | `TODO` | mkt-facebook-service |
|
|
| CRM dashboard (segments, campaigns) | Frontend | `TODO` | membership + social |
|
|
| Marketing automation UI | Frontend | `TODO` | mkt backends |
|
|
| WhatsApp integration | Backend | `TODO` | mkt-whatsapp-service |
|
|
|
|
#### Week 11-12: Mobile & Ads
|
|
|
|
| Task | Agent | Status | Depends On |
|
|
|------|-------|:------:|:----------:|
|
|
| iOS app v1 (customer-facing) | Senior Mobile (Swift) | `TODO` | API stable |
|
|
| MAUI cross-platform app v1 | Senior MAUI Dev | `TODO` | API stable |
|
|
| Ads serving + billing completion | Backend | `TODO` | ads-* services |
|
|
| CDN + edge caching setup | DevOps | `TODO` | — |
|
|
| Full platform production launch | CTO + All | `TODO` | All phases done |
|
|
|
|
---
|
|
|
|
## VI. Recently Completed
|
|
|
|
### 2026-03-06 (Phase 2 Close-out Sprint)
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| Multi-branch Shop Management | Backend | SetDefaultShop, TransferShop commands, GetMerchantShops paginated query, IsDefault field, 2 domain events |
|
|
| Revenue Dashboard UI | Frontend | RevenueDashboard.razor: MudChart line/donut/bar, 4 KPI cards, growth %, top products table |
|
|
| Staff Performance UI | Frontend | StaffPerformance.razor: sortable MudTable, color-coded completion rates, CSV export |
|
|
| Customer QR Menu | Frontend | Menu.razor: public page /menu/{ShopId}, mobile-first, cart UI, Vietnamese labels |
|
|
| QR Code Generator | Frontend | QrCodeGenerator.razor: batch generate, print-all, per-table QR cards |
|
|
| Responsive POS Layout | Frontend | PosLayout.razor: collapsible sidebar, slide-out order drawer, ResponsiveOrderPanel component, 300+ lines responsive CSS |
|
|
| Production K8s Manifests | DevOps | 8 services (3 replicas, 512Mi-1Gi, HPA min3/max10), Redis 5Gi PVC, ingress api.goodgo.vn |
|
|
| Production Deploy Script | DevOps | deploy-prod.sh: pre-flight checks, dry-run, single-service deploy, rollback |
|
|
| Production CI/CD | DevOps | deploy-production.yml: environment approval, commit SHA tags, migration support |
|
|
| Production Checklist | DevOps + CTO | docs/production-checklist.md: 80+ items across 7 sections |
|
|
| Prometheus Full Config | DevOps | 11 scrape targets, docker-compose observability stack (Prometheus + Grafana + Loki + Promtail) |
|
|
|
|
### 2026-03-06 (Phase 2 W7-8 — Production Readiness)
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| Revenue Analytics Query | Backend | GetRevenueAnalyticsQuery (Dapper): daily/weekly/monthly trends, payment breakdown, top products, hourly chart |
|
|
| Staff Performance Query | Backend | GetStaffPerformanceQuery (Dapper): orders handled, completion rate, avg processing time per staff |
|
|
| Analytics Validators | QA | FluentValidation with runtime date check (Must vs LessThanOrEqualTo fix) |
|
|
| BFF Reports Proxy | Frontend | ReportsController: revenue-analytics + staff-performance endpoints |
|
|
| Public QR Menu | Frontend | PublicMenuController (no auth): /api/public/shops/{id} + /menu, PosDataService public methods |
|
|
| E2E Playwright Tests | QA | 8 spec files (auth, admin, karaoke, restaurant, cafe, retail, spa, reports), ~39 test cases |
|
|
| Prometheus Alert Rules | DevOps | 7 alerts: ServiceDown, HighErrorRate, HighLatency, DB pool, disk, memory, Redis, RabbitMQ |
|
|
| Grafana Dashboard | DevOps | 10-panel overview: HTTP metrics, infra health, business KPIs, .NET memory |
|
|
|
|
### 2026-03-06 (Observability & Production Readiness)
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| Grafana Overview Dashboard | DevOps | 10-panel dashboard: service health (8 services), request rate, p50/p95/p99 latency, 4xx/5xx errors, SignalR connections, DB pool, Redis hit/miss, order metrics, .NET memory |
|
|
| Prometheus Scrape Config | DevOps | 11 scrape targets (8 core services + Traefik + Redis + RabbitMQ), 15s interval, service/tier labels |
|
|
| Prometheus Alert Rules | DevOps | 7 alerts: ServiceDown (1m), HighErrorRate (>5% 5xx), HighLatencyP95 (>2s), DB pool exhausted (>90%), disk (>85%), memory (>80%), Redis memory, RabbitMQ backlog |
|
|
| Grafana Dashboard Provisioning | DevOps | dashboard-provider.yml for auto-loading dashboards from file |
|
|
| Production Deployment Checklist | DevOps + CTO | 80+ checklist items: pre-deploy, infra, per-service, monitoring, security, rollback, post-deploy verification, sign-off |
|
|
| Docker Compose Observability | DevOps | Uncommented + enhanced Prometheus (v2.51.0), Grafana (v10.3.1), added Loki (v2.9.4), Promtail (v2.9.4) with healthchecks and volume mounts |
|
|
|
|
### 2026-03-06 (Phase 1 Sprint)
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| VN Pay Payment Gateway | Backend #1 | IPaymentGateway abstraction + VnPayGateway (HMAC-SHA512, sandbox), Payment aggregate, PaymentsController (4 endpoints) |
|
|
| SignalR POS Hub | Backend #3 | PosHub (strongly-typed, 3 groups: shop/kds/pos), Redis backplane, MessagePack, 7 client methods, integrated into 4 order handlers |
|
|
| Kitchen → Inventory Deduction | Backend #1 | KitchenTicketServedDomainEvent → HTTP call to inventory-service, Polly retry + circuit breaker, idempotency, graceful degradation |
|
|
| Order Payment Flow | Backend #2 + Frontend | 3 payment flows (cash/card/online), PaymentPending status, WalletServiceClient, BFF proxy update, POS Cash/Card/QR components wired |
|
|
| Row-Level Security (5 services) | Backend #2 | ITenantProvider + EF global query filters + PostgreSQL RLS policies, defense-in-depth |
|
|
| FnB Engine Unit Tests (96 tests) | QA | 57 domain entity tests + 39 command handler tests, xUnit + Moq + FluentAssertions |
|
|
| Order Integration Tests (29 tests) | QA | Full order lifecycle (create/pay/complete/cancel), WebApplicationFactory + InMemory DB |
|
|
| Staging K8s Deployment | DevOps | 16 manifests (8 services + Redis + POS), Ingress, HPA, CI/CD workflows, deploy script |
|
|
| Account Management (Admin Settings) | Backend + Frontend | Full profile/merchant CRUD via BFF |
|
|
| Subscription System | Backend + Frontend | Merchant entity + EF + API + dynamic UI |
|
|
| User → Enterprise Plan | Backend + DB | hongochai10@icloud.com set to Enterprise (unlimited) |
|
|
| Subscription Controller | Backend | GET /me, /plans, /usage + POST /subscribe |
|
|
| ChangePassword Validator | Backend | FluentValidation for IAM auth |
|
|
| Traefik Route (subscriptions) | DevOps | /api/v1/subscriptions → merchant-service |
|
|
| Admin Settings 5-Tab UI | Frontend | Tai khoan, Bao mat, Goi dich vu, Thong bao, He thong |
|
|
|
|
### 2026-03-06 (Phase 2 Sprint 1 — Multi-Vertical)
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| Spa Therapist Management | Backend | Therapist aggregate (specialties text[], workingHours jsonb), CRUD, 9 validators |
|
|
| Spa Appointment Scheduling | Backend | Appointment notes, Pending status, MarkNoShow, availability slots |
|
|
| Retail Barcode/SKU | Backend | Product barcode field, lookup query, POS scanner endpoint |
|
|
| Retail Stock Check | Backend | Bulk stock levels, low stock alerts, SetReorderLevel behavior |
|
|
| Retail Return/Exchange | Backend | ProcessReturn, CreateReturn/Exchange commands, Returned status, 2 domain events |
|
|
| Cafe Loyalty Stamps | Backend | StampCard aggregate, auto-create, AddStamp/ClaimReward/Reset, 4 domain events |
|
|
| Cafe Barista Queue | Backend | BaristaQueueItem (5-status workflow), queue stats, 5 commands |
|
|
|
|
### 2026-03-06 (Code Review Fixes)
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| Code Review — 75 issues identified | All Agents | Backend (16), Frontend (11), Infrastructure (32), Tests (16) |
|
|
| Fix wallet-service EF Config | Backend #1 | Removed 11 conflicting Ignore() calls for mapped backing fields |
|
|
| Fix KitchenTicket constructor | Backend #1 | Removed short constructor that assigned productId=orderItemId, updated 14 test call sites |
|
|
| Fix fire-and-forget inventory deduction | Backend #1 | Replaced Task.Run with direct await for reliable inventory deduction |
|
|
| Implement TenantMiddleware RLS (4 services) | Backend #2 | wallet, fnb, inventory, catalog — PostgreSQL SET LOCAL for RLS |
|
|
| Fix SQL injection pattern in order-service | Backend #2 | Guid.ToString("D") for safe formatting in TenantMiddleware |
|
|
| Add SignalR Hub shop authorization | Backend #2 | ValidateShopAccess() check in PosHub JoinShop/JoinKds/JoinPos |
|
|
| Fix PosDataService false success on error | Frontend | PayOrderWithDetailsAsync now returns Success=false on parse failure |
|
|
| Fix QrPayment timer race condition | Frontend | Added _disposed guard for safe timer disposal |
|
|
| Add [Authorize] to BFF OrderController | Frontend | Require JWT for all BFF order endpoints |
|
|
| PostgreSQL 15 → 16 in docker-compose | DevOps | Match project spec |
|
|
| Add 4 missing databases to init-databases.sh | DevOps | mkt_facebook, mkt_whatsapp, mkt_x, mkt_zalo |
|
|
| Add Traefik routes (wallet, catalog, booking) | DevOps | Plus /api/v1/stock for inventory |
|
|
|
|
### 2026-03-06 (Phase 1 Close-out)
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| EOD Reports + Daily Close | Backend + Frontend | GetEodReportQuery (Dapper), CloseDayCommand, EodReport.razor (6 KPIs, charts, top items) |
|
|
| Rate Limiting (4 tiers) | DevOps | auth (10/min), payment (30/min), api (100/min), hub (500/min) across all Traefik routers |
|
|
| Input Sanitization (44 validators) | QA + Backend | FluentValidation for all unprotected commands across 8 services |
|
|
| Critical Path Tests (30 tests) | QA | Inventory deduction (12), payment create/callback (14), kitchen event handler (8) |
|
|
|
|
### 2026-03-05
|
|
|
|
| Task | Agent | Details |
|
|
|------|-------|---------|
|
|
| IAM Service — EF Config for ApplicationUser | Backend | Private field mapping (first_name, last_name, etc.) |
|
|
| Merchant Profile — NullRef Fix | Backend | Enumeration.FromValue pattern for EF-ignored nav properties |
|
|
| BFF Proxy — Account endpoints | Backend | 15 endpoints proxying to IAM + Merchant services |
|
|
| AdminSettings.razor — Full implementation | Frontend | 846-line Blazor component with 5 tabs |
|
|
|
|
---
|
|
|
|
## VII. Architecture Decisions Log
|
|
|
|
| Date | Decision | Rationale | Status |
|
|
|------|----------|-----------|:------:|
|
|
| 2026-03-06 | IPaymentGateway in Domain, implementations in Infrastructure | Multiple gateways (VNPay, Momo) via same interface | ACTIVE |
|
|
| 2026-03-06 | PosHub in order-service (not separate service) | Order lifecycle owns real-time notifications | ACTIVE |
|
|
| 2026-03-06 | Kitchen→Inventory via HTTP + Polly (not message queue) | Simpler, sufficient for MVP, direct await (changed from fire-and-forget after code review) | ACTIVE |
|
|
| 2026-03-06 | 3 payment flows: cash (instant), card (instant), online (async) | Cash/card don't need gateway, only VNPay/Momo need redirect | ACTIVE |
|
|
| 2026-03-06 | Subscription stored in Merchant aggregate | Simple, no separate service needed for MVP | ACTIVE |
|
|
| 2026-03-06 | Static plan definitions in frontend + backend | 4 fixed tiers sufficient for MVP launch | ACTIVE |
|
|
| 2026-03-05 | BFF pattern for frontend-backend proxy | Single entry point, auth forwarding, response normalization | ACTIVE |
|
|
| 2026-03-05 | Neon PostgreSQL for staging/prod | Serverless, auto-scaling, branching for dev | ACTIVE |
|
|
| — | Clean Architecture + CQRS | Separation of concerns, testability | ACTIVE |
|
|
| — | MediatR pipeline (Log → Validate → Transaction → Handle) | Cross-cutting concerns | ACTIVE |
|
|
| — | Bilingual docs (EN + VI) | Team accessibility | ACTIVE |
|
|
|
|
---
|
|
|
|
## VIII. Environment & Access
|
|
|
|
| Environment | URL | Database | Status |
|
|
|-------------|-----|----------|:------:|
|
|
| Local (Docker) | localhost:3001 (POS), :5001 (IAM), :5005 (Merchant) | PostgreSQL local container | ACTIVE |
|
|
| Local (dotnet run) | localhost:5092 (POS), :5001 (IAM), :5005 (Merchant) | Neon PostgreSQL | ACTIVE |
|
|
| Staging | api.staging.goodgo.vn | Neon PostgreSQL | TODO |
|
|
| Production | goodgo.vn / admin.goodgo.vn | Neon PostgreSQL | TODO |
|
|
|
|
### Test Accounts
|
|
|
|
| Email | Password | Role | Subscription |
|
|
|-------|----------|------|:------------:|
|
|
| hongochai10@icloud.com | Test@12345 | Admin / Owner | Enterprise (unlimited) |
|
|
|
|
---
|
|
|
|
## IX. How to Update This File
|
|
|
|
1. When starting a task: Change status to `IN-PROGRESS`
|
|
2. When completing: Change to `DONE` and add to "Recently Completed"
|
|
3. When blocked: Change to `BLOCKED` and add note
|
|
4. Weekly: CTO reviews and reprioritizes
|
|
5. After each sprint: Update metrics in Section I
|
|
|
|
### Agent Workflow
|
|
|
|
```
|
|
CTO → Analyze requirement → Update ROADMAP.md with new tasks
|
|
Tech Lead → Breakdown tasks → Assign to agents
|
|
Backend Dev → Implement → Update status to DONE
|
|
Frontend Dev → Implement → Update status to DONE
|
|
QA → Test → Report issues or confirm DONE
|
|
DevOps → Deploy → Update environment status
|
|
CTO → Review → Move to "Recently Completed"
|
|
```
|
|
|
|
---
|
|
|
|
*This file is the single source of truth for GoodGo Platform development progress.*
|
|
*All agents should consult this file before starting work and update it after completing tasks.*
|