Admin:公共分页和 AI 匹配单批上限扩展到 200 条 #308

Open
opened 2026-08-26 15:10:17 +08:00 by ila · 0 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#199 / AI规格批量匹配
  • 关联 MVP:#15 / Admin 四模块可用闭环(公共分页)
  • 阶段:AI批次与公共分页容量扩展
  • 依赖:#202、#242
  • 状态:已完成,待验收

要解决什么

Admin 八个公共主列表目前只提供每页 20、50、100 条,顺运宝批量 AI 规格匹配也固定最多 100 条。采购员需要在同一页集中查看并勾选最多 200 条后直接创建后台 AI 匹配批次。目标是在不提高默认密度和模型并发的前提下,把页面容量与 AI 单批业务上限统一扩展到 200,避免 200 条页面全选后操作无效。

做什么 / 不做什么

做什么

  • 公共分页白名单增加 200,形成 20/50/100/200 四档;默认和非法值回退仍为 100。
  • 八个使用公共分页的主列表自动获得 200 条选项,切换后回到第 1 页并保留筛选。
  • 顺运宝 AI 匹配单批上限从 100 提高到 200。
  • 页面文案和 JavaScript 从服务端统一取得 AI 上限,避免前端、模板和 Service 三处数字漂移。
  • 超过 200 条时提供明确错误;1~200 条按原有后台批次、进度和逐条结果运行。
  • 新增 MySQL schema v31,把 chk_ai_match_batch_total 从 1~100 改为 1~200,并进行约束表达式自检。
  • 更新单元测试、MySQL 迁移测试、数据模型和界面基线。

不做什么

  • 默认每页条数仍为 100,不改为 200。
  • AI 最大并发仍由服务商配置控制且最高 16,不随批次数量提高。
  • 不把 200 条合并成一次模型请求;每个唯一规格身份仍按原有规则/模型调用处理。
  • 不修改单次 AI 规格候选上限 150、顺运宝订单号搜索上限 100、同步记录每页 10 条或顺运宝上游接口分页。
  • 不改变人工优先、候选白名单、上下文版本、相同身份复用、逐条失败隔离和重启中断规则。
  • 本工单不部署生产,不在生产执行 v31。

怎么做

  1. admin/service/pagination.go 把公共页容量白名单扩展为 20/50/100/200,保持 DefaultPageSize=100。
  2. 公共分页模板继续遍历服务端选项,JavaScript 保留立即提交、加载反馈和回到第 1 页语义。
  3. admin/service/ai_match_batch.go 把单批上限调整为 200;Handler 向模板传入上限。
  4. 顺运宝 AI 创建弹窗使用服务端上限显示文案并输出 data-*,JavaScript 从该属性判断,不再硬编码 100。
  5. admin/repository/mysql_db.go 新增可重放 v31:读取现有 CHECK 表达式,不正确时删除并重建 chk_ai_match_batch_total,自检必须确认上下界为 1 和 200 后才记录版本。
  6. 测试 200 条合法、201 条拒绝、前端上限一致、分页选项与默认值、v30→v31、v31 重复迁移及约束实际拒绝 201。
  7. 更新 docs/admin/03-data-model.md、docs/admin/05-ui-specification.md 并完成本地归档。

预计修改:

  • admin/service/pagination.go
  • admin/service/pagination_test.go
  • admin/service/ai_match_batch.go
  • admin/service/ai_match_batch_test.go
  • admin/handler/web/others.go
  • admin/templates/syb/list.html
  • admin/static/js/app.js
  • admin/syb_interaction_template_test.go
  • admin/repository/mysql_db.go
  • admin/repository/mysql_db_integration_test.go
  • docs/admin/01-requirements.md
  • docs/admin/03-data-model.md
  • docs/admin/05-ui-specification.md
  • docs/task/308-admin公共分页和AI匹配单批上限200条.md

数据库结构:MySQL schema v31 仅替换一个 CHECK 约束,不改表和字段。
Admin/Client HTTP 接口:Client 接口不变;浏览器表单仍使用已有 ids 与 page_size 参数。

验收标准

  • 公共分页显示 20、50、100、200 四档,缺失或非法值仍回退 100。
  • page_size=200 使用 SQL 分页并正确计算总页数、越界页和导航链接。
  • 切换 200 后回到第 1 页,筛选、F5、前进后退、模块状态恢复和写操作跳转继续保留容量。
  • 顺运宝同步记录、上游抓取分页、订单号搜索上限和单条候选上限保持不变。
  • AI 匹配允许 1~200 个去重后的顺运宝明细,201 个返回明确错误且不建批次。
  • AI 弹窗显示最多 200 条,前端从服务端上限判断而非硬编码数字。
  • AI 最大并发仍不超过 16,后台执行、进度、复用、失败隔离和中断恢复行为不变。
  • MySQL v31 把 chk_ai_match_batch_total 调整为 1~200,允许 200、拒绝 201。
  • v30→v31 首次迁移、v31 重复迁移和 schema 自检通过。
  • 图片懒加载和切换容量时“加载中…”反馈保持不变。
  • Go 1.23.0 全量 test、build、vet 与 JavaScript 语法检查通过。
  • 完成实施记录、提交和本地归档。

