docs: 更新 #24 管理端实现与验证
@@ -36,11 +36,10 @@
|
||||
| `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_ADMIN_ALLOW_CONNECTIVITY_PROBES` | 默认不设置或 `0`,管理端拒绝连通性探测;只有人工授权真实探测时才设为 `1` |
|
||||
| `CHORUS_ADMIN_CONNECTIVITY_COOLDOWN_SECONDS` | 探测已授权时的正整数冷却;未授权时不需要 |
|
||||
| `CHORUS_PROVIDER_HTTP_TIMEOUT_SECONDS` / `CHORUS_PROVIDER_MAX_RESPONSE_BYTES` | 探测已授权时的正整数安全 HTTP 限制 |
|
||||
| `CHORUS_SESSION_KEY` | portal 会话,必须与主密钥分离 |
|
||||
| `CHORUS_SESSION_KEY` | portal 会话密钥;不得与数据库、JWT 或其他凭据复用 |
|
||||
| `CHORUS_STORAGE_ROOT` | 受保护生成物目录 |
|
||||
| `CHORUS_ENV` | `development/test/production`,生产强制安全开关 |
|
||||
| `CHORUS_SESSION_TTL_MINUTES` | 会话有效分钟数;生产必填 |
|
||||
@@ -139,7 +138,7 @@ go run ./cmd/chorus-admin-bootstrap
|
||||
|
||||
### 启动管理端后端(#23)
|
||||
|
||||
先完成 migrations 和管理员 bootstrap。把 `admin/config/settings.example.yml` 复制到仓库外的受保护位置,并在其中设置独立 JWT secret 与数据库连接;示例文件不得填入真实值。当前终端安全注入 `CHORUS_MASTER_KEY` 后启动:
|
||||
先完成 migrations 和管理员 bootstrap。把 `admin/config/settings.example.yml` 复制到仓库外的受保护位置,并在其中设置独立 JWT secret 与数据库连接;示例文件不得填入真实值。确认数据库已执行全部 migrations,并使用受保护的 settings 文件启动:
|
||||
|
||||
```powershell
|
||||
go -C admin run . server --config "<受保护 settings.yml 路径>"
|
||||
@@ -284,7 +283,7 @@ go -C admin test -count=1 ./...
|
||||
$env:CHORUS_RUN_ADMIN_TESTS = $null
|
||||
```
|
||||
|
||||
覆盖凭据加密、轮换和回退、普通更新不清除凭据、路由发布版本冲突、JWT/Casbin 路由边界、生产模式账号密码登录(无验证码)、禁用探测不出站,以及探测冷却只预留一次。根模块的 migration up/down/up 回归仍需在可丢弃库执行:`go test -count=1 ./migrations -run TestMVP1MigrationsUpDownUpMySQL`。
|
||||
覆盖明文凭据版本切换、列表脱敏、单条读取禁止缓存、普通更新不清除凭据、路由发布版本冲突、JWT/Casbin 路由边界、生产模式账号密码登录(无验证码)、禁用探测不出站,以及探测冷却只预留一次。根模块的 migration up/down/up 回归仍需在可丢弃库执行:`go test -count=1 ./migrations -run TestMVP1MigrationsUpDownUpMySQL`。
|
||||
|
||||
## 完成修改前
|
||||
|
||||
@@ -325,4 +324,14 @@ git diff --check
|
||||
| `CHORUS_PROVIDER_HTTP_TIMEOUT_SECONDS` | 45 | 必须显式设置 |
|
||||
| `CHORUS_PROVIDER_MAX_RESPONSE_BYTES` | 33554432 | 必须显式设置 |
|
||||
|
||||
`CHORUS_TEST_DISABLE_WORKER=true` 仅供 `CHORUS_ENV=test` 的 Playwright fixture 使用。测试 helper 位于 `portal/web/e2e/fixture`,会按构造用户归属写入受控状态和测试图片;不得打包部署,也不得用于开发或生产数据。mock 上游的自动测试通过依赖注入连接本地 fixture,不允许把回环地址加入生产 SSRF 白名单。
|
||||
`CHORUS_TEST_DISABLE_WORKER=true` 仅供 `CHORUS_ENV=test` 的 Playwright fixture 使用。测试 helper 位于 `portal/web/e2e/fixture`,会按构造用户归属写入受控状态和测试图片;不得打包部署,也不得用于开发或生产数据。mock 上游的自动测试通过依赖注入连接本地 fixture,不允许把回环地址加入生产 SSRF 白名单。
|
||||
|
||||
## #24 管理端本地验证(2026-08-22)
|
||||
|
||||
```powershell
|
||||
go -C admin run . server --config admin/config/settings.yml
|
||||
$env:VUE_APP_BASE_API = "http://127.0.0.1:8090"
|
||||
pnpm --dir admin-ui dev
|
||||
```
|
||||
|
||||
管理端不会创建数据库、运行 migration、seed 或 AutoMigrate。首次本地运行先人工创建空库并执行 `migrate -path migrations ... up`,再通过 `chorus-admin-bootstrap` 建立管理员。已验证纯账号密码登录、动态 Chorus 菜单和 Provider 列表 API;Casbin 使用 `sys_casbin_rule`。前端固定基线默认端口为 9527,端口占用时 Vue CLI 会选择下一可用端口。
|
||||
|
||||
Reference in New Issue
Block a user