分页查询翻译

验证状态:已源码核验、未联调;适用基线:Web 7fe6dd10、services 89bd222c;核验日期:2026-09-12

用途与 App 场景

按筛选条件分页读取翻译词条。当前 Web 翻译管理列表页以本操作做无限滚动加载。本页描述当前 Web 可达调用与服务端实际合同,不把静态源码核验当作联调。

Web 使用位置

页面/功能 角色或空间分支 调用证据
翻译管理列表无限滚动 当前 $spaceId;后端授权 administrator 或 configuration-translation:read app/routes/($lng).$spaceId.configuration.translation._index/route.tsx:51

协议身份

operationId http-post-main-service-system-api-configuration-translation-page-9aee80ab
method + path POST /main-service/system-api/configuration/translation/page
base URL 当前 Web 使用同源相对 URL;App 的部署 base URL 未由源码固定
headers Accept: application/json;charset=UTF-8;有登录态时 Authorization: Bearer <token>;body 操作为 Content-Type: application/json
序列化 object body 由公共 wrapper 执行 JSON.stringify

前置条件与权限

需要有效登录态,并满足 administrator 角色或 configuration-translation:readTranslationController.java:157)。Controller 强制 setTenantId(当前认证租户)TranslationController.java:161),请求体中的 tenantId 会被覆盖;数据范围由租户拦截器与该覆盖共同约束。认证与空间

输入

JSON 路径/参数 JSON 类型 位置 必填 可空 默认值 枚举/范围/单位 说明 字段证据
current number body ≥1;Web 固定从 1 递增 页码 gt-common-configuration-dto/src/main/java/tech/gt/configuration/dto/TranslationPageRequestDTO.java:21
pageSize number body 无(Java primitive long) Web 固定 10 每页条数;服务端未调用 normalizePageSize,边界未闭合(见缺口) TranslationPageRequestDTO.java:24
其余筛选字段 同 list body 查询控制字段 TranslationPageRequestDTO extends TranslationListRequestDTO TranslationPageRequestDTO.java:19

当前 Web 发送 { sqlQuerySorter: { field: "lastModifiedTime" }, ...body, pageSize: 10, current }(route.tsx:45-52)。

输出、应答或事件

JSON 路径 JSON 类型 出现条件 可空 枚举/范围/单位 说明 字段证据
timestamp/status/error/localizedError/path 同信封 JSON 响应 成功信封;status=200 gt-common-core/src/main/java/tech/gt/api/ApiResult.java
extraData.current number 成功 页码 当前页 TranslationController.java:165-168 Map.of
extraData.pages number 成功 页数 总页数;Web 以 current>=pages 判定结束 同上;route.tsx infinite scroll
extraData.size number 成功 条数 每页大小 同上
extraData.total number 成功 条数 总条数 同上
data array 业务成功 翻译词条数组;字段同翻译列表 TranslationMapper.xml#138 selectListResponseDTO

完成判据

status=200data/extraData 可消费表示本页读取结束;current>=pages 表示没有更多页。空结果 data=[]total=0 是成功空态。

示例

以下均为按已核验契约构造的示例,不是真实联调记录。

请求:

1{
2  "sqlQuerySorter": { "field": "lastModifiedTime" },
3  "pageSize": 10,
4  "current": 1
5}

成功响应:

1{
2  "timestamp": 1789142400000,
3  "status": 200,
4  "error": null,
5  "localizedError": null,
6  "path": null,
7  "extraData": { "current": 1, "pages": 1, "size": 10, "total": 1 },
8  "data": [
9    {
10      "translationId": "tr-01",
11      "language": "zh-CN",
12      "namespace": "translation",
13      "key": "Add",
14      "value": "新增",
15      "createdUsername": "administrator",
16      "createdTime": 1789142400,
17      "lastModifiedUsername": "administrator",
18      "lastModifiedTime": 1789142400,
19      "deleteTime": null,
20      "revision": 1,
21      "tenantId": "default"
22    }
23  ]
24}

错误与边界

认证失败/权限失败。公共 Web helper 默认 15 分钟超时(app/.common/lib/fetch-timeouts.ts:4-76)。读取无副作用,可按网络策略重试。

调用关系与资源清理

无长连接资源。列表页卸载即结束;无服务端游标。

已知缺口

pageSize 未经过 normalizePageSize,服务端上限未闭合(省略时 Java primitive long 默认 0 的行为未联调证实,与票 15 八族 page 的结论同源)。 仅完成双仓静态源码核验,未执行真实 HTTP、数据库或权限矩阵联调。

验证状态与依据

结论 状态 仓库/基线 路径、符号及定位 内容指纹(脏文件)
Web 方法、路径、序列化与消费 已源码核验 web 7fe6dd10 translationApi.ts:35 configurationTranslationPageApiroute.tsx:51 证据文件与 HEAD 一致
权限、输入、输出和完成语义 已源码核验 services 89bd222c TranslationController.java:158 page(tenantId 覆盖 :161、extraData :165-168) 证据文件与 HEAD 一致
JSON 字段与时间类型 已源码核验 services 89bd222c TranslationPageRequestDTO.javaTranslationListResponseDTO.java 证据文件与 HEAD 一致
真实部署联调 未执行 未发送请求、未连接数据库