怎么验证

从 admin/ 执行:

$env:GOTOOLCHAIN = "go1.23.0"
go test ./... -count=1
go build ./...
go vet ./...
node --check static/js/app.js
Remove-Item Env:GOTOOLCHAIN

配置以 _test 结尾的独立 MySQL 8.4 测试库后执行迁移集成测试;不得连接生产库做测试清理。

风险和回退

  • 风险:200 行增加 HTML/DOM 和图片数量。控制:默认仍为 100、列表继续 SQL 分页、缩略图保持固定尺寸与懒加载、切换时保留加载反馈。
  • 风险:200 个唯一身份增加 AI 时间、费用和服务商限流概率。控制:后台执行并显示进度,最大并发仍由配置控制且最高 16,相同身份继续复用。
  • 风险:Admin 重启时更长批次更可能中断。控制:已完成映射保留,未完成明细转 interrupted,可重新勾选未成功项。
  • 风险:MySQL DDL 隐式提交。控制:v31 迁移可重放,约束表达式自检通过后才记录版本。
  • 回退:代码回退并不能直接兼容已经记录的 v31;如需应用回退,应先发布兼容 schema v31 的上一业务版本,数据库 1~200 约束可以保留,不需要收紧回 100。

实施前补充(2026-08-26)

代码检查确认产品需求基线 docs/admin/01-requirements.md 也写死了 AI 单批 100 条,因此纳入同一工单同步更新。该补充不改变已确认功能边界,只避免需求、数据模型、界面基线和实现数字不一致。

实施记录(2026-08-26)

  • 实现提交:55eede2(扩展公共分页和 AI 匹配到 200 条)。
  • 归档提交:ce780dd,归档:docs/task/308-admin公共分页和AI匹配单批上限200条.md。
  • 全量验证:Go 1.23.0 的 go test ./... -count=1、go build ./...、go vet ./... 及 node --check static/js/app.js 全部通过。
  • MySQL 8.4 隔离验证:200 条 AI 批次成功、201 条拒绝;v30→v31 和 v31 重复迁移通过。临时测试库及临时授权已清理。
  • 未验证:未部署生产、未在生产库执行 v31;未做生产登录态 1366×768 人工视觉验收;未发起 200 条真实外部 AI 调用。
  • 当前状态:代码、测试、归档和推送已完成,等待用户验收。
