Переглянути джерело

📝 docs(architecture): 更新架构文档为出行服务项目

- 将项目从D8D Starter更新为出行服务项目架构
- 新增出行服务数据模型(活动、路线、订单、乘客)
- 添加订单处理流程和支付集成详细设计文档
- 更新技术栈支持Taro小程序和微信支付集成
- 完善活动-路线关系管理和多乘客信息管理
- 更新版本历史记录和文档结构
yourname 4 місяців тому
батько
коміт
dbd020d871

+ 303 - 115
docs/architecture.md

@@ -1,40 +1,48 @@
-# D8D Starter 遗留系统增强架构
+# 出行服务项目架构文档
 
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.0 | 2025-09-14 | 增强架构文档 | Winston |
-| 2.1 | 2025-09-19 | 添加数据库定时备份策略 | Winston |
-| 2.2 | 2025-09-19 | 更新测试策略文档引用 | Winston |
-| 2.3 | 2025-09-20 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 3.1 | 2025-10-15 | 更新乘客信息支持多种证件类型 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目架构 | Winston |
 | 2.4 | 2025-09-20 | 完善BMAD全栈架构规范,添加高层架构图、API规范、安全架构 | Winston |
+| 2.3 | 2025-09-20 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 2.2 | 2025-09-19 | 更新测试策略文档引用 | Winston |
+| 2.1 | 2025-09-19 | 添加数据库定时备份策略 | Winston |
+| 2.0 | 2025-09-14 | 增强架构文档 | Winston |
 
 ## 介绍
 
-本文档定义了D8D Starter项目的架构增强方案,基于对现有代码的深度分析。主要目标是将技术实现转化为明确的业务价值主张,同时保持与现有系统的完全兼容。
+本文档定义了出行服务项目的整体架构方案,基于对mini-demo页面迁移项目的深度分析。主要目标是将演示原型转化为功能完整的出行服务平台,同时保持技术架构的现代化和可扩展性
 
 **注意**: 本项目的详细架构文档已拆分为多个子文档,位于 `docs/architecture/` 目录中。如需查看完整的架构文档结构,请参阅 [架构文档索引](./architecture/index.md)。
 
 ### 文档范围
-全面定义系统增强的架构方法和集成策略
+全面定义出行服务项目的架构方案、技术栈选择、数据模型设计和集成策略
 
 ### 变更日志
 | 日期 | 版本 | 描述 | 作者 |
 |------|------|------|------|
-| 2024-09-14 | 1.0 | 初始现有系统分析 | Winston |
-| 2025-09-14 | 2.0 | 增强架构文档 | Winston |
-| 2025-09-19 | 2.1 | 添加数据库定时备份策略 | Winston |
-| 2025-09-19 | 2.2 | 更新测试策略文档引用 | Winston |
-| 2025-09-20 | 2.3 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 2025-10-15 | 3.1 | 更新乘客信息支持多种证件类型(身份证、港澳通行证、台湾通行证、护照等) | Winston |
+| 2025-10-15 | 3.0 | 更新为出行服务项目架构 | Winston |
 | 2025-09-20 | 2.4 | 完善BMAD全栈架构规范,添加高层架构图、API规范、安全架构 | Winston |
+| 2025-09-20 | 2.3 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 2025-09-19 | 2.2 | 更新测试策略文档引用 | Winston |
+| 2025-09-19 | 2.1 | 添加数据库定时备份策略 | Winston |
+| 2025-09-14 | 2.0 | 增强架构文档 | Winston |
+| 2024-09-14 | 1.0 | 初始现有系统分析 | Winston |
 
 ## 现有项目分析
 
 ### 当前项目状态
-- **主要用途**: 现代化的全栈Web应用启动模板,专注于开发者体验
-- **技术栈总结**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + PostgreSQL 17
-- **架构风格**: 分层架构,前后端分离但统一仓库管理
-- **部署方式**: Docker Compose本地开发,Node.js生产部署
+- **主要用途**: 出行服务小程序平台,支持拼车、商务车、包车等出行服务
+- **项目结构**: 三目录结构(mini-demo、mini、src)
+  - **mini-demo**: 微信原生小程序,16个出行服务页面,纯前端演示
+  - **mini**: Taro + React 小程序项目,基础框架已搭建
+  - **src**: Hono + TypeORM 后端API和管理后台,用户管理基础已实现
+- **技术栈总结**: Node.js 20.19.2 + Hono 4.8.5 + Taro + React + TypeORM 0.3.25 + PostgreSQL 17
+- **架构风格**: 分层架构,前后端分离,统一仓库管理
+- **部署方式**: 多八多云端开发容器环境,开放8080端口外网访问
 
 ### 可用文档分析
 ✅ **技术文档完整**:
@@ -42,110 +50,142 @@
 - 源码结构和模块组织清晰
 - 数据模型定义完整
 - API规范通过OpenAPI自动生成
+- 完整的PRD和项目简报
 
-⚠️ **需要补充**:
-- 完整的业务需求文档
-- 测试策略和覆盖率
-- 性能优化指南
-- 安全最佳实践
+✅ **已补充**:
+- 出行服务业务数据模型(基于MVP需求)
+- 活动-路线关系管理架构
+- 订单处理流程文档
+- 支付集成详细设计
 
 ### 识别出的约束
 - 必须保持与现有shadcn设计系统的兼容性
 - 需要支持PostgreSQL关系型数据库
 - 前端构建基于Vite,后端基于Hono
 - 部署环境支持Docker容器化
+- 必须兼容微信小程序平台限制
+- 需要支持活动-路线关系管理(1个活动关联多条线路)
+- 需要支持多个乘客信息管理(下单时选择N个乘车人)
 - 现有代码中存在一些`any`类型需要修复
 
-## 增强范围和集成策略
+## 项目范围和集成策略
 
-### 增强概述
-- **增强类型**: 现有项目功能完善和业务需求文档化
-- **范围**: 将技术实现转化为明确的业务价值主张
-- **集成影响级别**: 中等 - 主要添加文档和优化,不改变核心架构
+### 项目概述
+- **项目类型**: mini-demo页面迁移和出行服务系统构建
+- **范围**: 将演示原型转化为功能完整的出行服务平台
+- **MVP范围**: 基于MVP需求,实现核心出行服务功能,不包括积分商城、优惠券、会员等级等高级功能
+- **集成影响级别**: 高 - 需要新增出行业务数据模型和核心功能
 
 ### 集成方法
-- **代码集成策略**: 增量改进,保持向后兼容
-- **数据库集成**: 无模式变更,仅优化查询和索引
-- **API集成**: 保持现有API不变,增强文档和错误处理
-- **UI集成**: 保持现有shadcn设计系统,优化用户体验
+- **代码集成策略**: 渐进式迁移,保持业务连续性
+- **数据库集成**: 新增出行服务数据模型(活动、路线、订单、乘客),扩展现有用户管理
+- **API集成**: 新增出行服务API,保持现有API兼容
+- **UI集成**: 迁移mini-demo页面到Taro + React,保持用户体验一致性
+- **MVP重点**: 优先实现路线查询、活动筛选、订单管理、乘客管理、支付集成等核心功能
 
 ### 兼容性要求
 - **现有API兼容性**: 100%保持,不破坏现有客户端
-- **数据库Schema兼容性**: 无变更,确保数据完整性
-- **UI/UX一致性**: 遵循现有设计模式,保持视觉统一
-- **性能影响**: 响应时间保持在100ms以内,无性能退化
+- **数据库Schema兼容性**: 扩展现有模型,确保数据完整性
+- **UI/UX一致性**: 迁移页面保持原有交互体验
+- **性能影响**: 页面加载时间<2秒,API响应时间<500ms,无性能退化
 
 ## 高层架构
 
 ### 平台和基础设施选择
-**平台**: Docker + Node.js 本地开发部署
+**平台**: 多八多云端开发容器环境
 **核心服务**: PostgreSQL 17, Redis 7, MinIO对象存储
-**部署主机**: 多八多云端开发容器环境,开放8080端口外网访问
+**部署主机**: Node.js 20.19.2运行时,开放8080端口外网访问
 **区域**: 本地开发环境,生产环境参数相同
