本章只记录能够由代码、测试结果、Windows 队列或用户反馈支持的事实。对尚未完成的部分明确标记,避免后续团队把规划当成现状。

一、已验证的事实

1. 打印机与系统队列

门店电脑连接的目标队列为 EPSON L3250 Series。当前系统按以下能力配置:

  • A4 普通纸
  • 黑白和彩色
  • 单面打印
  • 不支持 A3
  • 不支持自动双面

不同地区版本、驱动版本和纸张设置可能导致行为变化,因此机型资料只用于初步建模,最终能力必须通过本机驱动和真实样张验收。

2. 支持文件与默认限制

当前支持:

  • PDF
  • JPG / JPEG
  • PNG

默认控制值:

控制项 当前默认值
单文件大小 50 MB
PDF 页数 100 页
单订单打印面 100 面
单订单份数 10 份
单打印机活跃任务 5 个
单用户 24 小时打印面 200 面
图片像素总量 6000 万像素

这些值是原型保护阈值,不是永久产品规则。上线后应放入配置中心并版本化,修改时保留审计记录。

3. 文件校验

系统不是只看文件扩展名,而是进行多层检查:

  • 文件扩展名,以及服务端根据内容推导的可信文件类型
  • 文件魔数
  • PDF 结构和真实页数
  • 图片尺寸和像素上限
  • 文件实际字节长度
  • SHA-256 摘要

门店代理下载完成后再次校验长度和 SHA-256。只要校验不一致,文件就不能进入物理打印阶段。

4. 自动化测试

当前基线完成:

  • API 自动测试 20 项
  • 门店代理自动测试 18 项
  • 合计 38/38 通过
  • JavaScript 语法检查通过
  • 当时的依赖审计未发现已知漏洞

自动化测试证明状态、边界和异常处理的代码行为,但不能代替实体打印机、真实支付和长期运行测试。

5. 真实打印证据

先完成两次受控 Windows 队列级真实打印提交。两个作业分别进入 Spooler,打印参数均为 A4、彩色、单面、1 份。

随后用户在手机外网环境操作后反馈实际可以正常使用;后台对应订单和打印任务均为完成状态,尝试次数为 1,没有错误记录,队列恢复为空,打印机状态正常。原验收报告记录的是更早的队列级阶段;目前没有归档打印样张或设备传感器证据,所以这里严格记为“系统记录完成 + 用户反馈可用”,不记为独立物理出纸验收。

二、证据应该怎样理解

Windows 打印队列从“有任务”变成“空”,只能证明 Windows 或驱动不再保留该任务,不能在所有机型上证明纸张一定完整输出。真实用户确认、现场传感器、打印机管理协议或人工核对,才是更接近物理结果的证据。

因此系统需要区分:

  1. 文件校验完成:还没有触碰打印机。
  2. 已提交 Windows 队列:打印命令可能已被接受。
  3. 队列任务结束:Windows 认为任务已离开队列。
  4. 用户或设备确认完成:更接近实际出纸完成。

如果代理在第 2 或第 3 阶段崩溃并失去结果,不能简单地重新执行打印命令,否则可能重复出纸。

三、当前版本仍然不是生产系统

尚未完成或只完成设计的部分包括:

  • 当前支付是模拟支付,不是微信支付真实资金链路。
  • API 使用 SQLite,本地文件目录承担上传存储,不适合多实例和云端容灾。
  • 多处代码仍默认选择第一家门店或第一台打印机。
  • 门店代理仍以单个 printerName 和进程级 busy 为核心假设。
  • 缺少完整管理后台、角色权限、设备证书轮换、告警、退款和每日对账。
  • 当前开机启动方式适合试点,长期无人值守应改为 Windows Service。
  • 固定生产域名 print-api.munvor.com 仍需部署到稳定云入口并配置微信合法域名。

四、上线前必须满足的红线

以下任何一项没有完成,都不应公开长期无人值守收费:

  • 真实支付下单、回调验签、主动查单、退款和对账没有闭环。
  • AppSecret、支付私钥或 API v3 密钥仍以明文文件或聊天记录作为正式来源。
  • 数据库不能自动备份并完成恢复演练。
  • 可能已提交打印的任务仍会自动重试。
  • 门店断网、缺纸、卡纸和电脑重启没有演练。
  • 告警无法触达负责人。
  • 用户文件没有自动删除策略和隐私说明。
  • 二维码、平台设备和物理打印机没有一一核对。

五、基线版本的价值

当前成果已经跨过最关键的第一道门槛:证明微信小程序、中心服务、门店 Windows 电脑和普通打印机之间可以形成真实业务链路。后续工作不需要推翻重做,而是把单机原型中隐含的单设备假设逐步替换成可配置、可观测、可恢复的生产能力。

返回完整工程总览下一篇:完整用户流程