Files
junhong_cmp_fiber/.scratch/ur60-shop-phone-search/issues/01-修复店铺列表参数校验与默认分页.md
2026-07-22 12:37:05 +09:00

2.5 KiB
Raw Blame History

01 — 修复店铺列表参数校验与默认分页

What to build: 让 API 调用方通过现有店铺列表接口获得可信的参数校验和分页行为:所有已声明查询参数在进入查询前完成统一解析与完整校验,非法参数只返回脱敏的统一参数错误;未提供分页参数时,数据库查询与响应元数据都明确使用第 1 页、每页 20 条。该行为通过真实认证链路和数据服务独立验收,并同步固化到接口契约与需求文档。

Blocked by: None — can start immediately.

Status: ready-for-agent

架构通道: 主通道为现有读取链路 Handler → Service → Store → GORM/DTO;不迁移到新的 Query 或 DDD 模块。

完整业务边界: 仅收口店铺列表请求参数校验、错误脱敏和分页一致性。明确不修改其他 Handler 的校验方式,不迁移店铺模块,不改变列表响应结构、已有筛选语义、排序或数据权限。

  • 店铺列表在查询参数解析后对整个请求 DTO 执行校验,覆盖分页、名称、编号、上级店铺、层级和状态的既有约束。
  • 查询参数解析失败或任一字段校验失败时,不执行店铺查询;客户端收到 HTTP 400、code=1001msg=参数验证失败data=null 和时间戳,响应不包含解析器或 Validator 的具体错误文本。
  • 服务端日志保留请求上下文和具体失败原因但不记录数据库密码、JWT 密钥或其他敏感配置。
  • 未传 pagepage_size 时,查询前归一化为第 1 页、每页 20 条,并在响应中返回 page=1size=20
  • 显式提供的合法页码和每页数量原样生效,不因任何筛选条件被后端重置。
  • HTTP 集成测试通过进程内 Fiber App、真实后台认证中间件、真实 PostgreSQL、Redis 和 JWT 配置验证成功及失败响应;测试数据和 Token 状态使用唯一标识并严格清理。
  • 集成测试覆盖非法分页、非法层级、非法状态、超长名称或编号、默认分页、显式分页、未认证及无效 Token 等关键行为。
  • OpenAPI 准确描述店铺列表已有字段的校验限制和分页契约,生成结果中不出现与本切片无关的漂移。
  • UR#60 中文总结及 README 索引记录本切片的参数错误协议、默认分页行为、验证证据和明确不迁移的旧代码范围。
  • 运行本切片目标测试、格式化、静态检查和相关构建,确认该行为可独立交付且不破坏原店铺列表语义。