+**目标平台**: 微信小程序为主要发布平台
 
 ### 架构图
 ```mermaid
 graph TD
     subgraph "前端应用层"
-        A[React 19 管理后台] --> B[React Router v7]
+        A[Taro + React 小程序] --> B[微信小程序API]
         A --> C[React Query 状态管理]
         A --> D[shadcn/ui 组件库]
+        E[React 管理后台] --> F[React Router v7]
     end
 
     subgraph "API网关层"
-        E[Hono 4.8.5 API路由] --> F[Zod Schema验证]
-        E --> G[JWT认证中间件]
-        E --> H[OpenAPI文档生成]
+        G[Hono 4.8.5 API路由] --> H[Zod Schema验证]
+        G --> I[JWT认证中间件]
+        G --> J[OpenAPI文档生成]
     end
 
     subgraph "业务服务层"
-        I[通用CRUD服务] --> J[TypeORM实体管理]
-        I --> K[数据库备份工具]
-        I --> L[数据库恢复工具]
+        K[出行服务模块] --> L[活动管理服务]
+        K --> M[路线管理服务]
+        K --> N[订单管理服务]
+        K --> O[乘客管理服务]
+        K --> P[支付集成服务]
+        Q[通用CRUD服务] --> R[TypeORM实体管理]
+        Q --> S[数据库备份工具]
     end
 
     subgraph "数据存储层"
-        M[PostgreSQL 17] --> N[用户数据]
-        M --> O[角色权限数据]
-        P[Redis 7 缓存] --> Q[会话缓存]
-        R[MinIO 对象存储] --> S[文件存储]
+        T[PostgreSQL 17] --> U[用户数据]
+        T --> V[活动数据]
+        T --> W[路线数据]
+        T --> X[订单数据]
+        T --> Y[乘客数据]
+        Z[Redis 7 缓存] --> AA[会话缓存]
+        AB[MinIO 对象存储] --> AC[文件存储]
+    end
+
+    subgraph "第三方服务"
+        AD[微信支付] --> AE[支付处理]
+        AF[地图服务] --> AG[位置服务]
     end
 
     subgraph "基础设施层"
-        T[Docker Compose] --> U[本地开发环境]
-        V[Node.js 20.18.3] --> W[生产运行时]
+        AH[多八多云端容器] --> AI[Node.js 20.19.2]
+        AJ[开放8080端口] --> AK[外网访问]
     end
 
-    A --> E
-    E --> I
-    I --> M
-    I --> P
-    E --> R
-    H --> X[Swagger UI /ui]
+    A --> G
+    E --> G
+    G --> K
+    G --> Q
+    K --> T
+    Q --> T
+    G --> Z
+    G --> AB
+    K --> AD
+    K --> AF
+    J --> AL[Swagger UI /ui]
 
     style A fill:#e1f5fe
     style E fill:#f3e5f5
-    style I fill:#fff3e0
-    style M fill:#e8f5e8
-    style P fill:#ffebee
-    style R fill:#f3e5f5
+    style G fill:#fff3e0
+    style K fill:#e8f5e8
+    style O fill:#fff0f5
+    style R fill:#e8f5e8
+    style W fill:#ffebee
+    style Y fill:#f3e5f5
+    style AA fill:#fff3e0
+    style AC fill:#e1f5fe
 ```
 
 ### 架构模式
 - **分层架构**: 清晰的前后端分离,统一的代码仓库管理
-- **组件化UI**: 基于React + shadcn/ui的可复用组件架构
+- **组件化UI**: 基于Taro + React + shadcn/ui的可复用组件架构
 - **RESTful API**: 遵循OpenAPI规范的统一API设计
 - **通用CRUD模式**: 类型安全的通用数据操作服务
 - **中间件模式**: 统一的认证、验证、错误处理中间件
+- **领域驱动设计**: 基于出行服务业务领域的模块化设计
+- **快照模式**: 订单数据快照确保历史数据完整性
+- **活动-路线关联模式**: 支持1个活动关联多条路线的业务模型
 
 ## 技术栈
 
 ### 现有技术栈维护
-| 类别 | 当前技术 | 版本 | 在增强中的用途 | 备注 |
+| 类别 | 当前技术 | 版本 | 在项目中的用途 | 备注 |
 |------|----------|------|----------------|------|
-| 运行时 | Node.js | 20.18.3 | 服务器运行时环境 | ES模块支持 |
+| 运行时 | Node.js | 20.19.2 | 服务器运行时环境 | ES模块支持 |
 | 框架 | Hono | 4.8.5 | Web框架和API路由 | RPC类型安全 |
-| 前端框架 | React | 19.1.0 | 用户界面构建 | 最新版本 |
+| 前端框架 | Taro + React | 最新 | 小程序用户界面构建 | 多端支持 |
 | 构建工具 | Vite | 7.0.0 | 开发服务器和构建 | 热重载支持 |
 | 数据库 | PostgreSQL | 17 | 数据持久化存储 | 通过TypeORM |
 | ORM | TypeORM | 0.3.25 | 数据库操作抽象 | 实体管理 |
@@ -163,6 +203,12 @@ graph TD
 | MinIO | latest | 对象存储服务 | 提供可扩展的文件存储解决方案,支持大文件上传和分段上传 | 通过MinIO客户端SDK集成 |
 | MinIO客户端SDK | latest | MinIO API集成 | 提供与MinIO服务的完整交互能力 | 后端服务集成 |
 
+| Taro | 最新 | 多端小程序框架 | 支持微信小程序发布,更好的开发体验 | 替换mini-demo原生开发 |
+| 微信支付SDK | 最新 | 支付集成 | 支持出行服务支付需求 | 后端API集成 |
+| 地图服务SDK | 最新 | 位置服务 | 支持路线规划和位置跟踪 | 前后端集成 |
+| 活动-路线管理 | 自定义 | 活动路线关系 | 支持1个活动关联多条路线 | 业务逻辑层实现 |
+| 多乘客管理 | 自定义 | 乘客信息管理 | 支持下单时选择N个乘车人 | 业务逻辑层实现 |
+
 ## 数据模型和Schema变更
 
 ### 现有数据模型状态
@@ -188,7 +234,65 @@ graph TD
   - `uploadTime`: Date - 上传时间
 - **关系**: 与User实体建立多对一关系映射
 
