Admin:采购任务详情独立展示 PDD 核单结果 #125

Closed
opened 2026-08-10 19:55:59 +08:00 by ila · 4 comments
Owner

基本信息

  • 类型:需求 / 易用性改进
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 阶段:采集采购任务结果查看
  • 依赖:现有 Client 采购成功结果中的 pdd_data.purchase 字段

要解决什么

Client 完成真实采购后的只读核单时,已经在采购成功结果中提交 PDD 订单编号、带时区下单时间和付款状态。Admin 目前只把整个 tasks.result_data 放在任务详情底部的折叠 JSON 中,采购员必须展开并人工查找字段。

同时,任务表及任务参数中的“订单号”是顺运宝货运单号,不是 PDD 采购订单编号,容易混淆。需要在采购任务详情中把 PDD 核单结果独立、明确展示。

做什么 / 不做什么

做什么

  • 仅在采购任务详情增加“PDD 核单结果”分组。
  • 独立展示:
    • PDD 订单编号;
    • 下单时间;
    • 上报时付款状态。
  • 从现有 tasks.result_data.purchase 解析,不修改 Client 提交内容。
  • 下单时间按带时区 ISO 8601 解析并转换为 Admin 本地时区显示。
  • 付款状态使用中文稳定文案,并明确标为“上报时付款状态”,避免被误解为实时查询结果。
  • 订单编号使用普通可选中文本,便于鼠标复制。
  • 根据结果状态明确区分:
    • 已匹配唯一订单:显示三个字段;
    • 尚无成功结果:显示“等待 Client 核单上报”;
    • 需要人工处理:结合既有错误区域显示“订单结果不确定”;
    • 结果 JSON 或字段格式异常:显示“采购结果格式异常”,仍保留原始结果折叠区供诊断。
  • 原始 result_data 折叠区继续保留。

不做什么

  • 不在任务列表的“订单号”列展示 PDD 订单编号,也不改变顺运宝货运单号语义。
  • 不查询 PDD 实时订单或付款状态。
  • 不新增 Admin/Client 接口,不修改 Client 四接口契约。
  • 不修改数据库结构,不从 result_data 拆字段落新列。
  • 不修改 Client 本地任务详情。
  • 不实现支付、自动刷新付款状态或人工编辑订单编号。

怎么做

  1. 在 admin/service/task.go 为任务详情增加结构化的 PDD 核单展示字段,并定义最小的采购结果解析结构,只解析:
    • purchase.order_no
    • purchase.ordered_at
    • purchase.payment_status
    • purchase.match_status
    • purchase.order_submitted
  2. Service 负责 JSON 解析、成功条件判断、时间���换和中文状态映射;模板不得解析 JSON,Handler 不增加业务判断。
  3. 只有采购任务显示“PDD 核单结果”分组:
    • match_status=matched、订单已提交且关键字段有效时显示结构化结果;
    • 无 result_data 时根据任务状态显示等待/不确定说明;
    • JSON 可读取但字段不满足成功结构时显示格式异常或结果不确定。
  4. 在 admin/templates/task/detail_modal.html 使用现有 dl.detail 视觉模式添加只读分组,不引入新颜色和动画;状态含明确文字,不只依赖颜色。
  5. 增加 Service 和模板回归测试,覆盖成功、UTC/带偏移时间、缺字段、非法 JSON、采集任务不显示、人工处理和原始结果仍保留。
  6. 更新 Admin 需求、界面与数据说明中稳定的展示规则。

预计修改文件:

  • admin/service/task.go
  • admin/service/task_test.go
  • admin/templates/task/detail_modal.html
  • admin/main_test.go 或相邻模板测试
  • docs/admin/01-requirements.md
  • docs/admin/05-ui-specification.md
  • 完成后归档 docs/task/<工单号>-admin采购任务详情展示pdd核单结果.md

验收标准

  • 采购成功结果详情独立显示 PDD 订单编号、下单时间和“上报时付款状态”。
  • PDD 订单编号可以直接用鼠标选中复制。
  • 带时区下单时间转换为 Admin 本地时区,非法时间���伪造显示。
  • payment_status=unpaid 显示“未付款(Client 上报时)”,不暗示实时状态。
  • 尚未上报、需要人工处理和结果格式异常有不同的明确文字。
  • 采集任务不显示 PDD 核单结果分组。
  • 原始完整结果折叠区继续存在,异常结果仍可用于诊断。
  • 任务列表及原有顺运宝订单号语义不变。
  • 不修改数据库结构和 Client 四接口。
  • Go 1.23.0 build、test、vet 通过。