## 基本信息 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#199 / AI规格批量匹配 - 关联 MVP:#15 / Admin 四模块可用闭环(公共分页) - 阶段:AI批次与公共分页容量扩展 - 依赖:#202、#242 - 状态:已完成,待验收 ## 要解决什么 Admin 八个公共主列表目前只提供每页 20、50、100 条,顺运宝批量 AI 规格匹配也固定最多 100 条。采购员需要在同一页集中查看并勾选最多 200 条后直接创建后台 AI 匹配批次。目标是在不提高默认密度和模型并发的前提下,把页面容量与 AI 单批业务上限统一扩展到 200,避免 200 条页面全选后操作无效。 ## 做什么 / 不做什么 ### 做什么 - 公共分页白名单增加 200,形成 20/50/100/200 四档;默认和非法值回退仍为 100。 - 八个使用公共分页的主列表自动获得 200 条选项,切换后回到第 1 页并保留筛选。 - 顺运宝 AI 匹配单批上限从 100 提高到 200。 - 页面文案和 JavaScript 从服务端统一取得 AI 上限,避免前端、模板和 Service 三处数字漂移。 - 超过 200 条时提供明确错误;1~200 条按原有后台批次、进度和逐条结果运行。 - 新增 MySQL schema v31,把 `chk_ai_match_batch_total` 从 1~100 改为 1~200,并进行约束表达式自检。 - 更新单元测试、MySQL 迁移测试、数据模型和界面基线。 ### 不做什么 - 默认每页条数仍为 100,不改为 200。 - AI 最大并发仍由服务商配置控制且最高 16,不随批次数量提高。 - 不把 200 条合并成一次模型请求;每个唯一规格身份仍按原有规则/模型调用处理。 - 不修改单次 AI 规格候选上限 150、顺运宝订单号搜索上限 100、同步记录每页 10 条或顺运宝上游接口分页。 - 不改变人工优先、候选白名单、上下文版本、相同身份复用、逐条失败隔离和重启中断规则。 - 本工单不部署生产,不在生产执行 v31。 ## 怎么做 1. `admin/service/pagination.go` 把公共页容量白名单扩展为 20/50/100/200,保持 `DefaultPageSize=100`。 2. 公共分页模板继续遍历服务端选项,JavaScript 保留立即提交、加载反馈和回到第 1 页语义。 3. `admin/service/ai_match_batch.go` 把单批上限调整为 200;Handler 向模板传入上限。 4. 顺运宝 AI 创建弹窗使用服务端上限显示文案并输出 `data-*`,JavaScript 从该属性判断,不再硬编码 100。 5. `admin/repository/mysql_db.go` 新增可重放 v31:读取现有 CHECK 表达式,不正确时删除并重建 `chk_ai_match_batch_total`,自检必须确认上下界为 1 和 200 后才记录版本。 6. 测试 200 条合法、201 条拒绝、前端上限一致、分页选项与默认值、v30→v31、v31 重复迁移及约束实际拒绝 201。 7. 更新 `docs/admin/03-data-model.md`、`docs/admin/05-ui-specification.md` 并完成本地归档。 预计修改: - `admin/service/pagination.go` - `admin/service/pagination_test.go` - `admin/service/ai_match_batch.go` - `admin/service/ai_match_batch_test.go` - `admin/handler/web/others.go` - `admin/templates/syb/list.html` - `admin/static/js/app.js` - `admin/syb_interaction_template_test.go` - `admin/repository/mysql_db.go` - `admin/repository/mysql_db_integration_test.go` - `docs/admin/01-requirements.md` - `docs/admin/03-data-model.md` - `docs/admin/05-ui-specification.md` - `docs/task/308-admin公共分页和AI匹配单批上限200条.md` 数据库结构:MySQL schema v31 仅替换一个 CHECK 约束,不改表和字段。 Admin/Client HTTP 接口:Client 接口不变;浏览器表单仍使用已有 `ids` 与 `page_size` 参数。 ## 验收标准 - [x] 公共分页显示 20、50、100、200 四档,缺失或非法值仍回退 100。 - [x] `page_size=200` 使用 SQL 分页并正确计算总页数、越界页和导航链接。 - [x] 切换 200 后回到第 1 页,筛选、F5、前进后退、模块状态恢复和写操作跳转继续保留容量。 - [x] 顺运宝同步记录、上游抓取分页、订单号搜索上限和单条候选上限保持不变。 - [x] AI 匹配允许 1~200 个去重后的顺运宝明细,201 个返回明确错误且不建批次。 - [x] AI 弹窗显示最多 200 条,前端从服务端上限判断而非硬编码数字。 - [x] AI 最大并发仍不超过 16,后台执行、进度、复用、失败隔离和中断恢复行为不变。 - [x] MySQL v31 把 `chk_ai_match_batch_total` 调整为 1~200,允许 200、拒绝 201。 - [x] v30→v31 首次迁移、v31 重复迁移和 schema 自检通过。 - [x] 图片懒加载和切换容量时“加载中…”反馈保持不变。 - [x] Go 1.23.0 全量 test、build、vet 与 JavaScript 语法检查通过。 - [x] 完成实施记录、提交和本地归档。 ## 怎么验证 从 `admin/` 执行: ```powershell $env:GOTOOLCHAIN = "go1.23.0" go test ./... -count=1 go build ./... go vet ./... node --check static/js/app.js Remove-Item Env:GOTOOLCHAIN ``` 配置以 `_test` 结尾的独立 MySQL 8.4 测试库后执行迁移集成测试;不得连接生产库做测试清理。 ## 风险和回退 - 风险:200 行增加 HTML/DOM 和图片数量。控制:默认仍为 100、列表继续 SQL 分页、缩略图保持固定尺寸与懒加载、切换时保留加载反馈。 - 风险:200 个唯一身份增加 AI 时间、费用和服务商限流概率。控制:后台执行并显示进度,最大并发仍由配置控制且最高 16,相同身份继续复用。 - 风险:Admin 重启时更长批次更可能中断。控制:已完成映射保留,未完成明细转 interrupted,可重新勾选未成功项。 - 风险:MySQL DDL 隐式提交。控制:v31 迁移可重放,约束表达式自检通过后才记录版本。 - 回退:代码回退并不能直接兼容已经记录的 v31;如需应用回退,应先发布兼容 schema v31 的上一业务版本,数据库 1~200 约束可以保留,不需要收紧回 100。 ## 实施前补充(2026-08-26) 代码检查确认产品需求基线 `docs/admin/01-requirements.md` 也写死了 AI 单批 100 条,因此纳入同一工单同步更新。该补充不改变已确认功能边界,只避免需求、数据模型、界面基线和实现数字不一致。 ## 实施记录(2026-08-26) - 实现提交:`55eede2`(扩展公共分页和 AI 匹配到 200 条)。 - 归档提交:`ce780dd`,归档:`docs/task/308-admin公共分页和AI匹配单批上限200条.md`。 - 全量验证:Go 1.23.0 的 `go test ./... -count=1`、`go build ./...`、`go vet ./...` 及 `node --check static/js/app.js` 全部通过。 - MySQL 8.4 隔离验证:200 条 AI 批次成功、201 条拒绝;v30→v31 和 v31 重复迁移通过。临时测试库及临时授权已清理。 - 未验证:未部署生产、未在生产库执行 v31;未做生产登录态 1366×768 人工视觉验收;未发起 200 条真实外部 AI 调用。 - 当前状态:代码、测试、归档和推送已完成,等待用户验收。
ila referenced this issue from a commit 2026-08-26 15:30:54 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/cmautobuy#308