-**优化重点**: 保持现有数据模型不变,新增文件管理功能,优化查询性能和验证逻辑
+### 新增出行服务数据模型
+**活动模型**:
+- **用途**: 管理出行活动,关联多条路线
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `name`: string - 活动名称
+  - `type`: ActivityType - 活动类型(去程活动/返程活动)
+  - `startDate`: Date - 活动开始日期
+  - `endDate`: Date - 活动结束日期
+  - `status`: ActivityStatus - 活动状态
+
+**路线模型**:
+- **用途**: 管理出行路线,关联到活动
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `activityId`: number - 关联的活动ID
+  - `startPoint`: string - 上车点
+  - `endPoint`: string - 下车点
+  - `departureTime`: Date - 出发时间
+  - `vehicleType`: string - 车型
+  - `maxPassengers`: number - 最大乘客数
+  - `price`: number - 价格
+  - `driverPlate`: string - 司机车牌
+  - `driverPhone`: string - 司机电话
+
+**订单模型**:
+- **用途**: 管理出行订单信息
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `userId`: number - 用户ID
+  - `routeId`: number - 路线ID
+  - `activityId`: number - 活动ID
+  - `passengerCount`: number - 乘客数量
+  - `totalAmount`: number - 订单总金额
+  - `status`: string - 订单状态(待出发、行程中、已完成、已取消)
+  - `paymentStatus`: string - 支付状态
+  - `passengerSnapshots`: JSON - 乘客信息快照数组(下单时的多个乘客信息)
+  - `routeSnapshot`: JSON - 路线信息快照(下单时的路线信息)
+  - `createdAt`: Date - 创建时间
+
+**乘客模型**:
+- **用途**: 管理乘客信息
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `userId`: number - 用户ID
+  - `name`: string - 乘客姓名
+  - `idType`: IdType - 证件类型(身份证、回乡证、护照等)
+  - `idNumber`: string - 证件号码
+  - `phone`: string - 手机号
+  - `isDefault`: boolean - 是否默认乘客
+
+**积分模型**:
+- **用途**: 管理用户积分(MVP阶段暂不实现)
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `userId`: number - 用户ID
+  - `points`: number - 积分余额
+  - `earnedPoints`: number - 累计获得积分
+  - `usedPoints`: number - 累计使用积分
 
 ### TypeScript接口定义
 ```typescript
@@ -213,70 +317,143 @@ export interface Role {
   updatedAt: Date;
 }
 
-// 用户创建DTO
-export interface CreateUserDto {
-  username: string;
-  email?: string;
-  password: string;
-  roleIds?: number[];
+// 活动实体接口
+export interface Activity {
+  id: number;
+  name: string;
+  type: ActivityType;
+  startDate: Date;
+  endDate: Date;
+  status: ActivityStatus;
+  routes: Route[];
+  createdAt: Date;
+  updatedAt: Date;
 }
 
-// 用户更新DTO
-export interface UpdateUserDto {
-  username?: string;
-  email?: string | null;
-  password?: string;
-  roleIds?: number[];
+// 路线实体接口
+export interface Route {
+  id: number;
+  activityId: number;
+  activity: Activity;
+  startPoint: string;
+  endPoint: string;
+  departureTime: Date;
+  vehicleType: VehicleType;
+  maxPassengers: number;
+  price: number;
+  driverPlate: string;
+  driverPhone: string;
+  availableSeats: number;
+  orders: Order[];
+  createdAt: Date;
+  updatedAt: Date;
+}
+
+// 订单实体接口
+export interface Order {
+  id: number;
+  userId: number;
+  user: User;
+  routeId: number;
+  route: Route;
+  activityId: number;
+  activity: Activity;
+  passengerCount: number;
+  totalAmount: number;
+  status: OrderStatus;
+  paymentStatus: PaymentStatus;
+  passengerSnapshots: PassengerSnapshot[];
+  routeSnapshot: RouteSnapshot;
+  passengers: Passenger[];
+  createdAt: Date;
+  updatedAt: Date;
 }
 
-// 文件实体接口
-export interface File {
+// 乘客实体接口
+export interface Passenger {
   id: number;
+  userId: number;
+  user: User;
   name: string;
-  type: string | null;
-  size: number | null;
-  path: string;
-  description: string | null;
-  uploadUserId: number;
-  uploadUser: User;
-  uploadTime: Date;
-  lastUpdated: Date | null;
+  idType: IdType; // 证件类型
+  idNumber: string; // 证件号码
+  phone: string;
+  isDefault: boolean;
+  orders: Order[];
   createdAt: Date;
   updatedAt: Date;
-  fullUrl: Promise<string>; // 异步获取预签名URL
 }
 
-// 文件创建DTO
-export interface CreateFileDto {
+// 乘客信息快照接口
+export interface PassengerSnapshot {
   name: string;
-  type?: string;
-  size?: number;
-  description?: string;
-  uploadUserId: number;
+  idType: IdType; // 证件类型
+  idNumber: string; // 证件号码
+  phone: string;
+  isDefault: boolean;
 }
 
-// 多部分上传策略响应
-export interface MultipartUploadPolicy {
-  uploadId: string;
-  bucket: string;
-  key: string;
-  host: string;
-  partUrls: string[];
+// 路线信息快照接口
+export interface RouteSnapshot {
+  startPoint: string;
+  endPoint: string;
+  departureTime: Date;
+  vehicleType: VehicleType;
+  maxPassengers: number;
+  price: number;
+  driverPlate: string;
+  driverPhone: string;
 }
 
-// 上传策略响应
-export interface UploadPolicy {
-  uploadPolicy: {
-    'x-amz-algorithm': string;
-    'x-amz-credential': string;
-    'x-amz-date': string;
-    'x-amz-security-token'?: string;
-    policy: string;
-    'x-amz-signature': string;
-    host: string;
-    key: string;
-    bucket: string;
-  };
+// 积分实体接口
+export interface Points {
+  id: number;
+  userId: number;
+  user: User;
+  points: number;
+  earnedPoints: number;
+  usedPoints: number;
+  lastUpdated: Date;
+}
+
+// 枚举定义
+export enum OrderStatus {
+  WAITING_DEPARTURE = '待出发',
+  IN_PROGRESS = '行程中',
+  COMPLETED = '已完成',
+  CANCELLED = '已取消'
+}
+
+export enum PaymentStatus {
+  PENDING = '待支付',
+  PAID = '已支付',
+  FAILED = '支付失败',
+  REFUNDED = '已退款'
+}
+
+export enum VehicleType {
+  CARPOOL = '拼车',
+  BUSINESS = '商务车',
+  CHARTER = '包车'
+}
+
+export enum ActivityType {
+  OUTBOUND = '去程活动',
+  INBOUND = '返程活动'
+}
+
+export enum ActivityStatus {
+  ACTIVE = '进行中',
+  ENDED = '已结束',
+  CANCELLED = '已取消'
+}
+
+export enum IdType {
+  ID_CARD = '身份证',
+  HONG_KONG_MACAO_PASS = '港澳通行证',
+  TAIWAN_PASS = '台湾通行证',
+  PASSPORT = '护照',
+  OTHER = '其他证件'
 }
 
 // 分页响应接口
@@ -293,14 +470,25 @@ export interface PaginatedResponse<T> {
 
 ### 数据关系
 - **User ↔ Role**: 多对多关系,通过中间表关联
+- **User → Order**: 一对多关系,一个用户可以创建多个订单
+- **User → Passenger**: 一对多关系,一个用户可以管理多个乘客
+- **User → Points**: 一对一关系,每个用户有一个积分账户(MVP阶段暂不实现)
+- **Activity → Route**: 一对多关系,一个活动可以关联多条路线
+- **Route → Order**: 一对多关系,一条路线可以有多个订单
+- **Order ↔ Passenger**: 多对多关系,一个订单可以有多个乘客,一个乘客可以出现在多个订单中
 - **User → (createdAt, updatedAt)**: 自动时间戳管理
 - **Role → permissions**: 字符串数组存储权限列表
 
+**快照设计说明**:
+- **passengerSnapshots**: 存储下单时的多个乘客信息快照数组,确保订单历史数据完整性
+- **routeSnapshot**: 存储下单时的路线信息快照,防止路线信息变更影响历史订单
+
 ### Schema集成策略
-- **数据库变更要求**: 新增文件管理表,优化现有表结构
-- **新表**: file表(文件管理)
+- **数据库变更要求**: 新增出行服务数据表,扩展现有用户管理
+- **新表**: activity表(活动管理)、route表(路线管理)、order表(订单管理)、passenger表(乘客管理)
+- **可选表**: points表(积分管理,MVP阶段暂不实现)
 - **修改的表**: 无结构性变更
-- **新索引**: 为文件查询字段添加索引(name, uploadUserId, uploadTime
+- **新索引**: 为订单查询字段添加索引(userId, status, createdAt)、为路线查询字段添加索引(startPoint, endPoint, departureTime)、为活动查询字段添加索引(type, status
 - **迁移策略**: 使用TypeORM迁移工具,确保数据完整性
 
 ### 向后兼容性

+ 3 - 3
docs/architecture/api-design-integration.md

@@ -3,7 +3,7 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目API设计 | Winston |
 
 ## API集成策略
 - **API集成策略**: 保持现有RESTful API设计,增强OpenAPI文档
@@ -14,9 +14,9 @@
 ```yaml
 openapi: 3.0.0
 info:
-  title: D8D Starter API
+  title: 出行服务API
   version: 1.0.0
-  description: D8D Starter项目RESTful API文档
+  description: 出行服务项目RESTful API文档 - 基于MVP需求
 servers:
   - url: http://localhost:3000/api/v1
     description: 本地开发环境

+ 2 - 2
docs/architecture/component-architecture.md

@@ -3,7 +3,7 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目组件架构 | Winston |
 
 ### 前端组件架构
 
@@ -102,7 +102,7 @@ src/server/
 
 **后端技术栈配置**:
 - **框架**: Hono 4.8.5 + TypeScript
-- **数据库**: PostgreSQL 15 + TypeORM 0.3.25
+- **数据库**: PostgreSQL 17 + TypeORM 0.3.25
 - **验证**: Zod schema验证
 - **认证**: JWT Bearer Token
 - **API文档**: @hono/zod-openapi + Swagger UI

+ 182 - 56
docs/architecture/data-model-schema-changes.md

@@ -3,7 +3,8 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
+| 3.1 | 2025-10-15 | 更新乘客信息支持多种证件类型 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务数据模型 | Winston |
 
 ## 现有数据模型状态
 **用户模型**:
@@ -31,7 +32,64 @@
   - `uploadTime`: Date - 上传时间
 - **关系**: 与User实体建立多对一关系映射
 
