docs: record core contracts (#7)

This commit is contained in:
ila
2026-08-20 23:22:32 +08:00
parent 11789d8071
commit 62017df9b0
+11 -2
View File
@@ -2,8 +2,8 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Architecture-and-Code-Map
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Architecture-and-Code-Map.-
wiki_revision: a4a15b3cdb690590a8ce7a85edc42cfc7c400a2d
synchronized_at: 2026-08-20T15:08:05Z
wiki_revision: 525b833916552d1f2203ef462ea42f5e8a853270
synchronized_at: 2026-08-20T15:21:40Z
<!-- gitea-wiki-mirror:end -->
# 架构与代码地图
@@ -58,6 +58,15 @@ MVP-0 第一张上传图自动作为 `primary`,其余为 `reference`;不提
- `internal/seed/defaults.json` 保存已确认 Prompt 和 mock ProviderModel 数据;`cmd/chorus-seed` 在事务中幂等 upsert 构造用户、mock Provider/Model 和 Prompt,不保存或输出明文凭据。
- `portal` 当前只是配置门禁骨架,尚未注册 HTTP 路由或 worker;后续工单不得把它当作已完成服务。
### #7 已落地的核心契约
- `internal/core/model` 的 7 个 GORM 模型按 #6 migration version 1 映射,schema 单测核对完整列集合;状态只允许 `pending → running → succeeded|failed`,终态不可回退。
- `internal/core/provider`、`queue`、`storage`、`crypto` 和 model 仓储接口只表达 MVP-0 所需能力;core 不 import Gin、go-admin、gobreaker、imaging 或具体 HTTP/文件系统实现。
- `internal/core/generate` 使用 Go `text/template` 解析数据模板,但只接受直接的 `.UserPrompt` 插值;空输入、非法语法、缺少/未知变量和额外模板构造均失败关闭。chat 保留用户原文,images_edits 渲染结果与已确认模板逐字一致。
- 图片输入复制后按上传顺序写入 position,第一张为 `primary`、其余为 `reference`;调用方可直接把返回值和 rendered prompt 持久化。
- `internal/core/router` 固定 HTTP 429/5xx、超时和连接错误为 retryable,400/401、内容策略拒绝及未知错误为不可重试;MVP-0 仍只调用唯一启用模型,不执行换家。
- GORM 固定为用户指定 go-admin 提交使用的 v1.31.2;生产启动和 core 均没有 AutoMigrate。
## 代码地图
| 想改什么 | 从哪里开始读 | 必要验证 |