Ready for Review
As a 系统管理员 I want 能够集成飞鹅打印API so that 实现订单支付成功后自动打印小票
feie_printer_mt表,存储打印机配置信息feie_print_task_mt表,记录打印任务(包含防退款延迟相关字段)feie_config_mt表,存储基础打印配置packages/ 目录下创建 @d8d/feie-printer-module-mt 包package.json、tsconfig.json、vitest.config.tsfeie-printer.mt.entity.ts 实体feie-print-task.mt.entity.ts 实体feie-config.mt.entity.ts 实体feie-api.service.ts 服务Open_printerAddlist、Open_printerDelList、Open_queryPrinterStatus、Open_printMsg、Open_queryOrderStateprinter.service.ts 服务print-task.service.ts 服务delay-scheduler.service.ts 服务/mnt/code/186-175-template-22packages/@d8d/feie-printer-module-mt/packages/@d8d/feie-printer-module-mt/
├── src/
│ ├── entities/ # 实体定义
│ │ ├── feie-printer.mt.entity.ts
│ │ ├── feie-print-task.mt.entity.ts
│ │ ├── feie-config.mt.entity.ts
│ │ └── index.ts
│ ├── services/ # 服务层
│ │ ├── feie-api.service.ts # 飞鹅API客户端(小票打印)
│ │ ├── printer.service.ts # 打印机管理服务
│ │ ├── print-task.service.ts # 打印任务服务
│ │ ├── delay-scheduler.service.ts # 延迟打印调度器
│ │ └── index.ts
│ ├── schemas/ # 数据验证
│ │ └── index.ts
│ ├── routes/ # API路由
│ │ └── index.ts
│ ├── types/ # 类型定义
│ │ └── index.ts
│ └── index.ts # 主入口文件
├── tests/ # 测试文件
├── tsconfig.json # TypeScript配置
├── vitest.config.ts # 测试配置
└── package.json
-- 飞鹅打印机配置表
CREATE TABLE feie_printer_mt (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
tenant_id INT UNSIGNED NOT NULL COMMENT '租户ID',
printer_sn VARCHAR(50) NOT NULL COMMENT '打印机序列号',
printer_key VARCHAR(100) NOT NULL COMMENT '打印机密钥',
printer_name VARCHAR(100) COMMENT '打印机名称',
printer_type VARCHAR(20) DEFAULT '58mm' COMMENT '打印机类型: 58mm, 80mm',
printer_status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '打印机状态: ACTIVE, INACTIVE, ERROR',
is_default TINYINT DEFAULT 0 COMMENT '是否默认打印机(0:否,1:是)',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_tenant_printer_sn (tenant_id, printer_sn),
INDEX idx_tenant_id (tenant_id),
INDEX idx_status (printer_status)
) COMMENT='飞鹅打印机配置表';
-- 飞鹅打印任务表(支持防退款延迟打印)
CREATE TABLE feie_print_task_mt (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
tenant_id INT UNSIGNED NOT NULL COMMENT '租户ID',
task_id VARCHAR(100) NOT NULL COMMENT '飞鹅任务ID',
order_id INT UNSIGNED COMMENT '关联订单ID',
printer_sn VARCHAR(50) NOT NULL COMMENT '打印机序列号',
content TEXT NOT NULL COMMENT '打印内容',
print_type VARCHAR(20) NOT NULL COMMENT '打印类型: RECEIPT(小票), SHIPPING(发货单), ORDER(订单)',
print_status VARCHAR(20) DEFAULT 'PENDING' COMMENT '打印状态: PENDING, DELAYED(延迟等待), PRINTING, SUCCESS, FAILED, CANCELLED(已取消)',
error_message VARCHAR(500) COMMENT '错误信息',
retry_count INT DEFAULT 0 COMMENT '重试次数',
max_retries INT DEFAULT 3 COMMENT '最大重试次数',
scheduled_at TIMESTAMP NULL COMMENT '计划打印时间(用于延迟打印)',
printed_at TIMESTAMP NULL COMMENT '打印完成时间',
cancelled_at TIMESTAMP NULL COMMENT '取消时间',
cancel_reason VARCHAR(100) COMMENT '取消原因: REFUND(退款), MANUAL(手动取消), TIMEOUT(超时)',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_task_id (task_id),
INDEX idx_tenant_order (tenant_id, order_id),
INDEX idx_status (print_status),
INDEX idx_scheduled (scheduled_at),
INDEX idx_created (created_at)
) COMMENT='飞鹅打印任务表';
-- 打印配置表
CREATE TABLE feie_config_mt (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
tenant_id INT UNSIGNED NOT NULL COMMENT '租户ID',
config_key VARCHAR(50) NOT NULL COMMENT '配置键',
config_value TEXT COMMENT '配置值',
config_type VARCHAR(20) DEFAULT 'STRING' COMMENT '配置类型: STRING, JSON, BOOLEAN, NUMBER',
description VARCHAR(200) COMMENT '配置描述',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_tenant_key (tenant_id, config_key),
INDEX idx_tenant_id (tenant_id)
) COMMENT='飞鹅打印配置表';
GET /api/feie/printers - 查询打印机列表POST /api/feie/printers - 添加打印机DELETE /api/feie/printers/{printerSn} - 删除打印机POST /api/feie/print - 提交打印任务(支持延迟打印)GET /api/feie/tasks/{taskId} - 查询打印任务状态GET /api/feie/tasks - 查询打印任务列表POST /api/feie/tasks/{taskId}/cancel - 取消打印任务POST /api/feie/tasks/{taskId}/retry - 重试打印任务GET /api/feie/config - 查询打印配置PUT /api/feie/config - 更新打印配置打印机管理
Open_printerAddlist - 添加打印机Open_printerDelList - 删除打印机Open_queryPrinterStatus - 查询打印机状态打印任务管理
Open_printMsg - 打印小票Open_queryOrderState - 查询订单打印状态Open_queryOrderInfoByDate - 根据时间查询订单__tests__ 文件夹与源码并列tests/ 目录-mt 后缀表示多租户包tenant_id 字段PENDING、DELAYED、PRINTING、SUCCESS、FAILED、CANCELLEDREFUND(退款)、MANUAL(手动取消)、TIMEOUT(超时)node-cron 实现定时任务调度@d8d/feie-printer-module-mt 应放置在 packages/ 目录下@d8d/orders-module-mt 集成,监听订单支付成功事件__tests__ 文件夹与源码并列 [Source: architecture/coding-standards.md]单元测试:
集成测试:
测试文件结构:
tests/
├── unit/
│ ├── feie-api.service.test.ts
│ ├── printer.service.test.ts
│ ├── print-task.service.test.ts
│ └── delay-scheduler.service.test.ts
└── integration/
├── api/
│ ├── printers.test.ts
│ ├── print-tasks.test.ts
│ └── config.test.ts
└── feie-api.integration.test.ts
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-12-06 | 1.0 | 初始创建故事文档 | Bob (Scrum Master) |
| 2025-12-11 | 1.1 | 修复TypeScript类型错误:路由返回类型、枚举类型、参数转换等问题 | James (Developer Agent) |
| 2025-12-11 | 1.2 | 补齐集成测试用例:新增28个测试用例,覆盖配置管理、调度器管理、打印任务详情、打印机状态更新、边界条件等 | James (Developer Agent) |
| 2025-12-11 | 1.3 | 新增集成测试用例:补充15个测试用例,覆盖创建打印机API、打印任务状态查询、分页排序功能、更多错误场景等 | James (Developer Agent) |
此部分由开发代理在实现过程中填写
c.json(validatedResponse) 添加状态码printerType 从 ['RECEIPT', 'LABEL'] 改为 ['58mm', '80mm']PrintType 枚举使用:使用 z.nativeEnum(PrintType) 替代字符串字面量CreatePrintTaskDto 转换transform 处理 'ALL' 选项@d8d/feie-printer-module-mt)包结构文件:
packages/feie-printer-module-mt/package.jsonpackages/feie-printer-module-mt/tsconfig.jsonpackages/feie-printer-module-mt/vitest.config.ts源代码文件:
packages/feie-printer-module-mt/src/index.tspackages/feie-printer-module-mt/src/entities/feie-printer.mt.entity.tspackages/feie-printer-module-mt/src/entities/feie-print-task.mt.entity.tspackages/feie-printer-module-mt/src/entities/feie-config.mt.entity.tspackages/feie-printer-module-mt/src/entities/index.tspackages/feie-printer-module-mt/src/services/feie-api.service.tspackages/feie-printer-module-mt/src/services/printer.service.tspackages/feie-printer-module-mt/src/services/print-task.service.tspackages/feie-printer-module-mt/src/services/delay-scheduler.service.tspackages/feie-printer-module-mt/src/services/index.tspackages/feie-printer-module-mt/src/schemas/feie.schema.tspackages/feie-printer-module-mt/src/schemas/index.tspackages/feie-printer-module-mt/src/routes/feie.routes.tspackages/feie-printer-module-mt/src/routes/index.tspackages/feie-printer-module-mt/src/types/feie.types.tspackages/feie-printer-module-mt/src/types/index.ts修复的文件(TypeScript类型错误修复):
packages/feie-printer-module-mt/src/routes/printers/create.mt.ts - 修复路由返回类型,添加状态码packages/feie-printer-module-mt/src/routes/printers/update.mt.ts - 修复printerType枚举,添加状态码packages/feie-printer-module-mt/src/routes/printers/detail.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/printers/delete.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/printers/set-default.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/printers/status.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/printers/list.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/tasks/create.mt.ts - 修复PrintType枚举,添加DTO转换,添加状态码packages/feie-printer-module-mt/src/routes/tasks/list.mt.ts - 修复PrintType/PrintStatus枚举,修复转换逻辑,添加状态码packages/feie-printer-module-mt/src/routes/tasks/status.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/tasks/cancel.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/tasks/retry.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/scheduler/start.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/scheduler/stop.mt.ts - 添加状态码packages/feie-printer-module-mt/src/routes/scheduler/trigger.mt.ts - 修复响应类型匹配,添加状态码测试文件:
packages/feie-printer-module-mt/tests/unit/feie-api.service.test.tspackages/feie-printer-module-mt/tests/unit/printer.service.test.tspackages/feie-printer-module-mt/tests/unit/print-task.service.test.tspackages/feie-printer-module-mt/tests/unit/delay-scheduler.service.test.tspackages/feie-printer-module-mt/tests/integration/feie-api.integration.test.ts - 新增完整的集成测试用例新增的集成测试用例文件:
packages/feie-printer-module-mt/tests/integration/feie-api.integration.test.ts - 已更新,包含:
此部分由QA代理在审查完成后填写