Functional Audit — Final Status
Date: 2026-08-06
Overall verdict
Domain: TOOLING + FUNCTIONAL
WP: WP-FUNCTIONAL-AUDIT-01
Implementation Inventory: 354 IMP / 0 STUB
Functional Tags: 40
Agent Queue: EMPTY
Core Smoke Chain: 57 PASS / 0 FAIL
Extra Domain Audit: 46 PASS / 0 FAIL
Environment: PASS
Infrastructure: PASS
Core Local API: STABLE
Application Regression: NO
Production Readiness: PARTIAL
Final Status: COMPLETE_WITH_EXTERNAL_BLOCKERS
Gates
| Gate | Result |
|---|---|
npm run audit:refresh |
PASS — 354 IMP · 0 STUB · 40 tags · queue empty |
npm run env:check |
PASS WITH WARNING — Google Client ID còn placeholder |
| API health | PASS |
| Dependency health | PASS — PostgreSQL · Redis · MinIO |
npm run smoke:chain |
PASS — 57/57 |
| Extra domain audit | PASS — 46/46 |
Functional coverage
Smoke chain đã xác nhận các domain core:
Auth Email OTP
Users
Places
ATM / Fuel
Routing
Media
Addresses
Wallet
FNB cart / order
Ride quote / cancel
Driver trip
Partner staff
Parking
Extra audit đã probe:
Hotels
Rentals
Charging
Transit
Medical
Pharmacy
Schools
Home services
Delivery
Bills
QR
Social
Assistant
Favorites
Notifications
Promotions
CMS
Support
KYC
Payments
Chat
Reviews
Wallet
ATM / Fuel / Parking
FNB
Routing
Health
Kết quả:
Core smoke: 57 PASS / 0 FAIL
Extra audit: 46 PASS / 0 FAIL
Total observed checks: 103 PASS / 0 FAIL
Items requiring corrected classification
Google OAuth
Implementation: PREPARED
Configuration Guard: PASS
GOOGLE_CLIENT_ID: PLACEHOLDER
Real Google Token Verification: NOT TESTED
Real OAuth Login: OWNER_REQUIRED
Application Failure: NO
HTTP 400 khi Client ID còn placeholder chỉ chứng minh configuration guard hoạt động. Không được ghi là Google token giả đã được verifier từ chối thành công nếu request chưa đi tới bước verify token bằng audience hợp lệ.
OWNER cần cung cấp Google Web OAuth Client ID thật dạng:
*.apps.googleusercontent.com
Routing providers
Directions Endpoint: PASS
Fallback Routing: PASS
OSRM Provider: PARTIAL / BLOCKED_EXTERNAL
Mapbox Provider: PARTIAL / BLOCKED_EXTERNAL
Current Fallback: Haversine
Application Failure: NO
Endpoint routing vẫn hoạt động, nhưng kết quả hiện tại chưa xác nhận OSRM hoặc Mapbox thật. Haversine chỉ là fallback ước lượng và không tương đương route theo mạng lưới đường thực tế.
Driver and partner registration
driver.register: HTTP 400 — account already registered
partner.onboarding: HTTP 400 — account already registered
Smoke Chain Overall: PASS
Đây không phải lỗi core nếu fixture đã tồn tại. Tuy nhiên, script smoke nên được harden để chạy lặp lại ổn định bằng một trong các cách:
Tạo định danh test duy nhất cho mỗi lần chạy
Dọn fixture đúng phạm vi trước test
Hoặc chấp nhận explicit ALREADY_EXISTS như expected result
Không nên coi mọi HTTP 400 là soft PASS nếu chưa kiểm tra đúng error code hoặc business message.
Chat
Chat HTTP/API Probe: PASS
Socket.IO Transport Presence: PASS nếu đã probe handshake
Authenticated Realtime Chat E2E: NOT CONFIRMED
Việc domain Chat xuất hiện trong extra audit không tự động chứng minh kết nối realtime có JWT, join room, gửi tin, nhận tin và persistence đều PASS.
Payments
Payment Domain Probe: PASS
Wallet Transfer: PASS
Live MoMo/VNPay: NOT TESTED
Live Payment Credentials: OWNER_REQUIRED
Không dùng kết quả probe payment nội bộ để kết luận thanh toán tiền thật đã sẵn sàng.
Metro clarification
Metro :8081: RUNNING
Browser response: Manifest / development payload
Web application result: NOT APPLICABLE
Device / Expo Go: NOT OPENED
Metro không phải web app thông thường. Mở cổng Metro trong Chrome không phải một functional mobile test.
Remaining work packages
WP-SMOKE-IDEMPOTENCY-01
Status: IMP (2026-08-06)
driver.register → 409 DRIVER_ALREADY_REGISTERED (re-run PASS)
partner.onboarding → 409 PARTNER_ALREADY_REGISTERED (re-run PASS)
Smoke: chỉ accept explicit code — không soft-PASS mọi HTTP 400
JSON: errorCode + businessReason
smoke:chain 57/57 PASS · avgCompleteness 100
Mục tiêu (đã đạt):
Làm driver.register và partner.onboarding chạy lặp lại ổn định
Phân biệt expected duplicate với validation failure thật
Không bỏ qua HTTP 400 chung chung
Xuất error code và business reason vào JSON result
WP-CHAT-AUTH-E2E-01
Mục tiêu:
Lấy JWT bằng Email OTP API
Kết nối socket.io-client tới namespace /chat
Xác nhận authentication
Join room
Gửi message
Nhận acknowledgement/event
Kiểm tra persistence nếu có
Disconnect và cleanup
Không cần emulator/device
WP-ROUTING-PROVIDER-01
Mục tiêu:
Kiểm tra OSRM URL, timeout, DNS và network
Kiểm tra Mapbox token/config nếu provider được bật
Phân biệt provider result với Haversine fallback
Thêm providerUsed vào response hoặc test evidence
Không bịa Mapbox credential
WP-AUTH-GOOGLE-LIVE-01
Trạng thái:
OWNER_REQUIRED
Chỉ thực hiện sau khi có Google Web OAuth Client ID thật.
Artifact status
docs/SMOKE-CHAIN-RESULT.json: PRESENT
docs/reports/FUNCTIONAL-EXTRA-AUDIT.json: PRESENT
docs/reports/FUNCTIONAL-AUDIT-2026-08-06.md: PRESENT (this file)
docs/references/imp-stub-audit.json: PRESENT
docs/references/agent-work-queue.json: PRESENT
Liên kết mục lục:
Final classification
IMPLEMENTATION COVERAGE: PASS
STUB COVERAGE: PASS — 0 STUB
CORE FUNCTIONAL API: PASS
EXTRA DOMAIN API PROBES: PASS
LOCAL INFRASTRUCTURE: PASS
ENVIRONMENT: PASS WITH OWNER WARNING
ROUTING EXTERNAL PROVIDERS: PARTIAL
GOOGLE REAL OAUTH: OWNER_REQUIRED
LIVE PAYMENT: OWNER_REQUIRED / NOT TESTED
AUTHENTICATED CHAT REALTIME: NOT CONFIRMED
DEVICE / EMULATOR: NOT TESTED
LOCAL DEVELOPMENT READINESS: PASS
PRODUCTION READINESS: PARTIAL
APPLICATION REGRESSION: NO