一个司机端 + admin 端 + 后端三位一体的接机调度系统。从 OTA 抓单到结算付款,每一步都有数据库级别的兜底。
从 OTA 平台接单的接机调度生意,靠 Excel + WhatsApp 跑到 50 单/天就崩了。
运营靠 WhatsApp + Excel 一单一单分给司机。50 单/天后基本失控,错单 / 漏单天天发生,钱和信任两边都赔。
固定派单算法下,热门时段单子分给运气好的司机,冷门时段没人接。运力分配不公平,公司订单接不过来。
乘客 no-show 没有客观证据。司机和运营吵到最后,公司每次都得赔司机钱。
Talixo / Mozio / Mydriver / Kiwitaxi 各家有自己的后台。运营每天得切 5 个网页登录,错过订单是常态。
从 OTA 抓单 → 司机抢单 → GPS 追踪 → 联系乘客 → 出发 → 到达 → 完成 / 申请 No-show → 结算付款。
OTP 登录、强制 GPS、实时订单池、反向荷兰拍卖出价、强制联系乘客、No-show 证据上传、查收入历史。
派单中心、手动建单、司机评分、No-show 审核、实时热力图、月度结算。多城市并行,时区独立。
Supabase Postgres + Edge Functions。状态机 trigger / RLS / pg_cron / 服务端逻辑全部在数据库层强制。
Postgres trigger 拒绝任何非法状态迁移(比如 "completed → en_route")。客户端绕不过去。
抵达前 admin 可取消(pickup_time 距现在 > 6h 司机也可主动退池)
司机苦等乘客没到 → 提交证据 → admin 决定 100% 付 / 0% + 投诉
为什么用状态机? 数据库 trigger fn_orders_state_machine 检查每次 status 变更。
Mobile App 想绕过校验直接 UPDATE → trigger 抛 EXCEPTION,订单状态不会进非法值。这是**最后一道防线**。
司机端和 admin 端打包成同一个 APK / IPA,登录后按 is_admin 字段进入不同入口。省一半开发成本。
不养 K8s 集群、不搞微服务。Supabase 一站式 BaaS + Flutter 跨平台 + 数据库层强制业务逻辑。
| 层 | 技术 | 选型理由 |
|---|---|---|
| Mobile | Flutter 3.41 / Dart 3.11 | 1 codebase 出 Android + iOS |
| Auth | Supabase Auth (Phone OTP via Telnyx) | 司机不用记密码 |
| Database | Supabase Postgres 15 (RLS + triggers + cron) | 业务规则全在 DB 层强制 |
| Storage | Supabase Storage (private buckets) | No-show 证据图,私有 + RLS |
| Functions | Supabase Edge Functions (Deno TS) | maps-proxy / location-batch / OTA import |
| Maps | Google Routes + Geocoding APIs | 距离 + ETA + 地址解析 |
| Heatmap | OpenStreetMap + flutter_map | 免费,省 Google Maps 后台计费 |
| i18n | easy_localization · 中 / EN / ES | 司机来自不同语言背景 |
| SMS | Telnyx | 比 Twilio 便宜 30% |
| State mgmt | StatefulWidget + Stream | 项目体量足够,不引 BLoC 多余抽象 |
不是固定派单。订单进入 pending 池后价格随时间自动上涨,司机自己决定何时出价。
每 10 分钟上涨 5%,封顶 OTA 总价 70%
司机不会乱来 / 乘客有据可查 / 公司能审计。
App 启动必须授权位置,否则进不了主页。后台每 30s 上报。30 天历史保留供审计。
0–100 分。完成 +1 / 5★ +5 / 投诉按 severity -5/-10/-20。低于 50 自动停派。
司机抵达后 ≥30 min 且距 pickup_time ≥60 min 才能提交。3+ 张图必传。Admin 决定 100% / 0%。
5 步流程,2 道时间门槛,1 个证据要求。防骗钱机制做在前面。
为什么要两道时间门槛? 没有的话,司机可以提前 2 小时抵达 → 等 30 分钟 → 提交 no-show → 拿 100% 钱。 两道一起守,"提早抵达骗等待时间"这条路堵死。最终 admin 看证据图决定,**人工 + 系统**双层防线。
原本 5 个 OTA 后台 + Excel + WhatsApp,现在一个 App 全搞定。
待派订单池 + nearest_drivers 排序
所有订单查询,按城市 / 来源 / 状态过滤
非 OTA 订单录入,自动 geocode
在线名单 + last seen + 联系 deep link
运营录入评分 + 投诉
待审证据包 → 看图决策
实时 GPS + 30 天 trail(OSM)
月度按城市 / 司机出报表
当前在 Phase 2:iOS 工具链已就绪,等公司 Apple Developer 账号下来。
Phase 1 全部 done,Phase 2 卡在公司 Apple Developer 账号注册。一旦下来 → iOS 7 天内可上 TestFlight。