minishouyin/.trae/documents/项目功能分析与改进实施计划.md
LIUFL a094f55890 docs: 整理文档并删除测试脚本
将文档统一整理到doc目录下,删除不再需要的测试脚本和临时文件
2025-11-12 16:12:40 +08:00

7.6 KiB
Raw Permalink Blame History

第一阶段规格说明Specification

目标范围

  • 会员模块:会员档案、等级与折扣、积分累计与调整、优惠券、会员消费统计、收银台选会员
  • 库存管理供应商管理、商品批次与保质期、库存预警min_stock、入出库记录与盘点、报表
  • 交班:交班记录、现金实点与系统金额核对、交班摘要打印/导出、交班数据留痕
  • 日结:每日营业汇总、支付方式统计、退款与挂单影响、库存快照、日报表打印/导出

用户故事与验收标准

  • 会员
    • 作为收银员,我可以通过手机号/姓名搜索并选择会员,订单将关联会员信息;验收:收银台勾选成功,订单详情显示会员信息,会员统计更新
    • 作为店长,我可以调整会员积分并查看积分历史;验收:积分变动入库,历史可分页查询,边界:负值调整、过期处理
    • 作为运营,我可以配置会员等级的折扣率;验收:订单最终金额按等级折扣计算,折扣记录可溯源
  • 库存
    • 作为仓管,我可录入供应商与商品批次,设置生产/过期日期;验收:批次入库同时更新商品库存,库存历史含批次、供应商与价格
    • 作为店长我能看到30天内即将过期的批次验收列表按过期日期升序、数量>0、状态为active
    • 作为仓管我能看到库存预警商品并生成补货建议验收按min_stock阈值计算支持刷新
  • 交班
    • 作为收银员,我在结束班次时提交交班,系统对比现金实点与系统记录;验收:差异提示、交班记录持久化、打印小票/导出PDF
  • 日结
    • 作为店长,我每日进行日结,生成营业汇总与支付方式统计;验收:包含订单数、销售额、折扣额、退款额、各支付占比,支持打印/导出

非功能需求

  • 性能订单创建接口P95 < 150ms库存列表P95 < 200ms渲染主界面首屏 < 2s
  • 安全JWT密钥来源于环境变量不硬编码前后端避免日志泄露敏感信息
  • 可维护性拆分过大的路由文件orders.js为分域模块统一Ant Design风格与交互
  • 测试单元与集成测试覆盖率≥80%,路由与服务关键路径均有测试

数据模型与规则(概要)

  • Membermember_no, name, phone, level, points, total_consumption, total_orders, discount_rate, status
  • MemberPointsHistorymember_id, points_change, before/after, type, source_type, operator_id, expire_date
  • MemberCouponmember_id, coupon_code, type, discount_value, status, used_order_id
  • Suppliername, contact_person, phone, status, payment_method, bank信息
  • ProductBatchproduct_id, supplier_id, batch_no, production_date, expiry_date, quantity, cost/selling_price, status
  • InventoryHistoryproduct_id, operation_type(in/out), quantity, stock_before/after, reason, supplier_id, batch_id
  • Order增加member_id交班/日结新增域模型

风险与缓解

  • 数据一致性风险:入库/出库并发更新 → 事务与行级锁
  • 大文件维护难orders.js过大 → 领域拆分与服务化
  • 硬件依赖不稳定:打印/串口 → 失败重试与降级提示

第二阶段设计Design

架构图与分层

  • Electron主进程窗口、串口、进程间通信
  • 渲染进程React路由、页面Cashier/Members/Inventory/Reports/Settings、服务层axios
  • 后端Express + Sequelize + SQLiteroutesmembers/suppliers/batches/orders/shifts/closingmodelsservicesprinter
  • 状态以局部state为主服务拉取后续评估引入轻量store如Zustand

