Files
pos-system/ROADMAP.md
Ho Ngoc Hai 870f1218f8 feat: Phase 2 frontend — Spa, Retail, Cafe Blazor UI pages and BFF proxies
Spa/Beauty UI (booking-service integration):
- TherapistManagement.razor: CRUD table, specialty multi-select, working hours
- AppointmentCalendar.razor: daily calendar grouped by therapist, color-coded statuses
- ShopTherapists embedded component for ShopPage, sidebar menu for spa/beauty
- BookingController BFF: therapist CRUD + appointment proxy endpoints
- Localization: vi-VN + en-US for "Nhân viên trị liệu"

Retail POS UI (catalog + inventory + order integration):
- RetailDesktop.razor: barcode input, API lookup, stock badges, cart warnings
- ReturnDialog.razor: order lookup, return/exchange mode toggle, refund summary
- StockOverview.razor: admin stock table, search/filter, threshold edit dialog
- PosDataService: barcode lookup, bulk stock, return/exchange API methods

Cafe UI (membership + fnb-engine integration):
- StampCard.razor: visual stamp grid, animated fill, celebration UI, claim/reset
- BaristaQueue.razor: 3-column Kanban, stats bar, auto-refresh 10s, pulse animation
- CafeController BFF: stamp cards + barista queue proxy endpoints

Infrastructure:
- Traefik: added /api/v1/therapists + /api/v1/appointments to booking-service
- ROADMAP: Phase 2 vertical tasks DONE, UI refinement IN-PROGRESS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:03:55 +07:00

18 KiB

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 2/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 only 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 TODO 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 TODO Phase 2 Prometheus + Grafana + Loki

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 TODO Observability stack
Production deploy checklist DevOps + CTO TODO 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 IN-PROGRESS Backend done
Multi-branch management features Senior Backend TODO merchant-service

Week 7-8: Advanced Features

Task Agent Status Depends On
Advanced reports (revenue, staff perf) Backend + Frontend TODO order-service
Customer-facing menu (QR code) Frontend TODO catalog-service
Mobile-responsive POS layout Frontend TODO
E2E tests per vertical (Playwright) QA TODO Verticals done
Observability stack activation DevOps TODO
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 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.