Преглед на файлове

📝 docs(order): add order export feature story documentation

- create story document for admin dashboard order export function
- define acceptance criteria including export button, filtering, file format
- outline implementation tasks for frontend and backend
- document technical implementation details and test requirements
- specify file naming convention with timestamp
- include technical stack information and project structure references
yourname преди 3 месеца
родител
ревизия
7d7ffd01ba
променени са 1 файла, в които са добавени 149 реда и са изтрити 0 реда
  1. 149 0
      docs/stories/005.014.order-export.story.md

+ 149 - 0
docs/stories/005.014.order-export.story.md

@@ -0,0 +1,149 @@
+# Story 5.14: 管理后台订单数据导出功能
+
+## Status
+Draft
+
+## Story
+**As a** 系统管理员
+**I want** 能够在管理后台的订单管理页面导出订单数据为xlsx格式
+**so that** 进行数据分析和报表制作
+
+## Acceptance Criteria
+- [ ] 在订单管理页面添加"导出Excel"按钮
+- [ ] 支持按当前筛选条件导出订单数据
+- [ ] 导出的xlsx文件包含完整的订单信息
+- [ ] 支持批量导出所有订单数据
+- [ ] 导出的文件格式规范,包含表头和格式
+- [ ] 支持导出进度显示和下载提示
+- [ ] 处理大量数据时的性能优化
+- [ ] 导出文件命名规范,包含时间戳
+
+## Tasks / Subtasks
+- [ ] 前端实现订单导出功能 (AC: 1, 2, 3, 4, 5, 6, 8)
+  - [ ] 在Orders.tsx页面添加"导出Excel"按钮
+  - [ ] 实现导出处理函数,收集当前筛选条件
+  - [ ] 使用现有xlsx库生成Excel文件
+  - [ ] 实现导出进度显示和下载提示
+  - [ ] 处理大量数据时的分页查询和性能优化
+  - [ ] 实现文件命名规范,包含时间戳
+- [ ] 后端支持订单数据查询 (AC: 2, 3, 4, 7)
+  - [ ] 利用现有通用CRUD API支持大pageSize查询
+  - [ ] 确保API支持JSON格式筛选条件
+  - [ ] 验证订单数据字段完整性
+- [ ] 测试订单导出功能 (AC: 1-8)
+  - [ ] 编写单元测试验证导出功能
+  - [ ] 编写集成测试验证数据完整性
+  - [ ] 编写E2E测试验证完整导出流程
+
+## Dev Notes
+
+### 技术栈信息
+[Source: architecture/tech-stack.md#现有技术栈维护]
+- **前端框架**: Taro + React (小程序), React + Vite (Web管理后台)
+- **状态管理**: React Query 5.83.0
+- **UI组件库**: shadcn/ui + Tailwind CSS 4.1.11
+- **Excel库**: 已安装的xlsx库
+
+### 项目结构信息
+[Source: architecture/source-tree.md#实际项目结构]
+- **管理后台页面位置**: `web/src/client/admin/pages/Orders.tsx`
+- **API客户端位置**: `web/src/client/api.ts`
+- **订单API路径**: `packages/server/src/api/admin/orders/index.ts`
+
+### 订单数据结构
+[Source: docs/prd/epic-005-travel-service-core.md#实际可导出数据字段]
+**可导出数据字段**:
+- **订单编号**: `id`
+- **用户信息**: `user.username`, `user.phone`
+- **路线信息**: `route.name`, `route.description`
+- **乘客数量**: `passengerCount`
+- **订单金额**: `totalAmount`
+- **订单状态**: `status` (待支付、待出发、行程中、已完成、已取消)
+- **支付状态**: `paymentStatus` (待支付、支付中、已支付、支付失败、已退款、已关闭)
+- **创建时间**: `createdAt`
+- **更新时间**: `updatedAt`
+- **乘客快照信息**: `passengerSnapshots` (包含姓名、证件类型、证件号码等)
+
+### 通用CRUD规范
+[Source: architecture/generic-crud-standards.md#核心组件]
+- **订单查询API**: 使用现有通用CRUD API,支持分页、筛选和关联查询
+- **筛选条件**: 支持JSON格式筛选条件,包含状态、支付状态等
+- **分页查询**: 支持大pageSize参数获取所有数据
+
+### 管理后台开发规范
+[Source: architecture/admin-dashboard-standards.md#页面开发规范]
+- **页面结构**: 遵循标准管理后台页面结构
+- **按钮使用**: 使用shadcn/ui Button组件
+- **状态管理**: 使用React Query进行数据获取和缓存
+- **用户体验**: 实现导出进度显示和错误处理
+
+### 技术实现方案
+[Source: docs/prd/epic-005-travel-service-core.md#技术实现方案]
+- **前端实现**: 使用已安装的 `xlsx` 库生成Excel文件
+- **后端支持**: 利用现有的通用CRUD API,支持JSON格式筛选条件
+- **文件生成**: 前端生成Excel文件,避免服务器压力
+- **性能优化**: 使用现有API的`pageSize`参数支持大量数据查询
+
+### 前端实现细节
+[Source: docs/prd/epic-005-travel-service-core.md#前端实现细节]
+```typescript
+// 订单导出功能实现 - 基于实际Orders.tsx页面结构
+const handleExportOrders = async () => {
+  try {
+    // 1. 显示导出进度
+    setExporting(true);
+
+    // 2. 获取当前页面筛选条件(基于现有filters和searchParams)
+    const exportFilters = {
+      status: filters.status,
+      paymentStatus: filters.paymentStatus,
+      search: searchParams.search,
+      pageSize: 10000 // 使用大pageSize获取所有数据
+    };
+
+    // 3. 调用API获取订单数据
+    // 4. 使用xlsx库生成Excel文件
+    // 5. 创建下载链接并触发下载
+    // 6. 隐藏导出进度
+  } catch (error) {
+    // 错误处理
+  } finally {
+    setExporting(false);
+  }
+};
+```
+
+### 测试
+
+#### 测试标准
+[Source: architecture/coding-standards.md#增强特定标准]
+- **测试框架**: Vitest + Testing Library + Playwright
+- **测试位置**: 统一在 `tests/` 目录中,按类型分层组织
+- **覆盖率目标**: 核心业务逻辑 > 80%
+
+#### 测试要求
+- **单元测试**: 验证导出函数逻辑和Excel生成
+- **集成测试**: 验证API调用和数据完整性
+- **E2E测试**: 验证完整导出流程和用户体验
+
+#### 测试文件位置
+- **单元测试**: `web/tests/unit/client/admin/pages/Orders.test.tsx`
+- **集成测试**: `web/tests/integration/client/admin/pages/Orders.test.tsx`
+- **E2E测试**: `tests/e2e/admin/order-export.spec.ts`
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-10-25 | 1.0 | 创建故事文档 | Bob (Scrum Master) |
+
+## Dev Agent Record
+
+### Agent Model Used
+
+### Debug Log References
+
+### Completion Notes List
+
+### File List
+
+## QA Results