SOS Architecture & Data Model
System Overviewβ
Seller SOS chαΊ‘y nhΖ° mα»t Cloudflare Workers application Δα»c lαΊp sα» dα»₯ng framework Hono, kαΊΏt nα»i ΔαΊΏn Supabase (PostgreSQL). Module nhαΊn dα»― liα»u tα»« nhiα»u nguα»n (OMS, WMS, Helpdesk, Accounting), tΓnh toΓ‘n Δiα»m SOS, vΓ dispatch webhook events ΔαΊΏn cΓ‘c hα» thα»ng subscriber.
Architecture Diagramβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β External Systems (Data Sources) β
β β
β βββββββββββ βββββββββββ ββββββββββββ βββββββββββββββββββββββββ β
β β OMS β β WMS β β Helpdesk β β Accounting System β β
β β Orders β βInventoryβ β Tickets β β Payments & Revenue β β
β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬ββββββ ββββββββββββ¬βββββββββββββ β
β β β β β β
β ββββββββββββββ΄βββββββββββββ΄ββββββββββββββββββββββ β
β β POST /api/sync/* β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Boxme SOS (Cloudflare Workers + Hono) β β
β β β β
β β ββββββββββββ ββββββββββββββββββ ββββββββββββββββββββββββββ β β
β β β Auth & β β Scoring Engine β β Webhook Dispatcher β β β
β β β RBAC β β P/O/T/F/I calc β β HMAC-SHA256 signed β β β
β β ββββββββββββ ββββββββββββββββββ ββββββββββββ¬ββββββββββββββ β β
β β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββ β
β β β β
β βΌ βΌ β
β βββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ β
β β Supabase (PostgreSQL) β β Webhook Subscribers β β
β β ~25 SOS tables β β (WMS, OMS, BI, Alerts) β β
β βββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Flowβ
1. External systems push data β POST /api/sync/*
βββ /sync/orders β sos_order_operation_raw
βββ /sync/forecasts β seller_forecast_submission
βββ /sync/campaign-actuals β campaign_actual_result
βββ /sync/tickets β sos_ticket_sla_raw
βββ /sync/payments β sos_payment_raw
βββ /sync/inventory β sos_inventory_health_raw
βββ /sync/revenue β am_portfolio_period_score
2. Admin triggers scoring β POST /api/sos/monthly/calculate
βββ Scoring Engine reads raw data + config tables
βββ calcPScore() β sos_planning_raw + sos_p_score_config
βββ calcOScore() β sos_order_operation_raw + sos_o_score_config
βββ calcTScore() β sos_ticket_sla_raw + sos_t_score_config
βββ calcFScore() β sos_payment_raw + sos_f_score_config
βββ calcIScore() β sos_inventory_health_raw + sos_i_score_config
βββ Results β seller_sos_period_score (status: draft)
3. Admin finalizes β PATCH /api/sos/monthly/:id/finalize
βββ Webhook Dispatcher β seller.score_finalized event
βββ If tier changed β seller.tier_changed event
4. Surcharges/Appeals β Webhook events dispatched automatically
Project Structureβ
seller-sos/
βββ src/
β βββ index.tsx # Main entry, static assets, SPA shell
β βββ routes/
β β βββ api.ts # Route aggregator (mounts all sub-routes)
β β βββ auth.ts # Login, session verify, password update
β β βββ sellers.ts # Seller CRUD, exceptions, AMs
β β βββ campaigns.ts # Campaign CRUD, forecasts, actuals
β β βββ scores.ts # SOS score endpoints, finalize, calculate
β β βββ appeals.ts # Appeal CRUD, 2-level review
β β βββ webhooks.ts # Webhook subscription management
β β βββ dashboard.ts # Dashboard statistics
β β βββ surcharges.ts # Surcharge records
β β βββ sync.ts # Data sync push endpoints
β β βββ config.ts # 11 config table CRUD (factory pattern)
β β βββ am.ts # AM portfolio scores
β βββ lib/
β β βββ scoring.ts # P/O/T/F/I scoring engine
β β βββ webhook-dispatcher.ts # HMAC signing + retry delivery
β β βββ supabase.ts # Supabase client factory
β β βββ d1_wrapper.ts # D1-compatible wrapper over Supabase
β βββ types/
β βββ index.ts # TypeScript type definitions
βββ migrations/
β βββ 0001_sos_schema.sql # Full schema (~25 tables)
β βββ 0002_sample_data.sql # Sample data for testing
βββ public/static/ # Frontend assets
βββ tests/ # Vitest test suites
βββ wrangler.jsonc # Cloudflare Workers config
βββ vite.config.ts # Build config
Database Tablesβ
Seller Coreβ
| Table | Description |
|---|---|
seller | Master data: seller_code, company_name, contract, warehouse, AM |
account_manager | AM profiles linked to sellers |
campaign | Sales campaigns (major/mini) with date ranges |
seller_forecast_submission | Seller forecast volumes per campaign |
campaign_actual_result | Actual order volumes post-campaign |
Score Data (Raw)β
| Table | Source | Description |
|---|---|---|
sos_planning_raw | Scoring Engine | P-Score aggregated planning data |
sos_order_operation_raw | OMS Sync | O-Score order timing raw data |
sos_ticket_sla_raw | Helpdesk Sync | T-Score ticket response metrics |
sos_payment_raw | Accounting Sync | F-Score payment timeliness |
sos_inventory_health_raw | WMS Sync | I-Score inventory aging data |
Score Resultsβ
| Table | Description |
|---|---|
seller_sos_period_score | Monthly SOS scores (P/O/T/F/I raw + weighted + total) |
seller_score_exception | Score overrides for specific sellers/components |
seller_sos_appeal | Appeal records with 2-level review workflow |
seller_surcharge_record | Surcharge records triggered by SOS rules |
Configurationβ
| Table | Description |
|---|---|
sos_score_weight_config | Component weight percentages |
sos_tier_config | Tier definitions (name, score range, color, benefits) |
sos_p_score_config | P-Score calculation parameters |
sos_o_score_config | O-Score thresholds and penalties |
sos_t_score_config | T-Score SLA tier definitions |
sos_f_score_config | F-Score payment tier definitions |
sos_i_score_config | I-Score aging thresholds |
sos_surcharge_config | Surcharge trigger rules |
sos_am_bonus_penalty_config | AM bonus/penalty rules based on SOS delta |
am_kpi_weight_config | AM KPI component weights |
seller_grace_period_config | Grace period settings for new sellers |
frappe_helpdesk_config | Frappe Helpdesk integration settings |
Webhookβ
| Table | Description |
|---|---|
webhook_subscription | Active webhook subscribers |
webhook_delivery_log | Delivery attempts with status and response |
AM Performanceβ
| Table | Description |
|---|---|
am_portfolio_period_score | AM monthly KPI scores |
Tech Stackβ
| Layer | Technology |
|---|---|
| Runtime | Cloudflare Workers (Edge) |
| Framework | Hono v4.x |
| Database | Supabase (PostgreSQL) |
| Frontend | Vanilla JS + CSS |
| Build | Vite + @hono/vite-build |
| Testing | Vitest |
| Deploy | Wrangler CLI + Cloudflare Pages |