-**优化重点**: 保持现有数据模型不变,新增文件管理功能,优化查询性能和验证逻辑
+## 新增出行服务数据模型
+**订单模型**:
+- **用途**: 管理出行订单信息
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `userId`: number - 用户ID
+  - `routeId`: number - 路线ID
+  - `passengerCount`: number - 乘客数量
+  - `totalAmount`: number - 订单总金额
+  - `status`: string - 订单状态(待支付、待出发、行程中、已完成、已取消)
+  - `paymentStatus`: string - 支付状态
+  - `passengerSnapshots`: JSON - 乘客信息快照数组(下单时的多个乘客信息)
+  - `routeSnapshot`: JSON - 路线信息快照(下单时的路线信息)
+  - `createdAt`: Date - 创建时间
+
+**乘客模型**:
+- **用途**: 管理乘客信息
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `userId`: number - 用户ID
+  - `name`: string - 乘客姓名
+  - `idType`: IdType - 证件类型(身份证、港澳通行证、台湾通行证、护照等)
+  - `idNumber`: string - 证件号码
+  - `phone`: string - 手机号
+  - `isDefault`: boolean - 是否默认乘客
+
+**活动模型**:
+- **用途**: 管理出行活动,关联多条路线
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `name`: string - 活动名称
+  - `description`: string - 活动描述
+  - `type`: ActivityType - 活动类型(去程活动/返程活动)
+  - `startDate`: Date - 活动开始日期
+  - `endDate`: Date - 活动结束日期
+  - `status`: ActivityStatus - 活动状态(进行中、已结束、已取消)
+  - `createdAt`: Date - 创建时间
+
+**路线模型**:
+- **用途**: 管理出行路线,关联到活动
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `activityId`: number - 关联的活动ID
+  - `startPoint`: string - 上车点
+  - `endPoint`: string - 下车点
+  - `departureTime`: Date - 出发时间
+  - `vehicleType`: string - 车型
+  - `maxPassengers`: number - 最大乘客数
+  - `price`: number - 价格
+
+**积分模型**:
+- **用途**: 管理用户积分(MVP阶段暂不实现)
+- **关键属性**:
+  - `id`: number - 主键标识符
+  - `userId`: number - 用户ID
+  - `points`: number - 积分余额
+  - `earnedPoints`: number - 累计获得积分
+  - `usedPoints`: number - 累计使用积分
 
 ### TypeScript接口定义
 ```typescript
@@ -41,6 +99,8 @@ export interface User {
   username: string;
   email: string | null;
   password: string;
+  avatarFileId: number | null;
+  avatarFile?: File; // 头像文件关联
   roles: Role[];
   createdAt: Date;
   updatedAt: Date;
@@ -56,70 +116,127 @@ export interface Role {
   updatedAt: Date;
 }
 
-// 用户创建DTO
-export interface CreateUserDto {
-  username: string;
-  email?: string;
-  password: string;
-  roleIds?: number[];
+// 订单实体接口
+export interface Order {
+  id: number;
+  userId: number;
+  user: User;
+  routeId: number;
+  route: Route;
+  activityId: number;
+  activity: Activity; // 订单关联的活动
+  passengerCount: number;
+  totalAmount: number;
+  status: OrderStatus;
+  paymentStatus: PaymentStatus;
+  passengerSnapshots: PassengerSnapshot[]; // 下单时的多个乘客信息快照
+  routeSnapshot: RouteSnapshot; // 下单时的路线信息快照
+  activitySnapshot: ActivitySnapshot; // 下单时的活动信息快照
+  passengers: Passenger[];
+  createdAt: Date;
+  updatedAt: Date;
 }
 
-// 用户更新DTO
-export interface UpdateUserDto {
-  username?: string;
-  email?: string | null;
-  password?: string;
-  roleIds?: number[];
+// 乘客实体接口
+export interface Passenger {
+  id: number;
+  userId: number;
+  user: User;
+  name: string;
+  idType: IdType; // 证件类型
+  idNumber: string; // 证件号码
+  phone: string;
+  isDefault: boolean;
+  createdAt: Date;
+  updatedAt: Date;
 }
 
-// 文件实体接口
-export interface File {
+// 路线实体接口
+export interface Route {
   id: number;
-  name: string;
-  type: string | null;
-  size: number | null;
-  path: string;
-  description: string | null;
-  uploadUserId: number;
-  uploadUser: User;
-  uploadTime: Date;
-  lastUpdated: Date | null;
+  startPoint: string;
+  endPoint: string;
+  departureTime: Date;
+  vehicleType: VehicleType;
+  maxPassengers: number;
+  price: number;
+  availableSeats: number;
   createdAt: Date;
   updatedAt: Date;
-  fullUrl: Promise<string>; // 异步获取预签名URL
 }
 
-// 文件创建DTO
-export interface CreateFileDto {
+// 乘客信息快照接口
+export interface PassengerSnapshot {
   name: string;
-  type?: string;
-  size?: number;
-  description?: string;
-  uploadUserId: number;
+  idType: IdType; // 证件类型
+  idNumber: string; // 证件号码
+  phone: string;
+  isDefault: boolean;
 }
 
-// 多部分上传策略响应
-export interface MultipartUploadPolicy {
-  uploadId: string;
-  bucket: string;
-  key: string;
-  host: string;
-  partUrls: string[];
+// 路线信息快照接口
+export interface RouteSnapshot {
+  startPoint: string;
+  endPoint: string;
+  departureTime: Date;
+  vehicleType: VehicleType;
+  maxPassengers: number;
+  price: number;
 }
 
-// 上传策略响应
-export interface UploadPolicy {
-  uploadPolicy: {
-    'x-amz-algorithm': string;
-    'x-amz-credential': string;
-    'x-amz-date': string;
-    'x-amz-security-token'?: string;
-    policy: string;
-    'x-amz-signature': string;
-    host: string;
-    key: string;
-    bucket: string;
-  };
+// 活动信息快照接口
+// 用于订单中保存下单时的活动信息,确保历史数据完整性
+export interface ActivitySnapshot {
+  id: number;
+  title: string;
+  description: string;
+  startTime: Date;
+  endTime: Date;
+  maxParticipants: number;
+  currentParticipants: number;
+  status: ActivityStatus;
+  createdAt: Date;
+}
+
+// 积分实体接口(MVP阶段暂不实现)
+export interface Points {
+  id: number;
+  userId: number;
+  user: User;
+  points: number;
+  earnedPoints: number;
+  usedPoints: number;
+  lastUpdated: Date;
+}
+
+// 枚举定义
+export enum OrderStatus {
+  PENDING_PAYMENT = '待支付',
+  WAITING_DEPARTURE = '待出发',
+  IN_PROGRESS = '行程中',
+  COMPLETED = '已完成',
+  CANCELLED = '已取消'
+}
+
+export enum PaymentStatus {
+  PENDING = '待支付',
+  PAID = '已支付',
+  FAILED = '支付失败',
+  REFUNDED = '已退款'
+}
+
+export enum VehicleType {
+  CARPOOL = '拼车',
+  BUSINESS = '商务车',
+  CHARTER = '包车'
+}
+
+export enum IdType {
+  ID_CARD = '身份证',
+  HONG_KONG_MACAO_PASS = '港澳通行证',
+  TAIWAN_PASS = '台湾通行证',
+  PASSPORT = '护照',
+  OTHER = '其他证件'
 }
 
 // 分页响应接口
@@ -136,18 +253,27 @@ export interface PaginatedResponse<T> {
 
 ### 数据关系
 - **User ↔ Role**: 多对多关系,通过中间表关联
+- **User → Order**: 一对多关系,一个用户可以创建多个订单
+- **User → Passenger**: 一对多关系,一个用户可以管理多个乘客
+- **Route → Order**: 一对多关系,一条路线可以有多个订单
+- **Order ↔ Passenger**: 多对多关系,一个订单可以有多个乘客,一个乘客可以出现在多个订单中
 - **User → (createdAt, updatedAt)**: 自动时间戳管理
 - **Role → permissions**: 字符串数组存储权限列表
 
+**快照设计说明**:
+- **passengerSnapshots**: 存储下单时的多个乘客信息快照数组,确保订单历史数据完整性
+- **routeSnapshot**: 存储下单时的路线信息快照,防止路线信息变更影响历史订单
+
 ## Schema集成策略
-- **数据库变更要求**: 新增文件管理表,优化现有表结构
-- **新表**: file表(文件管理)
+- **数据库变更要求**: 新增出行服务数据表,扩展现有用户管理
+- **新表**: order表(订单管理)、passenger表(乘客管理)、route表(路线管理)
+- **可选表**: points表(积分管理,MVP阶段暂不实现)
 - **修改的表**: 无结构性变更
-- **新索引**: 为文件查询字段添加索引(name, uploadUserId, uploadTime)
+- **新索引**: 为订单查询字段添加索引(userId, status, createdAt)、为路线查询字段添加索引(startPoint, endPoint, departureTime)
 - **迁移策略**: 使用TypeORM迁移工具,确保数据完整性
 
 ## 向后兼容性
 - 保持所有现有API端点不变
 - 确保现有数据查询继续正常工作
 - 不修改任何现有字段定义
-- 新增功能通过可选字段或新端点实现
+- 新增功能通过可选字段或新端点实现

+ 1 - 1
docs/architecture/enhancement-scope-integration.md

@@ -3,7 +3,7 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目增强范围 | Winston |
 
 ## 增强概述
 - **增强类型**: 现有项目功能完善和业务需求文档化

+ 17 - 9
docs/architecture/existing-project-analysis.md

@@ -3,13 +3,17 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目分析 | Winston |
 
 ## 当前项目状态
-- **主要用途**: 现代化的全栈Web应用启动模板,专注于开发者体验
-- **技术栈总结**: Node.js 20.18.3 + Hono 4.8.5 + React 19.1.0 + TypeORM 0.3.25 + PostgreSQL 15
-- **架构风格**: 分层架构,前后端分离但统一仓库管理
-- **部署方式**: Docker Compose本地开发,Node.js生产部署
+- **主要用途**: 出行服务小程序平台,支持拼车、商务车、包车等出行服务
+- **项目结构**: 三目录结构(mini-demo、mini、src)
+  - **mini-demo**: 微信原生小程序,16个出行服务页面,纯前端演示
+  - **mini**: Taro + React 小程序项目,基础框架已搭建
+  - **src**: Hono + TypeORM 后端API和管理后台,用户管理基础已实现
+- **技术栈总结**: Node.js 20.19.2 + Hono 4.8.5 + Taro + React + TypeORM 0.3.25 + PostgreSQL 17
+- **架构风格**: 分层架构,前后端分离,统一仓库管理
+- **部署方式**: 多八多云端开发容器环境,开放8080端口外网访问
 
 ## 可用文档分析
 ✅ **技术文档完整**:
@@ -17,16 +21,20 @@
 - 源码结构和模块组织清晰
 - 数据模型定义完整
 - API规范通过OpenAPI自动生成
+- 完整的PRD和项目简报
 
 ⚠️ **需要补充**:
-- 完整的业务需求文档
-- 测试策略和覆盖率
-- 性能优化指南
-- 安全最佳实践
+- 出行服务业务数据模型(基于MVP需求)
+- 订单处理流程文档
+- 支付集成详细设计
+- 活动-路线关系管理架构
 
 ## 识别出的约束
 - 必须保持与现有shadcn设计系统的兼容性
 - 需要支持PostgreSQL关系型数据库
 - 前端构建基于Vite,后端基于Hono
 - 部署环境支持Docker容器化
+- 必须兼容微信小程序平台限制
+- 需要支持活动-路线关系管理(1个活动关联多条线路)
+- 需要支持多个乘客信息管理(下单时选择N个乘车人)
 - 现有代码中存在一些`any`类型需要修复

+ 12 - 2
docs/architecture/index.md

@@ -1,8 +1,8 @@
-# D8D Starter 遗留系统增强架构
+# 出行服务项目架构
 
 ## Table of Contents
 
-- [D8D Starter 遗留系统增强架构](#table-of-contents)
+- [出行服务项目架构](#table-of-contents)
   - [版本信息](./version-info.md)
   - [介绍](./introduction.md)
     - [文档范围](./introduction.md#文档范围)
@@ -22,6 +22,16 @@
     - [现有数据模型状态](./data-model-schema-changes.md#现有数据模型状态)
     - [Schema集成策略](./data-model-schema-changes.md#schema集成策略)
     - [向后兼容性](./data-model-schema-changes.md#向后兼容性)
+  - [订单处理流程](./order-processing-workflow.md)
+    - [订单状态机](./order-processing-workflow.md#订单状态机)
+    - [订单处理流程](./order-processing-workflow.md#订单处理流程)
+    - [关键业务规则](./order-processing-workflow.md#关键业务规则)
+    - [异常处理](./order-processing-workflow.md#异常处理)
+  - [支付集成设计](./payment-integration-design.md)
+    - [支付架构概览](./payment-integration-design.md#支付架构概览)
+    - [微信支付集成](./payment-integration-design.md#微信支付集成)
+    - [技术实现](./payment-integration-design.md#技术实现)
+    - [安全设计](./payment-integration-design.md#安全设计)
   - [组件架构](./component-architecture.md)
     - [现有组件优化](./component-architecture.md#现有组件优化)
     - [组件交互](./component-architecture.md#组件交互)

+ 8 - 7
docs/architecture/introduction.md

@@ -1,18 +1,19 @@
 # 介绍
 
-本文档定义了D8D Starter项目的架构增强方案,基于对现有代码的深度分析。主要目标是将技术实现转化为明确的业务价值主张,同时保持与现有系统的完全兼容
+本文档定义了出行服务项目的整体架构方案,基于对mini-demo页面迁移项目的深度分析。主要目标是将演示原型转化为功能完整的出行服务平台,同时保持技术架构的现代化和可扩展性
 
 **注意**: 本项目的详细架构文档已拆分为多个子文档,位于 `docs/architecture/` 目录中。如需查看完整的架构文档结构,请参阅 [架构文档索引](./index.md)。
 
 ## 文档范围
-全面定义系统增强的架构方法和集成策略
+全面定义出行服务项目的架构方案、技术栈选择、数据模型设计和集成策略
 
 ## 变更日志
 | 日期 | 版本 | 描述 | 作者 |
 |------|------|------|------|
-| 2024-09-14 | 1.0 | 初始现有系统分析 | Winston |
-| 2025-09-14 | 2.0 | 增强架构文档 | Winston |
-| 2025-09-19 | 2.1 | 添加数据库定时备份策略 | Winston |
-| 2025-09-19 | 2.2 | 更新测试策略文档引用 | Winston |
-| 2025-09-20 | 2.3 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 2025-10-15 | 3.0 | 更新为出行服务项目架构 | Winston |
 | 2025-09-20 | 2.4 | 完善BMAD全栈架构规范,添加高层架构图、API规范、安全架构 | Winston |
+| 2025-09-20 | 2.3 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 2025-09-19 | 2.2 | 更新测试策略文档引用 | Winston |
+| 2025-09-19 | 2.1 | 添加数据库定时备份策略 | Winston |
+| 2025-09-14 | 2.0 | 增强架构文档 | Winston |
+| 2024-09-14 | 1.0 | 初始现有系统分析 | Winston |

+ 167 - 0
docs/architecture/order-processing-workflow.md

@@ -0,0 +1,167 @@
+# 订单处理流程文档
+
+## 版本信息
+| 版本 | 日期 | 描述 | 作者 |
+|------|------|------|------|
+| 1.0 | 2025-10-15 | 创建订单处理流程文档 | Winston |
+
+## 订单状态机
+
+### 订单状态流转
+```mermaid
+stateDiagram-v2
+    [*] --> 待支付
+    待支付 --> 待出发: 支付成功
+    待支付 --> 已取消: 取消订单
+    待出发 --> 行程中: 出发时间到达
+    行程中 --> 已完成: 行程结束
+    待出发 --> 已取消: 取消订单
+    行程中 --> 已取消: 取消订单
+    已完成 --> [*]
+    已取消 --> [*]
+```
+
+### 状态说明
+- **待支付**: 用户下单后,订单创建成功但尚未支付
+- **待出发**: 支付成功,等待出发时间到达
+- **行程中**: 出发时间到达,行程正在进行中
+- **已完成**: 行程正常结束
+- **已取消**: 用户或系统取消订单
+
+## 订单处理流程
+
+### 1. 下单流程
+```mermaid
+sequenceDiagram
+    participant 用户
+    participant 前端
+    participant API
+    participant 数据库
+    participant 支付服务
+
+    用户->>前端: 选择路线和乘客
+    前端->>API: 创建订单请求
+    API->>数据库: 验证路线可用性
+    API->>数据库: 创建订单记录
+    API-->>前端: 返回订单详情和支付信息
+    前端->>支付服务: 发起支付请求
+    支付服务-->>前端: 返回支付结果
+    前端->>用户: 显示支付结果
+```
+
+### 2. 支付流程
+```mermaid
+sequenceDiagram
+    participant 用户
+    participant 小程序
+    participant 后端
+    participant 微信支付
+
+    用户->>小程序: 确认支付
+    小程序->>后端: 请求支付参数
+    后端->>微信支付: 创建支付订单
+    微信支付-->>后端: 返回支付参数
+    后端-->>小程序: 返回支付参数
+    小程序->>微信支付: 调用支付接口
+    微信支付-->>小程序: 支付结果
+    小程序->>后端: 通知支付结果
+    后端->>数据库: 更新订单状态
+    后端-->>小程序: 确认支付成功
+    小程序->>用户: 显示支付成功
+```
+
+### 3. 状态更新流程
+```mermaid
+sequenceDiagram
+    participant 系统定时器
+    participant 订单服务
+    participant 数据库
+    participant 通知服务
+
+    系统定时器->>订单服务: 检查待出发订单
+    订单服务->>数据库: 查询出发时间到达的订单
+    数据库-->>订单服务: 返回待处理订单列表
+    订单服务->>数据库: 批量更新状态为"行程中"
+    订单服务->>通知服务: 发送行程开始通知
+
+    系统定时器->>订单服务: 检查行程中订单
+    订单服务->>数据库: 查询行程结束的订单
+    数据库-->>订单服务: 返回待完成订单列表
+    订单服务->>数据库: 批量更新状态为"已完成"
+    订单服务->>通知服务: 发送行程完成通知
+```
+
+## 关键业务规则
+
+### 订单创建规则
+1. **路线验证**: 检查路线是否有效且未过期
+2. **座位验证**: 检查剩余座位是否足够
+3. **乘客验证**: 验证乘客信息的完整性和有效性
+4. **价格计算**: 基于路线价格和乘客数量计算总金额
+
+### 支付规则
+1. **支付超时**: 订单创建后30分钟内未支付自动取消
+2. **支付重试**: 支付失败后可重新发起支付
+3. **支付状态同步**: 定期与微信支付同步支付状态
+
+### 取消规则
+1. **用户取消**: 用户可在出发前2小时取消订单
+2. **系统取消**: 超时未支付、路线取消等情况自动取消
+3. **退款处理**: 已支付的订单取消后自动退款
+
+## 数据快照机制
+
+### 快照内容
+- **路线快照**: 保存下单时的路线信息(上车点、下车点、出发时间、价格等)
+- **乘客快照**: 保存下单时的乘客信息(姓名、证件类型、证件号码等)
+- **活动快照**: 保存下单时的活动信息(活动名称、类型等)
+
+### 快照目的
+- 确保历史订单数据完整性
+- 防止路线信息变更影响历史订单
+- 支持订单追溯和争议处理
+
+## 异常处理
+
+### 常见异常场景
+1. **支付异常**: 支付失败、支付超时、重复支付
+2. **库存异常**: 座位不足、路线已满
+3. **数据异常**: 乘客信息错误、路线信息变更
+4. **系统异常**: 服务不可用、数据库连接失败
+
+### 异常处理策略
+1. **重试机制**: 临时性错误自动重试
+2. **降级处理**: 非关键功能降级处理
+3. **人工干预**: 复杂异常转人工处理
+4. **监控告警**: 异常情况实时告警
+
+## 性能优化
+
+### 数据库优化
+- 订单表按时间分区
+- 常用查询字段添加索引
+- 定期归档历史订单
+
+### 缓存策略
+- 热门路线信息缓存
+- 用户常用乘客信息缓存
+- 订单状态变更记录缓存
+
+### 异步处理
+- 支付结果异步处理
+- 状态更新异步处理
+- 通知发送异步处理
+
+## 监控指标
+
+### 业务指标
+- 订单创建成功率
+- 支付成功率
+- 订单取消率
+- 平均订单完成时间
+
+### 技术指标
+- API响应时间
+- 数据库查询性能
+- 缓存命中率
+- 系统可用性

+ 286 - 0
docs/architecture/payment-integration-design.md

@@ -0,0 +1,286 @@
+# 支付集成详细设计
+
+## 版本信息
+| 版本 | 日期 | 描述 | 作者 |
+|------|------|------|------|
+| 1.0 | 2025-10-15 | 创建支付集成详细设计文档 | Winston |
+
+## 支付架构概览
+
+### 系统架构
+```mermaid
+graph TB
+    subgraph "前端层"
+        A[微信小程序] --> B[支付SDK]
+    end
+
+    subgraph "后端服务层"
+        C[订单服务] --> D[支付服务]
+        D --> E[微信支付API]
+        D --> F[支付回调处理]
+    end
+
+    subgraph "数据层"
+        G[订单数据库] --> H[支付记录]
+        I[Redis缓存] --> J[支付状态缓存]
+    end
+
+    subgraph "第三方服务"
+        K[微信支付平台] --> L[支付结果通知]
+    end
+
+    A --> D
+    D --> G
+    D --> I
+    F --> G
+    L --> F
+```
+
+## 微信支付集成
+
+### 支付方式选择
+- **JSAPI支付**: 适用于微信小程序环境
+- **Native支付**: 备用方案,支持H5环境
+- **App支付**: 未来扩展支持
+
+### 支付流程
+
+#### 1. 预支付流程
+```mermaid
+sequenceDiagram
+    participant 用户
+    participant 小程序
+    participant 后端
+    participant 微信支付
+
+    用户->>小程序: 确认支付
+    小程序->>后端: 请求支付参数
+    后端->>后端: 验证订单状态
+    后端->>微信支付: 统一下单API
+    微信支付-->>后端: 返回预支付ID
+    后端->>后端: 生成支付签名
+    后端-->>小程序: 返回支付参数
+    小程序->>微信支付: 调用支付接口
+    微信支付-->>小程序: 支付结果
+```
+
+#### 2. 支付回调流程
+```mermaid
+sequenceDiagram
+    participant 微信支付
+    participant 后端
+    participant 数据库
+    participant 通知服务
+
+    微信支付->>后端: 支付结果通知
+    后端->>后端: 验证签名和参数
+    后端->>数据库: 更新订单支付状态
+    后端->>通知服务: 发送支付成功通知
+    后端-->>微信支付: 返回成功响应
+```
+
+## 技术实现
+
+### 支付服务接口设计
+
+#### 1. 创建支付订单
+```typescript
+interface CreatePaymentRequest {
+  orderId: number;           // 订单ID
+  totalAmount: number;       // 支付金额(分)
+  description: string;       // 支付描述
+  openid?: string;          // 用户OpenID
+}
+
+interface CreatePaymentResponse {
+  paymentId: string;        // 支付ID
+  timeStamp: string;        // 时间戳
+  nonceStr: string;         // 随机字符串
+  package: string;          // 预支付ID
+  signType: string;         // 签名类型
+  paySign: string;          // 签名
+}
+```
+
+#### 2. 支付结果查询
+```typescript
+interface QueryPaymentRequest {
+  orderId: number;          // 订单ID
+  paymentId?: string;       // 支付ID(可选)
+}
+
+interface QueryPaymentResponse {
+  status: PaymentStatus;    // 支付状态
+  transactionId?: string;   // 微信支付订单号
+  paidAt?: Date;           // 支付时间
+  totalAmount: number;      // 支付金额
+}
+```
+
+#### 3. 支付回调处理
+```typescript
+interface PaymentCallbackRequest {
+  return_code: string;      // 返回状态码
+  result_code: string;      // 业务结果
+  out_trade_no: string;     // 商户订单号
+  transaction_id: string;   // 微信支付订单号
+  total_fee: number;        // 订单金额
+  time_end: string;         // 支付完成时间
+  // ... 其他微信支付参数
+}
+```
+
+### 支付状态管理
+
+#### 支付状态枚举
+```typescript
+export enum PaymentStatus {
+  PENDING = '待支付',       // 订单创建,等待支付
+  PROCESSING = '支付中',    // 支付进行中
+  SUCCESS = '支付成功',     // 支付成功
+  FAILED = '支付失败',      // 支付失败
+  REFUNDED = '已退款',      // 已退款
+  CLOSED = '已关闭'         // 支付关闭
+}
+```
+
+#### 状态流转规则
+```typescript
+// 支付状态流转规则
+const paymentStatusRules = {
+  [PaymentStatus.PENDING]: [PaymentStatus.PROCESSING, PaymentStatus.CLOSED],
+  [PaymentStatus.PROCESSING]: [PaymentStatus.SUCCESS, PaymentStatus.FAILED],
+  [PaymentStatus.SUCCESS]: [PaymentStatus.REFUNDED],
+  [PaymentStatus.FAILED]: [PaymentStatus.PENDING, PaymentStatus.CLOSED],
+  [PaymentStatus.REFUNDED]: [],
+  [PaymentStatus.CLOSED]: []
+};
+```
+
+## 安全设计
+
+### 数据安全
+1. **敏感信息加密**: 支付密钥、用户OpenID等敏感信息加密存储
+2. **传输安全**: 所有支付相关API使用HTTPS传输
+3. **数据脱敏**: 日志中脱敏处理敏感支付信息
+
+### 接口安全
+1. **签名验证**: 所有支付请求和回调都进行签名验证
+2. **防重放攻击**: 使用时间戳和随机字符串防止重放攻击
+3. **频率限制**: 支付接口请求频率限制
+4. **IP白名单**: 微信支付回调IP白名单验证
+
+### 业务安全
+1. **金额验证**: 支付金额与订单金额一致性验证
+2. **订单状态验证**: 防止重复支付
+3. **超时处理**: 支付超时自动取消
+4. **退款保护**: 退款金额和状态验证
+
+## 错误处理
+
+### 常见错误场景
+
+#### 1. 支付创建失败
+- **原因**: 微信支付接口异常、参数错误、网络超时
+- **处理**: 重试机制、降级处理、用户提示
+
+#### 2. 支付回调异常
+- **原因**: 签名验证失败、重复回调、数据不一致
+- **处理**: 日志记录、人工干预、状态同步
+
+#### 3. 支付状态不一致
+- **原因**: 网络延迟、系统异常、第三方服务异常
+- **处理**: 状态查询、数据修复、告警通知
+
+### 错误码设计
+```typescript
+export enum PaymentErrorCode {
+  // 系统错误
+  SYSTEM_ERROR = 'PAYMENT_SYSTEM_ERROR',
+  NETWORK_ERROR = 'PAYMENT_NETWORK_ERROR',
+
+  // 业务错误
+  ORDER_NOT_FOUND = 'PAYMENT_ORDER_NOT_FOUND',
+  ORDER_ALREADY_PAID = 'PAYMENT_ORDER_ALREADY_PAID',
+  AMOUNT_MISMATCH = 'PAYMENT_AMOUNT_MISMATCH',
+
+  // 微信支付错误
+  WECHAT_API_ERROR = 'PAYMENT_WECHAT_API_ERROR',
+  WECHAT_SIGN_ERROR = 'PAYMENT_WECHAT_SIGN_ERROR',
+  WECHAT_CALLBACK_ERROR = 'PAYMENT_WECHAT_CALLBACK_ERROR'
+}
+```
+
+## 性能优化
+
+### 缓存策略
+1. **支付参数缓存**: 预支付参数短期缓存
+2. **支付状态缓存**: 支付状态查询结果缓存
+3. **配置缓存**: 微信支付配置信息缓存
+
+### 异步处理
+1. **支付回调异步**: 支付回调结果异步处理
+2. **状态同步异步**: 支付状态同步异步处理
+3. **通知发送异步**: 支付成功通知异步发送
+
+### 数据库优化
+1. **支付记录分表**: 按时间分表存储支付记录
+2. **索引优化**: 支付相关查询字段添加索引
+3. **归档策略**: 历史支付数据定期归档
+
+## 监控和告警
+
+### 监控指标
+1. **支付成功率**: 支付成功订单比例
+2. **支付响应时间**: 支付接口平均响应时间
+3. **回调成功率**: 支付回调处理成功率
+4. **异常率**: 支付异常比例
+
+### 告警规则
+1. **支付失败率告警**: 支付失败率超过阈值
+2. **回调异常告警**: 回调处理异常数量过多
+3. **系统异常告警**: 支付服务不可用
+4. **数据不一致告警**: 支付状态不一致
+
+## 测试策略
+
+### 单元测试
+- 支付参数验证测试
+- 支付状态流转测试
+- 签名验证测试
+
+### 集成测试
+- 微信支付API集成测试
+- 支付回调处理测试
+- 支付状态同步测试
+
+### 端到端测试
+- 完整支付流程测试
+- 异常场景测试
+- 性能压力测试
+
+## 部署和运维
+
+### 环境配置
+```bash
+# 微信支付配置
+WECHAT_APP_ID=your_app_id
+WECHAT_MCH_ID=your_mch_id
+WECHAT_API_KEY=your_api_key
+WECHAT_CERT_PATH=/path/to/cert.pem
+WECHAT_KEY_PATH=/path/to/key.pem
+
+# 支付服务配置
+PAYMENT_CALLBACK_URL=https://api.example.com/api/v1/payment/callback
+PAYMENT_TIMEOUT=1800  # 30分钟
+```
+
+### 健康检查
+- 支付服务可用性检查
+- 微信支付API连通性检查
+- 数据库连接检查
+
+### 备份策略
+- 支付记录定期备份
+- 支付配置备份
+- 证书文件备份

+ 71 - 3
docs/architecture/source-tree.md

@@ -3,11 +3,25 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目源码树 | Winston |
 
 ## 实际项目结构
 ```text
