117 lines
5.4 KiB
Markdown
117 lines
5.4 KiB
Markdown
<!-- gitea-wiki-mirror:start -->
|
||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||
wiki_page: Common-Changes
|
||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Common-Changes.-
|
||
wiki_revision: d7d778dd5f6e2a2b007371c6ce07f8adc4469638
|
||
synchronized_at: 2026-08-20T08:30:34Z
|
||
<!-- gitea-wiki-mirror:end -->
|
||
|
||
# 常见修改指南
|
||
|
||
本页面向接手维护的初级程序员。先判断风险,再按工单范围修改;数据库、权限、密钥、SSRF、队列和生产代码生成都不是“顺手调整”。
|
||
|
||
## 风险分级
|
||
|
||
| 级别 | 例子 | 处理方式 |
|
||
|---|---|---|
|
||
| 低 | 不改变含义/布局/可访问性的显示文案,注释,文档措辞 | 最小验证;符合豁免时可不建单 |
|
||
| 中 | 已确认页面的小样式、只读字段、普通日志、mock Provider 配置 | 建单并运行受影响测试 |
|
||
| 高 | retryable、SSRF、加密/轮换、迁移、租约/CAS、身份权限、点数写入、删除/清理 | 停止,Agent 分析并等待人工确认 |
|
||
|
||
风险按影响判断,不按行数判断。`internal/core` 新增 Gin/go-admin/gobreaker/imaging import 也是高风险边界破坏。
|
||
|
||
## 修改用户端显示文案
|
||
|
||
1. 在 `portal/web/templates/` 定位文案。
|
||
2. 不改模板名、字段、国际化键、流程暗示、布局或可访问性。
|
||
3. 启动 portal,在 375/768/1024 宽度检查文字不溢出、不遮挡且状态含义准确。
|
||
|
||
错误提示、按钮含义或会影响用户判断的文字不是纯显示豁免,必须建单。
|
||
|
||
## 修改 prompt template
|
||
|
||
默认模板是 `prompt_templates` 数据,不是 Go 常量:
|
||
|
||
- MVP-0 只读取 kind 默认模板,第一张图 primary、其余 reference;
|
||
- 2026-08-20 已确认 `chat` 与 `images_edits` 中性默认模板;只开放 `{{.UserPrompt}}`,具体内容见业务规则,不得改回 cmhub 电商文案;
|
||
- MVP-1 才允许用户 role_rule、每图 role/note 和排序;
|
||
- 修改后优先用 mock 生成并核对 `rendered_prompt`,真实上游只做一次经授权的低成本验收。
|
||
|
||
## 增加或调整 ProviderModel
|
||
|
||
1. Provider 只配置 `base_url` 和加密 Key;在 ProviderModel 选择 `api_type`、模型、能力、`extra_body` 和超时。
|
||
2. 验证 URL 会经过 DNS/DialContext、redirect、IPv6、代理和结果 URL 防护。
|
||
3. 自动验证使用 mock。管理端“连通性测试”必须由操作者点击、单次低成本、带审计和冷却。
|
||
4. API Key 不得出现在参数回显、响应、日志、截图、工单或 Wiki。
|
||
|
||
新增协议形态必须建高风险工单,补齐 retryable 与 SSRF 测试。
|
||
|
||
## 数据库与 go-admin 代码生成
|
||
|
||
标准流程:
|
||
|
||
```text
|
||
写 migrations up/down → 空 MySQL 8 up/down/up
|
||
→ 隔离 codegen 库执行 up → go-admin-ui 导入已有表
|
||
→ 配置/预览/生成 → 人工审查
|
||
→ 菜单/API 配置转成可逆 SQL → 从空库全量重放
|
||
```
|
||
|
||
- 不在应用启动、部署或生产执行 AutoMigrate。
|
||
- AutoMigrate 只可由人工在额外可丢弃数据库研究固定提交结构,用完销毁。
|
||
- “生成迁移脚本”不是业务 DDL;`/gen/todb` 会改菜单,`/gen/toproject` 会写源码。
|
||
- 生成文件不是可信输入:检查敏感字段、权限、路由、路径、重复代码和无关格式化。
|
||
- 生产必须不注册 dev-tools 路由,隐藏菜单不够。
|
||
|
||
## 修改 Wiki 文案
|
||
|
||
长期文档以 Gitea Wiki 为事实来源:
|
||
|
||
```text
|
||
修改 Wiki → 在线回读 revision → sync 导出 docs → sync --check → 提交
|
||
```
|
||
|
||
```powershell
|
||
$env:GITEA_URL = "https://git.ilapage.cn"
|
||
python dev_scripts/harness.py sync
|
||
python dev_scripts/harness.py sync --check
|
||
```
|
||
|
||
不得直接编辑带 `generated: true` 的镜像。新建项目专用页面时更新 `wiki-docs.json` 和 Home 导航;若要把它提升为所有项目强制核心文档,再同步修改 Harness 与成功/失败测试。
|
||
|
||
## 调整 Harness 检查
|
||
|
||
1. 修改 `CORE_DOCUMENT_REQUIREMENTS`、`REQUIRED_FILES` 或模板字段。
|
||
2. 同时补成功和失败用例。
|
||
3. 执行:
|
||
|
||
```powershell
|
||
python -m unittest discover -s tests -v
|
||
python dev_scripts/harness.py check --strict
|
||
```
|
||
|
||
不要为了让检查变绿而削弱安全、Wiki 主源或任务归档边界。
|
||
|
||
## 看懂 Agent 的修改
|
||
|
||
1. **范围**:文件与工单一致,无无关重构。
|
||
2. **依赖**:core 只含 GORM/标准库;platform 通过接口注入。
|
||
3. **同步链路**:提交不调用上游、不读写点数。
|
||
4. **状态**:不把 running 退回 pending;最终写入校验 lease_token,旧 worker 更新 0 行。
|
||
5. **错误**:retryable 四类正确,attempts/error 脱敏落库。
|
||
6. **安全**:请求/redirect/result URL 都走 SSRF;文件访问校验用户归属;浏览器写操作有 CSRF。
|
||
7. **迁移**:所有表和配置都有 up/down、空库验证,无 AutoMigrate。
|
||
8. **生成代码**:差异已人工审查,生产 dev-tools 不存在。
|
||
9. **UI**:完整状态、375/768/1024、键盘、焦点、44px、reduced-motion。
|
||
10. **证据**:测试是真实执行结果,未验证项写入工单。
|
||
|
||
## 必须停止的情况
|
||
|
||
- 修改 retryable、熔断、SSRF、密钥、租约/CAS、身份权限或迁移;
|
||
- 执行 AutoMigrate、`/gen/todb`、生产代码生成或手工改共享/生产库;
|
||
- 写点数、删除数据/文件、运行清理任务或做不可逆回退;
|
||
- 调整上传/超时/租约/保留期限等未确认生产阈值;
|
||
- 改变已确认原型的结构、流程、状态、权限或异常处理;
|
||
- 真实上游测试可能反复消耗额度;
|
||
- 无法判断风险或同一位置两次仍无根因。
|