扩展 portal handler/service 以处理 image_generate、image_edit 的 multipart metadata、role_rule、每图 client_id/position/role/note、渲染 Prompt 快照,以及带 HMAC 的游标历史 API。
不实现浏览器交互页面,不修改登录模型、点数边界或开放注册。
image_generate 不接受图片;image_edit 至少一张且恰好一个 primary;metadata 与文件一一对应,position 从 0 连续唯一,role 固定 primary/reference,note 最多 500,role_rule 做 UTF-8/大小校验。Prompt 覆盖顺序固定为模板默认 → 非空用户 rule → 按 position 图片 role/note,最终 endered_prompt 一次性落库。历史使用 user_id 作用域 HMAC base64url cursor,不得退回 offset。
c3e8f1f
024a949
main
files[<client_id>]
admin/config/settings.yml
chorus_test
chorus
abef747ecc01c1538c376d9c35a299d3bc4fb3c5
789e2356d62592d8bd6e6d094036b9eaa99c3110
Task-25-MVP-1-portal-提交契约与游标历史
e4391526ddfbd5327b37f5cd3efde6dc765cf73e
docs/task/
No dependencies set.
The note is not visible to the blocked user.
基本信息
原始需求
文档影响
交付文档影响
变更控制
依赖与并行
目标与范围
扩展 portal handler/service 以处理 image_generate、image_edit 的 multipart metadata、role_rule、每图 client_id/position/role/note、渲染 Prompt 快照,以及带 HMAC 的游标历史 API。
不实现浏览器交互页面,不修改登录模型、点数边界或开放注册。
已确认方案
image_generate 不接受图片;image_edit 至少一张且恰好一个 primary;metadata 与文件一一对应,position 从 0 连续唯一,role 固定 primary/reference,note 最多 500,role_rule 做 UTF-8/大小校验。Prompt 覆盖顺序固定为模板默认 → 非空用户 rule → 按 position 图片 role/note,最终
endered_prompt 一次性落库。历史使用 user_id 作用域 HMAC base64url cursor,不得退回 offset。
验收标准
验证
实施结果与证据(2026-08-22)
c3e8f1f;验收文档提交:024a949,均已推送至main。files[<client_id>]一一对应、Prompt 覆盖与输入 role/note、用户作用域 HMAC 游标历史;同步链路不调用上游。admin/config/settings.yml的本机 MySQL 8.4.8 连接创建隔离库chorus_test,只通过版本化 up migrations 初始化;handler 集成连续运行和 race 运行通过。未修改chorus业务库。abef747ecc01c1538c376d9c35a299d3bc4fb3c5;Product Requirements revision789e2356d62592d8bd6e6d094036b9eaa99c3110;镜像已同步。Task-25-MVP-1-portal-提交契约与游标历史,revisione4391526ddfbd5327b37f5cd3efde6dc765cf73e;未导出docs/task/。