-d8d-starter/
+出行服务项目/
+├── mini/                       # Mini小程序应用
+│   ├── pages/                  # 小程序页面
+│   │   ├── index/              # 首页
+│   │   ├── activities/         # 活动页面
+│   │   ├── routes/             # 路线页面
+│   │   ├── orders/             # 订单页面
+│   │   └── profile/            # 个人中心
+│   ├── components/             # 小程序组件
+│   ├── utils/                  # 小程序工具函数
+│   └── app.json               # 小程序配置文件
+├── mini-demo/                  # Mini演示应用
+│   ├── pages/                  # 演示页面
+│   ├── components/             # 演示组件
+│   └── app.json               # 演示应用配置
 ├── src/
 │   ├── client/                 # React前端应用
 │   │   ├── admin/              # 管理后台应用
@@ -26,6 +40,22 @@ d8d-starter/
 │   │   │   ├── routes.tsx      # 路由配置
 │   │   │   └── index.tsx       # 管理后台入口
 │   │   ├── home/               # 用户前台应用
+│   │   │   ├── pages/          # 前台页面
+│   │   │   │   ├── ActivityList.tsx    # 活动列表页面
+│   │   │   │   ├── ActivityDetail.tsx  # 活动详情页面
+│   │   │   │   ├── RouteDetail.tsx     # 路线详情页面
+│   │   │   │   ├── OrderList.tsx       # 订单列表页面
+│   │   │   │   ├── OrderDetail.tsx     # 订单详情页面
+│   │   │   │   └── Payment.tsx         # 支付页面
+│   │   │   ├── components/     # 前台专用组件
+│   │   │   │   ├── ActivityCard.tsx    # 活动卡片组件
+│   │   │   │   ├── RouteCard.tsx       # 路线卡片组件
+│   │   │   │   ├── PassengerForm.tsx   # 乘客信息表单
+│   │   │   │   └── OrderSummary.tsx    # 订单摘要组件
+│   │   │   └── hooks/          # 前台Hooks
+│   │   │       ├── useActivities.ts    # 活动相关Hook
+│   │   │       ├── useRoutes.ts        # 路线相关Hook
+│   │   │       └── useOrders.ts        # 订单相关Hook
 │   │   ├── components/         # 共享UI组件
 │   │   │   └── ui/            # shadcn/ui组件库(50+组件)
 │   │   │       ├── button.tsx   # 按钮组件