怎么验证

从 admin/ 目录执行:

$env:GOTOOLCHAIN='go1.23.0'
gofmt -l .
go build ./...
go test ./... -count=1
go vet ./...
Remove-Item Env:GOTOOLCHAIN

人工验证:

  1. 打开包含唯一未付款订单成功结果的采购任务,核对三个独立字段和本地时间。
  2. 打开尚未提交结果、需要人工处理、非法结果 JSON 的采购任务,核对不同说明。
  3. 打开采集任务,确认不出现 PDD 核单结果分组。
  4. 展开“完整结果”,确认原始 JSON 仍可查看。
  5. 在 1366×768 页面中检查字段换行、订单编号选择复制和键盘阅读顺序。

风险和回退

  • 风险:把上报时状态误解为实时付款状态。通过字段标签和帮助文字明确“Admin 不会查询 PDD 实时状态”。
  • 风险:历史结果结构不完整。解析失败不得让详情页报错,显示明确异常并保留原始 JSON。
  • 风险:时间含义错误。仅接受带时区 ISO 8601,统一复用 Admin 现有本地时间格式化方法。
  • 回退:回退本工单展示和解析代码即可;无数据库迁移,不影响已保存结果。
## 基本信息 - 类型:需求 / 易用性改进 - 父级大工单:#14 - 所属 MVP / 版本:#15 Admin 四模块可用闭环 - 阶段:采集采购任务结果查看 - 依赖:现有 Client 采购成功结果中的 `pdd_data.purchase` 字段 ## 要解决什么 Client 完成真实采购后的只读核单时,已经在采购成功结果中提交 PDD 订单编号、带时区下单时间和付款状态。Admin 目前只把整个 `tasks.result_data` 放在任务详情底部的折叠 JSON 中,采购员必须展开并人工查找字段。 同时,任务表及任务参数中的“订单号”是顺运宝货运单号,不是 PDD 采购订单编号,容易混淆。需要在采购任务详情中把 PDD 核单结果独立、明确展示。 ## 做什么 / 不做什么 ### 做什么 - 仅在采购任务详情增加“PDD 核单结果”分组。 - 独立展示: - PDD 订单编号; - 下单时间; - 上报时付款状态。 - 从现有 `tasks.result_data.purchase` 解析,不修改 Client 提交内容。 - 下单时间按带时区 ISO 8601 解析并转换为 Admin 本地时区显示。 - 付款状态使用中文稳定文案,并明确标为“上报时付款状态”,避免被误解为实时查询结果。 - 订单编号使用普通可选中文本,便于鼠标复制。 - 根据结果状态明确区分: - 已匹配唯一订单:显示三个字段; - 尚无成功结果:显示“等待 Client 核单上报”; - 需要人工处理:结合既有错误区域显示“订单结果不确定”; - 结果 JSON 或字段格式异常:显示“采购结果格式异常”,仍保留原始结果折叠区供诊断。 - 原始 `result_data` 折叠区继续保留。 ### 不做什么 - 不在任务列表的“订单号”列展示 PDD 订单编号,也不改变顺运宝货运单号语义。 - 不查询 PDD 实时订单或付款状态。 - 不新增 Admin/Client 接口,不修改 Client 四接口契约。 - 不修改数据库结构,不从 `result_data` 拆字段落新列。 - 不修改 Client 本地任务详情。 - 不实现支付、自动刷新付款状态或人工编辑订单编号。 ## 怎么做 1. 在 `admin/service/task.go` 为任务详情增加结构化的 PDD 核单展示字段,并定义最小的采购结果解析结构,只解析: - `purchase.order_no` - `purchase.ordered_at` - `purchase.payment_status` - `purchase.match_status` - `purchase.order_submitted` 2. Service 负责 JSON 解析、成功条件判断、时间���换和中文状态映射;模板不得解析 JSON,Handler 不增加业务判断。 3. 只有采购任务显示“PDD 核单结果”分组: - `match_status=matched`、订单已提交且关键字段有效时显示结构化结果; - 无 `result_data` 时根据任务状态显示等待/不确定说明; - JSON 可读取但字段不满足成功结构时显示格式异常或结果不确定。 4. 在 `admin/templates/task/detail_modal.html` 使用现有 `dl.detail` 视觉模式添加只读分组,不引入新颜色和动画;状态含明确文字,不只依赖颜色。 5. 增加 Service 和模板回归测试,覆盖成功、UTC/带偏移时间、缺字段、非法 JSON、采集任务不显示、人工处理和原始结果仍保留。 6. 更新 Admin 需求、界面与数据说明中稳定的展示规则。 预计修改文件: - `admin/service/task.go` - `admin/service/task_test.go` - `admin/templates/task/detail_modal.html` - `admin/main_test.go` 或相邻模板测试 - `docs/admin/01-requirements.md` - `docs/admin/05-ui-specification.md` - 完成后归档 `docs/task/<工单号>-admin采购任务详情展示pdd核单结果.md` ## 验收标准 - [x] 采购成功结果详情独立显示 PDD 订单编号、下单时间和“上报时付款状态”。 - [x] PDD 订单编号可以直接用鼠标选中复制。 - [x] 带时区下单时间转换为 Admin 本地时区,非法时间���伪造显示。 - [x] `payment_status=unpaid` 显示“未付款(Client 上报时)”,不暗示实时状态。 - [x] 尚未上报、需要人工处理和结果格式异常有不同的明确文字。 - [x] 采集任务不显示 PDD 核单结果分组。 - [x] 原始完整结果折叠区继续存在,异常结果仍可用于诊断。 - [x] 任务列表及原有顺运宝订单号语义不变。 - [x] 不修改数据库结构和 Client 四接口。 - [x] Go 1.23.0 build、test、vet 通过。 ## 怎么验证 从 `admin/` 目录执行: ```powershell $env:GOTOOLCHAIN='go1.23.0' gofmt -l . go build ./... go test ./... -count=1 go vet ./... Remove-Item Env:GOTOOLCHAIN ``` 人工验证: 1. 打开包含唯一未付款订单成功结果的采购任务,核对三个独立字段和本地时间。 2. 打开尚未提交结果、需要人工处理、非法结果 JSON 的采购任务,核对不同说明。 3. 打开采集任务,确认不出现 PDD 核单结果分组。 4. 展开“完整结果”,确认原始 JSON 仍可查看。 5. 在 1366×768 页面中检查字段换行、订单编号选择复制和键盘阅读顺序。 ## 风险和回退 - 风险:把上报时状态误解为实时付款状态。通过字段标签和帮助文字明确“Admin 不会查询 PDD 实时状态”。 - 风险:历史结果结构不完整。解析失败不得让详情页报错,显示明确异常并保留原始 JSON。 - 风险:时间含义错误。仅接受带时区 ISO 8601,统一复用 Admin 现有本地时间格式化方法。 - 回退:回退本工单展示和解析代码即可;无数据库迁移,不影响已保存结果。
Author
Owner

