通过 Scalar 防腐层浏览题库目录 #4

Closed
opened 2026-07-27 07:48:09 +00:00 by wangziqi · 1 comment
Owner

Parent

#1

What to build

已登录学生能够从学习首页进入题库,浏览由 RuoYi 统一返回的科目、地区、分类和题库目录。内容可以暂时来自 Scalar,但学生浏览器只请求 RuoYi。

Acceptance criteria

  • 建立内部 Catalog 契约,Scalar DTO 不进入业务层或前端。
  • Scalar 地址、凭据、超时和数据源开关均由服务端配置。
  • Scalar item/items/meta 被转换为项目标准响应和分页结构。
  • 租户上下文由服务端安全上下文生成,调用方不能覆盖身份头。
  • 正常、空数据、400、401、403、404、409、429、超时和 5xx 均有明确行为。
  • 上游错误不会被转换为空列表或成功响应。
  • 学生端具备学习首页入口、目录筛选、加载、空状态和错误状态。
  • 浏览器 Network 中不存在直接 Scalar 请求。
  • 日志记录脱敏后的上游 request ID、耗时、tenant 和结果。

Blocked by

  • #3 — 打通租户识别与学生登录
## Parent https://git.gongxue100.com/wangziqi/ruoyi-vue-pro/issues/1 ## What to build 已登录学生能够从学习首页进入题库,浏览由 RuoYi 统一返回的科目、地区、分类和题库目录。内容可以暂时来自 Scalar,但学生浏览器只请求 RuoYi。 ## Acceptance criteria - [ ] 建立内部 Catalog 契约,Scalar DTO 不进入业务层或前端。 - [ ] Scalar 地址、凭据、超时和数据源开关均由服务端配置。 - [ ] Scalar item/items/meta 被转换为项目标准响应和分页结构。 - [ ] 租户上下文由服务端安全上下文生成,调用方不能覆盖身份头。 - [ ] 正常、空数据、400、401、403、404、409、429、超时和 5xx 均有明确行为。 - [ ] 上游错误不会被转换为空列表或成功响应。 - [ ] 学生端具备学习首页入口、目录筛选、加载、空状态和错误状态。 - [ ] 浏览器 Network 中不存在直接 Scalar 请求。 - [ ] 日志记录脱敏后的上游 request ID、耗时、tenant 和结果。 ## Blocked by - #3 — 打通租户识别与学生登录
wangziqi added the
ready-for-agent
label 2026-07-27 07:48:09 +00:00
Author
Owner

Issue #4:Scalar 目录防腐层

已完成

  • 建立内部 Catalog contract,Scalar DTO 不进入业务层和前端。
  • 服务端配置 Scalar URL、token、超时和数据源开关。
  • 转换单项/分页响应、元数据及上游错误。
  • 注入服务端租户上下文,不接受前端身份覆盖。
  • 覆盖正常、空数据、4xx、429、超时、5xx 和敏感字段契约测试。

验证

  • Education 模块测试:通过。
  • Harness contract / adapter tests:通过。

范围说明

真实 Scalar endpoint smoke 仍需部署环境和有效只读凭据,详见 issue #1 汇总。

代码:ce02f8a

## Issue #4:Scalar 目录防腐层 ### 已完成 - 建立内部 Catalog contract,Scalar DTO 不进入业务层和前端。 - 服务端配置 Scalar URL、token、超时和数据源开关。 - 转换单项/分页响应、元数据及上游错误。 - 注入服务端租户上下文,不接受前端身份覆盖。 - 覆盖正常、空数据、4xx、429、超时、5xx 和敏感字段契约测试。 ### 验证 - Education 模块测试:通过。 - Harness contract / adapter tests:通过。 ### 范围说明 真实 Scalar endpoint smoke 仍需部署环境和有效只读凭据,详见 issue #1 汇总。 代码:`ce02f8a`。
Sign in to join this conversation.
No description provided.