@@ -53,6 +83,22 @@ d8d-starter/
 │   │   │   │   ├── multipart-complete/  # 完成多部分上传
 │   │   │   │   ├── [id]/               # 文件操作路由
 │   │   │   │   └── upload-policy/      # 上传策略路由
+│   │   │   ├── activities/     # 活动管理路由
+│   │   │   │   ├── index.ts    # 活动列表路由
+│   │   │   │   ├── [id].ts     # 活动详情路由
+│   │   │   │   └── __tests__/  # 路由测试
+│   │   │   ├── routes/         # 路线管理路由
+│   │   │   │   ├── index.ts    # 路线列表路由
+│   │   │   │   ├── [id].ts     # 路线详情路由
+│   │   │   │   └── __tests__/  # 路由测试
+│   │   │   ├── orders/         # 订单管理路由
+│   │   │   │   ├── index.ts    # 订单列表路由
+│   │   │   │   ├── [id].ts     # 订单详情路由
+│   │   │   │   └── __tests__/  # 路由测试
+│   │   │   ├── passengers/     # 乘客管理路由
+│   │   │   │   ├── index.ts    # 乘客列表路由
+│   │   │   │   ├── [id].ts     # 乘客详情路由
+│   │   │   │   └── __tests__/  # 路由测试
 │   │   │   └── __integration_tests__/  # 集成测试
 │   │   ├── modules/            # 业务模块
 │   │   │   ├── auth/           # 认证业务模块