状态:进行中。

已完成 Service 结构化解析和任务详情只读分组:成功结果显示 PDD 订单编号、转换为本地时区的下单时间、未付款(Client 上报时);等待上报、需人工、未匹配、非法 JSON、缺少 purchase 和非法时间分别显示明确说明。原始 result_data 折叠区保留,采集任务不显示该分组。针对性 Service、Handler 和模板测试已通过,正在执行 Admin 全量验证。

状态:进行中。 已完成 Service 结构化解析和任务详情只读分组:成功结果显示 PDD 订单编号、转换为本地时区的下单时间、未付款(Client 上报时);等待上报、需人工、未匹配、非法 JSON、缺少 purchase 和非法时间分别显示明确说明。原始 result_data 折叠区保留,采集任务不显示该分组。针对性 Service、Handler 和模板测试已通过,正在执行 Admin 全量验证。
Author
Owner

实施完成,等待用户验收

最终实现

  • 采购任务详情新增只读“PDD 核单结果”分组,独立显示 PDD 订单编号、下单时间和“未付款(Client 上报时)”。
  • 下单时间从 Client 的带时区 ISO 8601 转换为 Admin 本地时间。
  • 明确说明 Admin 不查询 PDD 实时付款状态,避免把快照误认成实时状态。
  • 等待上报、需人工、未匹配、非法 JSON、缺少 purchase 和非法时间分别显示明确文案。
  • 原始 result_data 折叠区继续保留;采集任务不显示该分组。
  • 未改数据库、任务列表订单号语义或 Client 四接口。

