**RideHub** 是一个**智慧拼车小程序系统**,旨在连接乘客和司机:
1. **乘客功能**: 查看路线 → 选择上车站点 → 提交"我要上车"意愿
2. **司机功能**: 选择行驶路线 → 上报当前所在站点 → 查看各站点候车人数
3. **管理员功能**: 管理用户、路线、站点数据
该系统适用于**班车预约、企业通勤、社区巴士**等场景,通过实时意愿统计帮助司机优化停靠站点决策。
一、技术栈
### 后端(Backend)
| 技术 | 版本 | 说明 |
|------|------|------|
| **NestJS** | ^10.4.0 | Node.js 渐进式 Web 框架 |
| **Prisma** | ^7.6.0 | ORM 数据库工具 |
| **SQLite** | - | 轻量级数据库 |
| **TypeScript** | ^5.5.4 | 类型安全语言 |
| **Passport JWT** | ^10.2.0 | JWT 身份认证 |
| **Class-validator** | ^0.15.1 | DTO 验证 |
### 前端(Miniapp)
| 技术 | 版本 | 说明 |
|------|------|------|
| **uni-app** | 3.0.0 | 跨平台小程序框架 |
| **Vue** | ^3.4.21 | 渐进式前端框架 |
| **Vite** | 5.2.8 | 构建工具 |
| **TypeScript** | ^4.9.4 | 类型安全语言 |
## 司机端 · 操作指南
### 一、概览
司机端的核心职责是**管理一趟行程的生命周期**:选择路线 → 选择班次 → 发车 → 沿途报站 → 结束行程。
乘客端看到的「已选人数」「司机已上报」等提示,都来自司机端的操作结果。
---
### 二、开始之前:选择路线
在路线列表中点击一条路线进入。每个站点卡片会显示:
| 信息 | 含义 |
|------|------|
| **待接人数** | 该站点当前有多少乘客提交了上车意愿(waiting 状态) |
| **已到达** | 已点击「我已到达」的乘客数(arrived 状态) |
| **各趟人数** | 按班次分组的待接人数(方便知道哪趟人多) |
> 如果路线设置了指定司机,则只有被绑定的司机才能选这条路线。
---
### 三、出发前:上报当前停靠站点(可选)
**如果车辆还没有发车**,司机可以选择提前上报当前停靠的站点(点击站点卡片的「上报」按钮)。
这样乘客端会看到「司机已上报」的提示,帮助乘客判断是否需要提前到候车点等候。
**限制**:同一时间只能上报一个站点;切换路线或重新上车前需先取消上报。
---
### 四、开始发车
发车前必须**先选择本次班次**。展开班次时刻表,点击对应趟次:
**系统自动比对班次首站计划时刻与当前时间,规则如下:**
| 偏差范围 | 行为 |
|----------|------|
| 偏差 ≤ 10 分钟 | 直接选中班次,无需确认 |
| 偏差 > 10 分钟 | 弹出确认框,显示偏差量(如「晚 25 分钟」),司机点击「确认」后生效,「重选」则取消本