@@ -68,6 +114,22 @@ d8d-starter/
 │   │   │   │   ├── minio.service.ts # MinIO服务
 │   │   │   │   ├── file.schema.ts  # 文件验证Schema
 │   │   │   │   └── __tests__/  # 文件测试
+│   │   │   ├── activities/     # 活动业务模块
+│   │   │   │   ├── activity.entity.ts   # 活动实体
+│   │   │   │   ├── activity.service.ts  # 活动服务
+│   │   │   │   └── __tests__/  # 活动测试
+│   │   │   ├── routes/         # 路线业务模块
+│   │   │   │   ├── route.entity.ts     # 路线实体
+│   │   │   │   ├── route.service.ts    # 路线服务
+│   │   │   │   └── __tests__/  # 路线测试
+│   │   │   ├── orders/         # 订单业务模块
+│   │   │   │   ├── order.entity.ts     # 订单实体
+│   │   │   │   ├── order.service.ts    # 订单服务
+│   │   │   │   └── __tests__/  # 订单测试
+│   │   │   └── passengers/     # 乘客业务模块
+│   │   │   │   ├── passenger.entity.ts # 乘客实体
+│   │   │   │   ├── passenger.service.ts # 乘客服务
+│   │   │   │   └── __tests__/  # 乘客测试
 │   │   ├── utils/              # 工具层
 │   │   │   ├── generic-crud.service.ts  # 通用CRUD服务
 │   │   │   ├── generic-crud.routes.ts   # 通用CRUD路由
