收紧编辑器内部处理元数据边界
Project CI / Native shell tests (pull_request) Successful in 12m45s
Project CI / Frontend tests (pull_request) Successful in 2m58s
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 9s

普通用户与公开响应统一移除生成 provider、内部处理模型和抠图审计字段。
普通生成请求移除 segModel,由后端固定抠图策略并清理客户端伪造的保留字段。
手动去背景继承可信源模型,角色动作与去背景失败统一使用稳定用户文案。
后台原始审计继续保留真实 provider 与抠图模型,并补齐 Owner、Public、Admin 和紧凑结果测试。
同步更新前端响应契约、外部 OpenAPI、后端架构文档和项目决策记录。
This commit is contained in:
2026-07-31 04:58:07 +00:00
parent 915eb4b739
commit 56fe1cb85d
23 changed files with 993 additions and 207 deletions
@@ -2293,12 +2293,6 @@
"null"
]
},
"provider": {
"type": [
"string",
"null"
]
},
"taskId": {
"type": [
"string",
@@ -2476,12 +2470,6 @@
"null"
]
},
"provider": {
"type": [
"string",
"null"
]
},
"taskId": {
"type": [
"string",
@@ -2852,7 +2840,6 @@
"sourceType",
"prompt",
"model",
"provider",
"taskId"
],
"properties": {
@@ -2895,9 +2882,6 @@
"model": {
"type": "string"
},
"provider": {
"type": "string"
},
"taskId": {
"type": "string"
},
@@ -3231,7 +3215,6 @@
"spritesheetHeight",
"prompt",
"model",
"provider",
"taskId",
"priceMudPoints"
],
@@ -3277,9 +3260,6 @@
"model": {
"type": "string"
},
"provider": {
"type": "string"
},
"taskId": {
"type": "string"
},
@@ -3718,7 +3698,6 @@
"sourceType",
"prompt",
"model",
"provider",
"taskId",
"durationSeconds",
"resolution",
@@ -3767,9 +3746,6 @@
"model": {
"type": "string"
},
"provider": {
"type": "string"
},
"taskId": {
"type": "string"
},
@@ -3955,7 +3931,6 @@
"sourceType",
"prompt",
"model",
"provider",
"taskId",
"priceMudPoints",
"audioKind"
@@ -4003,9 +3978,6 @@
"model": {
"type": "string"
},
"provider": {
"type": "string"
},
"taskId": {
"type": "string"
},
@@ -26,6 +26,17 @@
---
## 2026-07-31 修正抠图内部元数据的普通用户读取边界
- 背景:2026-07-30 的记录误把素材 owner 与后台审计并列为原始抠图执行信息的读取方。owner 是普通用户,前端不展示字段不能阻止其从项目资源、素材库、精选提交 / 点赞回包、画布布局或任务完成响应的网络 payload 读取 BgFilter、阿里云、本地键色、具体分割模型或背景色。
- 决策:本条取代 2026-07-30 决策中“素材 owner、精选提交响应仍可读取原始值”的表述。普通用户(包括素材 owner)和匿名公开读取必须共同过滤素材顶层 `provider`、内部处理 `model`,以及 `generationInputs` 顶层 `screenColorHex``mattingProvider``mattingModel`;正常用户可见生成 `model` 和其他合法功能性顶层字段(例如 `characterAnimation`)保持不变。User/Owner mapper 先完成该清理,public mapper 在其基础上叠加公开字段规则;后台管理与服务端审计继续使用 raw mapper 和持久化原值。历史数据不迁移,统一在读取边界清理。
- 入站与持久化:客户端提交的 `generationInputs` 不得伪造上述内部键,服务端在实际处理完成后才写入可信值。手动去背景的正式素材 `model` 必须继承经服务端验证的正常源生图模型;若来源或祖先链不存在正常模型则为 `null`,不得写入 `BgFilter complex` 等内部处理模型。内部抠图 provider / model 可继续持久化供后台审计,普通用户完成响应和用户可见错误文本均不得暴露它们;手动去背景与角色动作透明化失败在 Owner HTTP / 任务状态边界统一替换为稳定业务文案,原始错误只留在任务记录、tracing 和后台审计。
- 影响范围:项目资源、素材库、精选提交 / 点赞、图片 / 图标 / 视频 / 音频 / 角色动画生成完成、Agent 紧凑结果和识别出的画布资源 / 图层快照的 User/Public mapper;手动去背景持久化和完成响应;External Editor API 创建素材 / 资源时的保留键入站清理;相应 API / OpenAPI 契约、前端搜索 / 详情 / ZIP 过滤测试与后台 raw 审计测试。不修改 SpacetimeDB schema、迁移或 bindings。
- 验证方式:Owner 和匿名响应覆盖无 `provider`、无内部 `model`、无三个内部 `generationInputs` 键,且正常 `model``characterAnimation` 仍保留;Admin raw payload 保持完整。覆盖历史 `BgFilter complex`、三类入站伪造键、手动去背景源模型回溯和用户错误文本过滤;运行 api-server 定向测试、前端定向测试、`cargo check -p api-server --manifest-path server-rs/Cargo.toml``npm run typecheck``npm run check:encoding``git diff --check`
- 关联文档:`docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md``docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md`
---
## 2026-07-30 图片画布搜索不得索引内部模型和 Provider
- 背景:素材和图层详情虽已把内部处理模型显示为 `-`,搜索仍索引原始 `model``provider`,导致 `BgFilter complex``segment-common-image``BgFilter``Aliyun Matting` 等隐藏信息可被查询命中,并出现“命中但无可见匹配字段”的异常体验。
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long