docs: record Go schema baseline (#6)

This commit is contained in:
ila
2026-08-20 23:08:53 +08:00
parent de49b4d483
commit 470b54c89e
3 changed files with 42 additions and 14 deletions
+9 -8
View File
@@ -2,8 +2,8 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Project-Profile
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Project-Profile.-
wiki_revision: 3bbe90891a4d2bdf0f6af5160f0b687792e0f19f
synchronized_at: 2026-08-20T14:49:59Z
wiki_revision: 662746817d09f4d182c6cf6db71e963d330141e8
synchronized_at: 2026-08-20T15:04:43Z
<!-- gitea-wiki-mirror:end -->
# 项目档案
@@ -106,7 +106,7 @@ synchronized_at: 2026-08-20T14:49:59Z
## 常用命令
所有命令默认从仓库根目录执行。标注“MVP-0 落地后可用”的命令在首个实现工单完成前不存在。
所有命令默认从仓库根目录执行。Go 骨架、配置、迁移和种子命令已由 #6 落地;HTTP 服务仍需等待对应实现工单。
| 用途 | 命令 | 预期结果 |
|---|---|---|
@@ -114,11 +114,12 @@ synchronized_at: 2026-08-20T14:49:59Z
| 检查文档结构 | `python dev_scripts/harness.py check --strict` | 输出“DevHarness 检查通过” |
| 运行 Harness 测试 | `python -m unittest discover -s tests -v` | 所有测试通过 |
| 检查核心 Wiki 镜像 | `python dev_scripts/harness.py sync --check` | Wiki 初始化后输出核心镜像一致 |
| 编译(MVP-0 落地后可用) | `go build ./...` | 无错误 |
| 单元测试(MVP-0 落地后可用) | `go test ./...` | 全部通过 |
| 静态检查(MVP-0 落地后可用) | `go vet ./...` | 无输出 |
| 数据库迁移(MVP-0 落地后可用) | `migrate -path migrations -database "$CHORUS_DSN" up` | 迁移版本前进且无错误 |
| 启动用户端(MVP-0 落地后可用) | `go run ./portal` | 监听 `:8080`,日志显示 worker 已启动 |
| 编译 | `go build ./...` | 无错误 |
| 单元测试 | `go test ./...` | 全部通过 |
| 静态检查 | `go vet ./...` | 无输出 |
| 数据库迁移 | `migrate -path migrations -database "$CHORUS_MIGRATE_URL" up` | 迁移版本前进且无错误 |
| 幂等种子 | `go run ./cmd/chorus-seed` | 只输出完成状态,不输出凭据 |
| 启动用户端(#11 后可用) | `go run ./portal` | 当前 #6 仅校验配置并退出;#11 才监听 HTTP |
## 目录边界
+10 -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: 5ecd4ee8ad3522e75cb8fc0f031238c3beaac85a
synchronized_at: 2026-08-20T08:30:20Z
wiki_revision: a4a15b3cdb690590a8ce7a85edc42cfc7c400a2d
synchronized_at: 2026-08-20T15:08:05Z
<!-- gitea-wiki-mirror:end -->
# 架构与代码地图
@@ -50,6 +50,14 @@ chorus/
MVP-0 第一张上传图自动作为 `primary`,其余为 `reference`;不提供角色编辑、备注和拖拽。默认中性模板已于 2026-08-20 确认,使用 Go `text/template` 且只开放 `{{.UserPrompt}}`,具体内容见业务规则;模板作为数据管理,不硬编码。
### #6 已落地的共享基线
- `go.mod` 固定 Go 1.26.5;`internal/config` 只从环境读取配置,生产缺少 DSN、会话密钥、Provider 主密钥或存储目录时失败关闭且不输出值。
- `migrations/000001_mvp0_base` 建立 `users`、`providers`、`provider_models`、`prompt_templates`、`generations`、`generation_inputs`、`generation_outputs`,生产启动不调用 AutoMigrate。
- 迁移显式定义用户幂等唯一键、队列/历史索引、5 个外键和删除规则,以及状态、租约、错误、attempt 数组和输出内容检查约束。
- `internal/seed/defaults.json` 保存已确认 Prompt 和 mock ProviderModel 数据;`cmd/chorus-seed` 在事务中幂等 upsert 构造用户、mock Provider/Model 和 Prompt,不保存或输出明文凭据。
- `portal` 当前只是配置门禁骨架,尚未注册 HTTP 路由或 worker;后续工单不得把它当作已完成服务。
## 代码地图
| 想改什么 | 从哪里开始读 | 必要验证 |
+23 -4
View File
@@ -2,8 +2,8 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Local-Development-and-Verification
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Local-Development-and-Verification.-
wiki_revision: c5dd8e3415c206839b1252ae32c61f48bdb21198
synchronized_at: 2026-08-20T14:51:55Z
wiki_revision: c26069b43dadcab393678caf8f579c13cfa90068
synchronized_at: 2026-08-20T15:08:16Z
<!-- gitea-wiki-mirror:end -->
# 本地开发与验证
@@ -37,7 +37,10 @@ synchronized_at: 2026-08-20T14:51:55Z
| 变量 | 用途 |
|---|---|
| `CHORUS_DSN` | MySQL 连接 |
| `CHORUS_DSN` | Go 应用和种子命令使用的 GORM/MySQL DSN |
| `CHORUS_MIGRATE_URL` | golang-migrate 专用 MySQL URL |
| `CHORUS_SEED_USER_EMAIL` / `CHORUS_SEED_USER_PASSWORD` | 构造种子用户;仅通过环境注入 |
| `CHORUS_SEED_PROVIDER_BASE_URL` | mock Provider 基础 URL;不得指向生产 |
| `CHORUS_MASTER_KEY` / 对应 key ring 配置 | Provider Key AES-GCM 解密与轮换 |
| `CHORUS_SESSION_KEY` | portal 会话,必须与主密钥分离 |
| `CHORUS_STORAGE_ROOT` | 受保护生成物目录 |
@@ -98,7 +101,23 @@ mysql --protocol=tcp --host=$env:CHORUS_MYSQL_HOST `
$env:MYSQL_PWD = $null
```
业务迁移落地后,每个迁移必须在该隔离库执行 up、down、再 up,并从空库重放全部迁移。`chorus_codegen` 只在 MVP-1 的 go-admin 结构研究/代码生成工单中另行创建,不提前扩大当前账号权限。
#6 已提供首个迁移和幂等种子命令。只在明确的隔离库执行:
```powershell
migrate -path migrations -database $env:CHORUS_MIGRATE_URL up
$env:CHORUS_SEED_USER_EMAIL = "mvp0-test@chorus.invalid"
$env:CHORUS_SEED_USER_PASSWORD = "<本次构造密码>"
$env:CHORUS_SEED_PROVIDER_BASE_URL = "<mock 上游 URL>"
go run ./cmd/chorus-seed
go run ./cmd/chorus-seed
migrate -path migrations -database $env:CHORUS_MIGRATE_URL down -all
migrate -path migrations -database $env:CHORUS_MIGRATE_URL up
```
两次种子执行后应仍是一个构造用户、一个 mock Provider、两个 ProviderModel 和两个 Prompt。`down -all` 会删除隔离库业务数据,只能用于明确可丢弃的测试库。`chorus_codegen` 只在 MVP-1 的 go-admin 结构研究/代码生成工单中另行创建,不提前扩大当前账号权限。
### 3. go-admin schema-first 生成(MVP-1)
1. 先在 `chorus_codegen` 执行同一套版本化 SQL。