@@ -83,7 +145,11 @@ d8d-starter/
 │   │   ├── data-source.ts     # 数据库连接配置
 │   │   └── index.ts           # 服务器入口
 │   └── share/                  # 前后端共享代码
-│       └── types.ts           # TypeScript类型定义
+│       ├── types.ts           # TypeScript类型定义
+│       ├── activity.types.ts  # 活动相关类型
+│       ├── route.types.ts     # 路线相关类型
+│       ├── order.types.ts     # 订单相关类型
+│       └── passenger.types.ts # 乘客相关类型
 ├── tests/
 │   └── e2e/                    # E2E测试 (Playwright)
 └── package.json
@@ -97,3 +163,5 @@ d8d-starter/
 - **测试位置**: 前端集成测试位于`__integration_tests__/`,页面单元测试位于`__tests__/`
 - **后端测试**: API测试位于路由`__tests__/`目录,服务测试位于模块`__tests__/`目录
 - **工具测试**: 通用工具测试位于`utils/__tests__/`目录
+- **Mini小程序**: 使用Taro框架开发,支持微信小程序
+- **Mini演示应用**: 用于功能演示和测试的独立小程序应用

+ 9 - 10
docs/architecture/tech-stack.md

@@ -3,14 +3,14 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目技术栈 | Winston |
 
 ## 现有技术栈维护
-| 类别 | 当前技术 | 版本 | 在增强中的用途 | 备注 |
+| 类别 | 当前技术 | 版本 | 在项目中的用途 | 备注 |
 |------|----------|------|----------------|------|
-| 运行时 | Node.js | 20.18.3 | 服务器运行时环境 | ES模块支持 |
+| 运行时 | Node.js | 20.19.2 | 服务器运行时环境 | ES模块支持 |
 | 框架 | Hono | 4.8.5 | Web框架和API路由 | RPC类型安全 |
-| 前端框架 | React | 19.1.0 | 用户界面构建 | 最新版本 |
+| 前端框架 | Taro + React | 最新 | 小程序用户界面构建 | 多端支持 |
 | 构建工具 | Vite | 7.0.0 | 开发服务器和构建 | 热重载支持 |
 | 数据库 | PostgreSQL | 17 | 数据持久化存储 | 通过TypeORM |
 | ORM | TypeORM | 0.3.25 | 数据库操作抽象 | 实体管理 |
@@ -21,9 +21,8 @@
 ## 新技术添加
 | 技术 | 版本 | 用途 | Rationale | 集成方法 |
 |------|------|------|-----------|-----------|
-| Vitest | 2.x | 单元测试框架 | 填补测试空白,确保代码质量,更好的TypeORM支持 | 集成到现有构建流程 |
-| Testing Library | 13.x | React组件测试 | 提供组件级测试能力 | 与React项目集成 |
-| hono/testing | 内置 | API端点测试 | 验证API功能和集成 | Hono官方测试工具,更好的类型安全 |
-| node-cron | latest | 定时任务调度 | Node.js定时任务调度库 | 集成到应用启动流程 |
-| MinIO | latest | 对象存储服务 | 提供可扩展的文件存储解决方案,支持大文件上传和分段上传 | 通过MinIO客户端SDK集成 |
-| MinIO客户端SDK | latest | MinIO API集成 | 提供与MinIO服务的完整交互能力 | 后端服务集成 |
+| Taro | 最新 | 多端小程序框架 | 支持微信小程序发布,更好的开发体验 | 替换mini-demo原生开发 |
+| 微信支付SDK | 最新 | 支付集成 | 支持出行服务支付需求 | 后端API集成 |
+| 地图服务SDK | 最新 | 位置服务 | 支持路线规划和位置跟踪 | 前后端集成 |
+| 活动-路线管理 | 自定义 | 活动路线关系 | 支持1个活动关联多条路线 | 业务逻辑层实现 |
+| 多乘客管理 | 自定义 | 乘客信息管理 | 支持下单时选择N个乘车人 | 业务逻辑层实现 |

+ 2 - 1
docs/architecture/testing-strategy.md

@@ -3,13 +3,14 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
+| 3.0 | 2025-10-15 | 更新为出行服务项目测试策略 | Winston |
 | 2.6 | 2025-10-15 | 完成遗留测试文件迁移到统一的tests目录结构 | Winston |
 | 2.5 | 2025-10-14 | 更新测试文件位置到统一的tests目录结构 | Claude |
 | 2.4 | 2025-09-20 | 更新测试策略与主架构文档版本一致 | Winston |
 
 ## 概述
 
-本文档定义了D8D Starter项目的完整测试策略,基于现有的测试基础设施和最佳实践。测试策略遵循测试金字塔模型,确保代码质量、功能稳定性和系统可靠性。
+本文档定义了出行服务项目的完整测试策略,基于现有的测试基础设施和最佳实践。测试策略遵循测试金字塔模型,确保代码质量、功能稳定性和系统可靠性。
 
 ## 测试金字塔策略
 

+ 5 - 4
docs/architecture/version-info.md

@@ -1,8 +1,9 @@
 # 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
-| 2.0 | 2025-09-14 | 增强架构文档 | Winston |
-| 2.1 | 2025-09-19 | 添加数据库定时备份策略 | Winston |
-| 2.2 | 2025-09-19 | 更新测试策略文档引用 | Winston |
-| 2.3 | 2025-09-20 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 3.0 | 2025-10-15 | 更新为出行服务项目架构 | Winston |
 | 2.4 | 2025-09-20 | 完善BMAD全栈架构规范,添加高层架构图、API规范、安全架构 | Winston |
+| 2.3 | 2025-09-20 | 根据实际项目结构更新测试架构和共享目录 | Winston |
+| 2.2 | 2025-09-19 | 更新测试策略文档引用 | Winston |
+| 2.1 | 2025-09-19 | 添加数据库定时备份策略 | Winston |
+| 2.0 | 2025-09-14 | 增强架构文档 | Winston |