Files
cmautobuy/docs/task/223-Admin-AI服务商BaseURL兼容HTTP.md
T
2026-08-14 11:16:25 +08:00

65 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 223 Admin:AI 服务商 Base URL 兼容 HTTP
- 类型:需求
- 父级大工单:#14
- 所属 MVP / 版本:#199 / AI规格批量匹配
- 状态:已完成,待用户验收
- 日期:2026-08-14
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/223
## 背景与目标
AI 服务商 Base URL 原来只接受 HTTPS,无法接入仅提供 HTTP 的 OpenAI 兼容服务。
本任务按用户确认的范围同时支持 HTTP 和 HTTPS,不增加协议开关、允许列表字段或其他配置项,
并保留现有外部地址安全校验。
## 最终方案
`AIEndpointPolicy.ValidateSyntax` 现在明确只接受 `http` 和 `https` 两种协议,并把协议名规范
为小写。两种协议共用原有的 URL 凭据、查询参数、片段、私网、回环、链路本地、元数据、
DNS 解析、实际拨号和重定向校验。现有部署级 `allowed_hosts` 仍是私有模型端点的唯一例外,
没有新增 HTTP 专用配置。
自动化测试除语法规则外,还启动本机临时 HTTP 服务,通过现有测试级允许列表完成一次最小
OpenAI 兼容连接请求,验证安全 HTTP 客户端能够实际使用 HTTP。HTTPS 原有行为继续保留。
配置页保持现有表单结构和可见标签,只把新增示例改为 HTTP,并增加持续可见的说明:HTTP 会
明文传输 API Key 和匹配请求,只应在可信网络使用。该提示遵循 `ui-ux-pro-max` 的表单帮助
文字建议,没有增加额外确认步骤。
## 改了哪些
- `admin/service/ai_config.go`:允许 HTTP/HTTPS 并拒绝其他协议。
- `admin/service/ai_config_test.go`:增加双协议、危险地址、现有允许列表和真实临时 HTTP 服务测试。
- `admin/templates/ai/list.html`:更新 Base URL 示例并显示 HTTP 明文传输说明。
- `admin/config.example.yaml`:更新现有 AI 端点配置注释,不增加字段。
- `docs/admin/02-architecture.md`:同步双协议和安全边界。
- `docs/admin/03-data-model.md`:把 Base URL 口径更新为 HTTP/HTTPS。
- `docs/admin/06-quality-security.md`:记录 HTTP 明文传输风险。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 合法 HTTP 地址可以保存并由安全客户端调用 | 通过 |
| 现有 HTTPS 行为保持不变 | 通过 |
| HTTP/HTTPS 都拒绝 URL 凭据、查询参数和片段 | 通过 |
| HTTP 不绕过私网、回环、元数据和现有网络校验 | 通过 |
| 不增加配置项,不修改 schema 和密钥存储 | 通过 |
| 固定 Go 1.23.0 的 build、test、vet | 通过 |
## 测试
- 执行的命令:
- `$env:GOTOOLCHAIN='go1.23.0'; go test ./service -run 'TestAIEndpointPolicy|TestSafeAIHTTPClient|TestCallAIHealthCheck' -count=1`
- `$env:GOTOOLCHAIN='go1.23.0'; go build ./...; go test ./... -count=1; go vet ./...`
- `$env:GOTOOLCHAIN='go1.23.0'; go test ./handler/web ./service -count=1`
- `git diff --check`
- 结果:定向回归、固定 Go 1.23.0 全量构建、测试、vet 和模板相关测试全部通过。
- **没验证到的部分**:未连接真实 HTTP AI 服务商,未使用真实 API Key;未部署生产 Admin,
未在 1366×768 浏览器中人工检查提示文字。
## 相关提交
- `1e0b7ad` feat: AI 服务商接口兼容 HTTP (#223)