验证结果

Go 1.23.0 下:gofmt -l、go build ./...、go test ./... -count=1、go vet ./...、git diff --check 全部通过。

UI/UX 复核:沿用现有紧凑型详情布局和标题层级;状态均由文字表达,订单号是可选择文本,原始 JSON 渐进展开。

未验证:真实浏览器中的生产采购结果视觉与复制操作;未查询 PDD,付款状态按设计仅为 Client 上报快照。

提交与归档

  • 实现提交:a7bc9a9
  • 归档提交:3600d0c
  • 归档:docs/task/125-admin采购任务详情展示pdd核单结果.md

工单保持开启,状态为待验收;父工单 #14、#15 暂不勾选。

## 实施完成,等待用户验收 ### 最终实现 - 采购任务详情新增只读“PDD 核单结果”分组,独立显示 PDD 订单编号、下单时间和“未付款(Client 上报时)”。 - 下单时间从 Client 的带时区 ISO 8601 转换为 Admin 本地时间。 - 明确说明 Admin 不查询 PDD 实时付款状态,避免把快照误认成实时状态。 - 等待上报、需人工、未匹配、非法 JSON、缺少 purchase 和非法时间分别显示明确文案。 - 原始 `result_data` 折叠区继续保留;采集任务不显示该分组。 - 未改数据库、任务列表订单号语义或 Client 四接口。 ### 验证结果 Go 1.23.0 下:`gofmt -l`、`go build ./...`、`go test ./... -count=1`、`go vet ./...`、`git diff --check` 全部通过。 UI/UX 复核:沿用现有紧凑型详情布局和标题层级;状态均由文字表达,订单号是可选择文本,原始 JSON 渐进展开。 未验证:真实浏览器中的生产采购结果视觉与复制操作;未查询 PDD,付款状态按设计仅为 Client 上报快照。 ### 提交与归档 - 实现提交:`a7bc9a9` - 归档提交:`3600d0c` - 归档:`docs/task/125-admin采购任务详情展示pdd核单结果.md` 工单保持开启,状态为待验收;父工单 #14、#15 暂不勾选。
Author
Owner

已部署到生产服务器

  • 部署时间:2026-08-10 20:05 CST
  • 发布版本:3600d0c
  • 发布目录:/opt/cmautobuy/releases/3600d0c/
  • 当前符号链接已从 7106f6b 切换到 3600d0c
  • Linux amd64 二进制 SHA-256:86d36c0dc22157b632880351e5e323034f4366c8f2befb36e450624dde2eb514
  • cmautobuy-admin:active、enabled,仅监听 127.0.0.1:18080
  • 启动后 5 分钟内错误日志:0
  • 本机根路径:HTTP 303
  • 公网 https://buy.833729.com/:HTTP 303 跳转登录
  • 公网登录页:HTTP 200
  • 线上二进制已确认包含“PDD 核单结果”功能文字

旧版本 7106f6b 发布目录仍保留,可通过符号链接快速回退。工单继续等待用户登录后的页面验收。

## 已部署到生产服务器 - 部署时间:2026-08-10 20:05 CST - 发布版本:`3600d0c` - 发布目录:`/opt/cmautobuy/releases/3600d0c/` - 当前符号链接已从 `7106f6b` 切换到 `3600d0c` - Linux amd64 二进制 SHA-256:`86d36c0dc22157b632880351e5e323034f4366c8f2befb36e450624dde2eb514` - `cmautobuy-admin`:active、enabled,仅监听 `127.0.0.1:18080` - 启动后 5 分钟内错误日志:0 - 本机根路径:HTTP 303 - 公网 `https://buy.833729.com/`:HTTP 303 跳转登录 - 公网登录页:HTTP 200 - 线上二进制已确认包含“PDD 核单结果”功能文字 旧版本 `7106f6b` 发布目录仍保留,可通过符号链接快速回退。工单继续等待用户登录后的页面验收。
Author
Owner

用户已明确验收通过。验收清单已回填,本工单关闭。

用户已明确验收通过。验收清单已回填,本工单关闭。
ila closed this issue 2026-08-10 23:25:15 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#125