286 lines
14 KiB
Markdown
286 lines
14 KiB
Markdown
# Product Manager Audit — GoodGo POS System
|
||
|
||
> **Auditor**: Product Manager Agent
|
||
> **Date**: 2026-03-20
|
||
> **Scope**: Feature completeness, user flows, product gaps, roadmap alignment
|
||
> **Working Directory**: `/Users/velikho/Desktop/WORKING/pos-system`
|
||
|
||
---
|
||
|
||
## Executive Summary
|
||
|
||
GoodGo POS là nền tảng multi-vertical mạnh, với 5 vertical đều có core POS hoạt động (~85–95% feature-complete cho Restaurant, Karaoke, Cafe, Spa, Retail). Tuy nhiên, toàn bộ marketing/CRM ecosystem — được quảng bá là key differentiator so với KiotViet, Sapo, iPOS — là **UI stub hoàn toàn, không có backend integration**. Đây là rủi ro sản phẩm cao nhất cần giải quyết trước demo/launch.
|
||
|
||
---
|
||
|
||
## Critical Issues
|
||
|
||
### CI-1: Marketing Suite là Demo 100% — Zero Backend Integration
|
||
|
||
**File paths**:
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/AiChatbot.razor` (210 lines)
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/CustomerCrm.razor` (173 lines)
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/LivechatConsole.razor` (192 lines)
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/AiContentStudio.razor` (176 lines)
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/ChatbotAutomation.razor` (145 lines)
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Marketing/SocialHub.razor` (162 lines)
|
||
|
||
**Pattern** (identical trong tất cả 6 trang):
|
||
```csharp
|
||
// EN: Demo customer data / VI: Dữ liệu khách hàng demo
|
||
private record CustomerInfo(string Name, string Phone, ...);
|
||
private readonly CustomerInfo[] _customers = new[] { new CustomerInfo(...), ... };
|
||
```
|
||
|
||
**Impact**: Merchant đăng ký plan Growth/Pro vì tin vào tính năng CRM, AI Chatbot, và Social Hub — khi vào dùng sẽ thấy dữ liệu giả. Đây là **churn risk** và **trust damage** lớn. Đây là điểm mà GoodGo tuyên bố vượt KiotViet và Sapo nhưng thực tế là không có gì.
|
||
|
||
**Recommended action**: Ẩn Marketing section khỏi Starter/Growth plan. Chỉ show cho Pro+ với label "Coming Soon" hoặc implement thực tế — không nên để merchant dùng thử demo data như product thật.
|
||
|
||
---
|
||
|
||
### CI-2: Voucher/Promotion Redemption bị gián đoạn hoàn toàn
|
||
|
||
**Backend** (hoạt động): `services/promotion-service-net/src/PromotionService.API/Application/Commands/` — có `ClaimVoucher`, `RedeemVoucher`, `CreateCampaign`.
|
||
|
||
**Frontend gap**: Không có UI nào trong payment flow để nhập mã voucher. Kiểm tra:
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Shared/Payment/MethodSelect.razor` — không có "Apply Voucher" field.
|
||
- `apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPromotions.razor` — có form tạo voucher nhưng khép lại tại UI.
|
||
|
||
**Impact**: Merchant tạo được voucher nhưng customer không thể redeem tại quầy. Merchant nghĩ mình đã chạy campaign — thực tế campaign không có tác dụng gì. Đây là **broken promise** trong mỗi giao dịch.
|
||
|
||
---
|
||
|
||
### CI-3: Payment Gateway — Trạng thái Live/Sandbox không rõ ràng
|
||
|
||
`services/wallet-service-net/src/WalletService.API/Application/Commands/Payments/` có `CreatePayment`, `ProcessPaymentCallback` — architecture tốt với `IPaymentGateway` abstraction. Tuy nhiên:
|
||
|
||
- Không rõ gateway nào đang live (VNPay? MoMo? ZaloPay?)
|
||
- Webhook callback security (HMAC signature verification) không được documented
|
||
- TipEntry UI tồn tại nhưng tip logic tới wallet service chưa được verify
|
||
|
||
**Impact**: Nếu team demo payment cho khách hàng mà không biết gateway nào đang hoạt động, sẽ fail live demo. Đây là **P0 trước bất kỳ investor/merchant demo**.
|
||
|
||
---
|
||
|
||
### CI-4: Analytics & Reporting — 0% Wired to Real Data
|
||
|
||
**Frontend** (đầy đủ UI): Revenue Dashboard, Staff Performance, EOD Report tồn tại.
|
||
|
||
**Backend**: `order-service-net` có `CloseDayCommand` nhưng không có aggregation queries cho trend analytics.
|
||
|
||
**Gap**: All KPI cards (revenue, transactions, avg order value, growth %) là hardcoded demo values trong Razor `@code` blocks.
|
||
|
||
**Impact**: Merchant đưa ra quyết định kinh doanh dựa trên số liệu giả. Với SMB Việt Nam, quyết định nhập hàng/thuê staff dựa trên báo cáo — nếu báo cáo sai họ sẽ mất tiền thật.
|
||
|
||
---
|
||
|
||
## Warnings
|
||
|
||
### W-1: Promotion-to-POS Gap Ảnh Hưởng Toàn Bộ Marketing Funnel
|
||
|
||
Backend promotion service exists và functional. Frontend marketing UI exists nhưng disconnected. Kết quả: Merchant create campaign → customer không thể redeem → merchant không thấy ROI → churn.
|
||
|
||
Theo user flow chuẩn: **Merchant tạo voucher** (Admin Shop → Promotions) → **Customer nhận voucher** (qua gì? SMS/QR? Chưa có) → **Customer redeem tại quầy** (POS Payment screen — không có input field) → **Order được discount** (backend ready). Bước 2 và 3 bị vỡ.
|
||
|
||
### W-2: Spa Vertical — Appointment Logic chưa End-to-End
|
||
|
||
- UI: Appointment calendar, therapist assignment, treatment timer có (`Pages/Pos/Spa/`)
|
||
- Backend: `booking-service` có CreateAppointment, therapist CRUD
|
||
- Gap: Khi khách walk-in không book trước, flow "new appointment from POS" không rõ ràng. "Book from POS" button và "Customer lookup" có trong UI nhưng integration path chưa documented.
|
||
|
||
### W-3: Onboarding Wizard — Device Pairing bước 5 chưa rõ
|
||
|
||
`Pages/Admin/Onboarding/OnboardingDevice.razor` — Step 5 có UI pairing device nhưng mechanism (QR code? token? physical device ID?) không visible trong code. Nếu merchant dùng iPad/tablet mới và step này fail, họ sẽ stuck ngay bước cuối onboarding.
|
||
|
||
### W-4: QR Menu Customer Ordering — Post-Cart Flow Bị Hở
|
||
|
||
`Pages/Customer/TableMenu.razor`: Cart management hoạt động tốt. Tuy nhiên sau khi customer bấm "Checkout":
|
||
- Navigates to payment method selection
|
||
- Nhưng customer context (tableId, sessionId) cần được passed qua payment flow
|
||
- Không rõ order được submit vào order-service như thế nào, staff có nhận notification không
|
||
|
||
**Risk**: Customer submit order nhưng staff không thấy → order bị miss → bad experience → review kém.
|
||
|
||
### W-5: Neon PostgreSQL Shared Credentials (Security)
|
||
|
||
`deployments/` — Staging/production sử dụng shared DB credentials cho tất cả 23+ services. Nếu 1 service bị compromise, attacker có access tới toàn bộ DB tier.
|
||
|
||
**PM impact**: Đây là compliance risk (PDPA Việt Nam, payment data security) sẽ block enterprise deals.
|
||
|
||
### W-6: Marketing mkt-* Services thiếu trong Docker (4 services)
|
||
|
||
`mkt-facebook-service-net`, `mkt-whatsapp-service-net`, `mkt-x-service-net`, `mkt-zalo-service-net` không có trong `deployments/local/docker-compose.yml`. Team không thể test marketing integration locally.
|
||
|
||
---
|
||
|
||
## Improvements
|
||
|
||
### IMP-1: Triển khai "Voucher Redemption" tại điểm bán — ROI cao nhất trong 1 sprint
|
||
|
||
**User Story**:
|
||
*As a cashier, I want to enter a voucher code during checkout so that the customer gets the promised discount.*
|
||
|
||
**Effort**: 3 ngày backend (new Query: `ValidateVoucher`), 2 ngày frontend (thêm input vào `MethodSelect.razor`).
|
||
**RICE Score**: Reach=500 merchants × Impact=3 (high) × Confidence=90% / Effort=1 week = **1,350** (highest priority).
|
||
|
||
### IMP-2: Wire Analytics Dashboard vào Real Data — Quick Win
|
||
|
||
`services/order-service-net` đã có order data. Thêm:
|
||
- `GetDailyRevenueQuery` → trả về revenue by day/payment method
|
||
- `GetTopProductsQuery` → trả về best-sellers
|
||
- Wire `Pages/Admin/Dashboard/RevenueDashboard.razor` thay demo arrays
|
||
|
||
**Effort**: 5 ngày backend (2 queries + aggregation), 2 ngày frontend (replace mock data).
|
||
**Impact**: Merchant có real business intelligence → quyết định tốt hơn → giảm churn.
|
||
|
||
### IMP-3: Vertical-Specific Reporting — "Quick Wins" per persona
|
||
|
||
| Vertical | Missing Report | Effort | Value |
|
||
|----------|---------------|--------|-------|
|
||
| Karaoke | Per-room revenue, peak hour heatmap | 5 ngày | High |
|
||
| Cafe | Daily queue throughput, popular items | 3 ngày | High |
|
||
| Restaurant | Table turnover rate, avg dwell time | 4 ngày | High |
|
||
| Spa | Therapist utilization, rebooking rate | 4 ngày | Medium |
|
||
| Retail | Inventory aging, return rate by SKU | 5 ngày | Medium |
|
||
|
||
### IMP-4: Customer Feedback Loop — Differentiate từ Competitors
|
||
|
||
Sau khi payment success, hiện QR code cho customer rate experience (1-5 stars + comment). Feed data vào merchant dashboard. Không competitor nào (KiotViet, Sapo, iPOS) có feature này tích hợp trong POS flow.
|
||
|
||
**Effort**: 2 tuần (new `feedback-service` đơn giản hoặc add vào order-service).
|
||
**Competitive impact**: Cao — là unique differentiator có thể quảng cáo.
|
||
|
||
### IMP-5: Marketing Section — Quyết Định Rõ Ràng về Roadmap
|
||
|
||
Có 3 lựa chọn:
|
||
|
||
**Option A — Hide & Honest (Recommended ngắn hạn)**:
|
||
- Ẩn Marketing section với "Coming in Q2 2026" label
|
||
- Giữ mockup làm prototype cho user research
|
||
- Không gây trust damage với merchants
|
||
|
||
**Option B — Stub with Real Data**:
|
||
- Giữ UI, thay demo arrays bằng real API calls (customer list from IAM/order service, basic stats)
|
||
- 2 tuần effort, delivers "real feel"
|
||
- Không có full chatbot/social media nhưng CRM list sẽ có data thật
|
||
|
||
**Option C — Full Implementation**:
|
||
- Build MCP-powered chatbot integration (Zalo, Facebook, WhatsApp)
|
||
- 8-12 tuần, cần dedicated team
|
||
- Align với Q2 2026 roadmap target
|
||
|
||
### IMP-6: Onboarding Post-Completion — First Order Tutorial
|
||
|
||
Sau bước 6 "Complete" của onboarding wizard, hiện guided walkthrough:
|
||
- "Bước tiếp theo: Tạo đơn hàng đầu tiên" với checklist
|
||
- Link tới tutorial video
|
||
|
||
**Effort**: 2 ngày, impact rất cao với new merchant activation rate.
|
||
|
||
### IMP-7: Mobile App Completeness cho Staff
|
||
|
||
`app-client-base-swift` iOS app: 9 pages, auth flows và basic navigation. Staff cần mobile app để:
|
||
- Clock in/out khi không ở quầy
|
||
- Nhận order notifications
|
||
- Check lịch làm việc
|
||
|
||
Priority: Medium, nhưng cần để tránh staff dùng browser mobile (poor UX).
|
||
|
||
---
|
||
|
||
## Action Items (Prioritized)
|
||
|
||
### Sprint 1 (Week 1-2) — Revenue-Critical
|
||
|
||
| # | Action | Owner | Effort | Priority | RICE |
|
||
|---|--------|-------|--------|----------|------|
|
||
| A1 | Xác nhận payment gateways nào đang live, document & test | CTO + Backend | 3 ngày | P0 | — |
|
||
| A2 | Implement Voucher Redemption field trong payment flow | Backend + Frontend | 1 tuần | P0 | 1,350 |
|
||
| A3 | Ẩn/label "Coming Soon" cho Marketing section | Frontend | 1 ngày | P0 | — |
|
||
| A4 | Wire Revenue Dashboard tới real order data | Backend + Frontend | 1 tuần | P1 | 900 |
|
||
|
||
### Sprint 2 (Week 3-4) — Merchant Retention
|
||
|
||
| # | Action | Owner | Effort | Priority |
|
||
|---|--------|-------|--------|----------|
|
||
| A5 | Vertical-specific reporting (Karaoke + Cafe ưu tiên) | Backend + Frontend | 2 tuần | P1 |
|
||
| A6 | Fix QR Customer Menu → Order submission flow | Backend + Frontend | 3 ngày | P1 |
|
||
| A7 | Clarify & fix Onboarding Device Pairing (bước 5) | Frontend + Backend | 2 ngày | P1 |
|
||
| A8 | Add post-onboarding "First Order" tutorial | Frontend | 2 ngày | P2 |
|
||
|
||
### Sprint 3 (Week 5-8) — Differentiation
|
||
|
||
| # | Action | Owner | Effort | Priority |
|
||
|---|--------|-------|--------|----------|
|
||
| A9 | Customer Feedback post-payment (QR rating) | Backend + Frontend | 2 tuần | P2 |
|
||
| A10 | Marketing Section — Option B (stub with real data) | Backend + Frontend | 2 tuần | P2 |
|
||
| A11 | iOS Mobile App — Staff clock-in/order notifications | Mobile | 3 tuần | P2 |
|
||
| A12 | Audit Neon PostgreSQL credentials (per-service isolation) | DevOps | 1 tuần | P1 |
|
||
|
||
---
|
||
|
||
## Success Metrics
|
||
|
||
| Metric | Baseline | Target (3 months) | How to Measure |
|
||
|--------|----------|-------------------|----------------|
|
||
| Merchant activation rate (first order after onboarding) | Unknown | >70% | Analytics: orders/merchant in first 7 days |
|
||
| Voucher redemption rate | 0% (feature broken) | >15% orders with voucher | Order service: count orders with promotion_id |
|
||
| Marketing section churn trigger | Unknown | <5% abandon after seeing stub | Frontend: page bounce rate on Marketing |
|
||
| Dashboard daily active usage | Unknown | >60% merchants view weekly | Analytics: dashboard page views/week |
|
||
| Payment failure rate | Unknown | <2% | Wallet service: failed payments / total |
|
||
| NPS (Merchant) | Baseline needed | >50 | Survey via in-app prompt |
|
||
|
||
---
|
||
|
||
## Competitive Positioning Assessment
|
||
|
||
| Feature | GoodGo Status | KiotViet | Sapo POS | iPOS |
|
||
|---------|:-------------:|:--------:|:--------:|:----:|
|
||
| Multi-vertical POS | ✅ 5 verticals | ❌ Retail only | ❌ | ✅ 2 |
|
||
| KDS Kitchen Display | ✅ | ❌ | ✅ | ✅ |
|
||
| AI-powered Operations | ✅ MCP (Cafe) | ❌ | ❌ | ❌ |
|
||
| Loyalty stamps/levels | ✅ Working | Basic | Basic | ✅ |
|
||
| Marketing CRM | ⚠️ Stub only | Basic | ✅ | ❌ |
|
||
| Real-time analytics | ⚠️ Demo data | ✅ | ✅ | ✅ |
|
||
| Omnichannel (Web+Mobile) | ✅ Architecture | ✅ | ✅ | ❌ |
|
||
| Booking/Scheduling | ✅ | ❌ | ❌ | ✅ |
|
||
| Multi-tenant (shops) | ✅ | ✅ | ✅ | ✅ |
|
||
|
||
**Assessment**: GoodGo dẫn đầu về multi-vertical và AI integration (MCP server là unique). Nhưng Real-time Analytics và Marketing CRM — nơi Sapo và KiotViet đang mạnh — đang là liability. Cần fix analytics trước mọi marketing effort.
|
||
|
||
---
|
||
|
||
## Product Gaps Summary (MoSCoW)
|
||
|
||
### Must Have (cho MVP launch)
|
||
- ✅ Multi-vertical POS order flow
|
||
- ✅ Payment methods UI
|
||
- ❌ **Real payment gateway integration verified**
|
||
- ❌ **Voucher redemption at POS**
|
||
- ❌ **Real analytics data (not demo)**
|
||
|
||
### Should Have (launch + 30 days)
|
||
- ❌ Marketing section với real data (Option B)
|
||
- ❌ Customer feedback loop
|
||
- ❌ Per-vertical reporting
|
||
- ✅ Loyalty stamps working
|
||
- ✅ KDS Kitchen Display
|
||
|
||
### Could Have (Q2 2026)
|
||
- ❌ Full AI Chatbot (Zalo/Facebook/WhatsApp)
|
||
- ❌ AI Content Studio
|
||
- ❌ Social Hub management
|
||
- ❌ iOS mobile app complete
|
||
- ❌ Customer segmentation CRM
|
||
|
||
### Won't Have (không ưu tiên)
|
||
- Enterprise multi-location analytics
|
||
- 3rd-party ERP integration
|
||
- Marketplace integration (Shopee, Lazada)
|
||
|
||
---
|
||
|
||
*Audit completed: 2026-03-20*
|
||
*Next review: After Sprint 1 completion (2026-04-03)*
|
||
*Related: [ROADMAP.md](../../ROADMAP.md) | [CTO_REPORT_SHOP_DELETE.md](../../CTO_REPORT_SHOP_DELETE.md)*
|