API规范示例

  • 会员
    • GET /api/members?page=&limit=&search=&level=&status=
    • POST /api/membersPUT /api/members/:id
    • POST /api/members/:id/points/adjust
    • GET /api/members/:id/points/history
    • GET /api/members/:id/stats
  • 库存
    • GET /api/suppliersPOST/PUT/DELETE /api/suppliers/:id
    • GET /api/batches?product_id=&supplier_id=&status=
    • POST/PUT/DELETE /api/batches/:id
    • GET /api/batches/expiring-soon?days=30
    • GET /api/products/low-stock
  • 交班/日结(新)
    • POST /api/shifts/startPOST /api/shifts/end
    • GET /api/shifts?date=&cashier_id=
    • POST /api/daily-closing/run?date=YYYY-MM-DD
    • GET /api/daily-closing/:date/report

安全与配置

  • JWT_SECRET、DB路径、打印机配置从环境注入.env或配置文件移除硬编码
  • axios拦截器仅在开发环境输出详细日志生产降级

性能策略

  • 首屏路由懒加载Members/Inventory/Reports
  • 去除生产环境冗余console
  • 批量接口分页与筛选

错误与日志

  • 统一错误中间件返回结构:{error, code}
  • 后端logger统一等级与文件输出避免请求体敏感字段写入

部署与运维

  • 打包Webpack主/渲染配置复用构建脚本区分dev/prod
  • 监控:运行日志与错误统计(文件落盘)

第三阶段任务列表Task List

会员模块

  • 后端Member/PointsHistory/Coupon模型与关联members路由列表/详情/创建/更新/积分调整/统计)
  • 前端memberServiceMembers页面列表、详情抽屉、积分调整Cashier会员搜索与选择、订单携带member_id
  • 测试members路由supertest积分调整边界测试

库存模块

  • 后端Supplier/ProductBatch/InventoryHistory扩展模型与关联suppliers、batches路由products低库存与批次过期接口
  • 前端supplierService、batchServiceEnhancedInventory页面历史/批次/供应商/过期预警StockWarning组件
  • 测试:库存历史入出库事务测试;过期批次筛选逻辑测试

交班模块

  • 模型Shiftcashier_id, start_time, end_time, cash_counted, cash_system, diff, notes
  • 接口:开始/结束交班、查询交班记录、打印交班小票
  • 前端Cashier页交班入口与弹窗Reports页交班查询
  • 测试:金额核对与差异计算、打印调用

日结模块

  • 模型DailyClosingdate, totals: sales/discount/refund/pending, payments breakdown, inventory snapshot
  • 接口:运行日结、查询日报表、打印/导出
  • 前端Reports页新增日结Tab与报表展示
  • 测试:数据聚合正确性、挂单与退款影响核算

跨域任务

  • 重构拆分orders.js为orders-basic、orders-stats、orders-print、orders-pending等
  • 安全JWT密钥与配置管理移除敏感日志
  • UI统一导航新增Members/Inventory遵循Ant Design规范与一致的卡片/表格/抽屉交互
  • 测试与CI引入Jest/Vitest + supertestGitHub Actions构建与测试覆盖率≥80%

时间与优先级

  • Phase 11.52周会员 + 库存(供应商/批次/预警)
  • Phase 21周交班
  • Phase 31周日结
  • 持续重构与安全、测试与CI、性能优化

完成标准

  • 所有API具备文档与错误处理前后端功能稳定可用
  • 覆盖率≥80%P95延迟满足目标UI风格统一
  • 交付规格说明与设计文档、任务列表、架构与流程图Mermaid/PlantUML可量化指标达标

可视化与指标

  • 架构图Electron↔Express↔SQLite、渲染进程模块与路由
  • 流程图:会员积分调整流程、入库流水与库存更新、交班核对与打印、日结聚合
  • 指标:
    • 性能P95接口与首屏、构建包大小<2MB渲染bundle后续按需分割
    • 质量测试覆盖率≥80%、关键路由100%用例
    • 安全零硬编码密钥、敏感日志为0

请确认以上三阶段规划;确认后我将严格按照该规划开始实施。