Files
qiweimanager-master/config/docs/万川平台对接-实施计划.md
yuanzhipeng a926ee6b1b chore(build): 更新.gitignore配置和清理Wails临时文件
- 添加dist/目录到.gitignore,用于排除打包输出的绿色免安装版
- 添加Wails打包过程中的临时文件和自动生成文件到.gitignore
- 删除build/windows/installer/wails_tools.nsh自动生成文件
- 添加Windows安装器临时目录和Webview2安装文件到忽略列表

feat(docs): 添加万川平台对接文档和产品素材

- 创建万川平台登录到获取模型信息的流程说明文档
- 添加万川平台对接实施计划文档
- 新增产品图片、公司简介图、宣传海报、教程截图、案例展示等素材文件

refactor(runtime): 扩展通知功能类型定义

- 添加NotificationOptions接口定义
- 添加NotificationAction接口定义
- 添加NotificationCategory接口定义
- 扩展通知相关的运行时API类型声明,包括初始化、发送、注册分类等功能
2026-06-25 18:13:11 +08:00

109 lines
4.8 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.
# 万川平台对接 — 实施计划
> 本文为对接万川 AI 平台(登录 → 拉取模型配置)的实施计划。
> 接口契约见同目录 [万川平台-登录到获取模型信息-流程说明.md](万川平台-登录到获取模型信息-流程说明.md)。
## 范围
### 本期做
登录平台 → 拉模型配置 → **log 打印**。平台凭证可编辑、可持久化、可重置。
### 本期不做(留第二期)
- 回填 AI 表单(`form.ai.*`
-`SaveAutoReplyConfig` 落盘 + 推 helper 重载
理由:先打印确认平台返回的数据结构与解析结果正确,再接回填与保存。
## 架构决策
- **Go 只做透传代理 + 凭证存取**,不碰业务解析。仅用于绕开 WebView 的 CORS 限制。
- **业务逻辑全在前端**:取 token、按 code 拉取、解析 `encryptedConfig`、字段映射。
- **持久化存 `config/config.json`**exe 同级,重启自动恢复,与浏览器无关),新增 `platformConfig` 段。不使用 localStorage。
- ⚠️ 密码以明文存在 config.json本地桌面工具常见做法。如需更稳可加简单混淆但非真加密。
## 一、Go 端
新文件:`wanchuan_proxy.go`(与 [app.go](../../app.go) 同级main 包)。
### 1.1 透传代理方法(绑定到 App
| 方法 | 行为 |
|------|------|
| `WanchuanLogin(baseUrl, username, password string) string` | POST `{baseUrl}/api/login`body `{username, password, loginType:"user"}`**原样返回**平台响应 JSON 字符串;日志打印(密码/token 打码) |
| `WanchuanGetModel(baseUrl, code, token string) string` | GET `{baseUrl}/api/system/model/getByCode/{code}`;带头 `Authorization: Bearer {token}``token: Bearer {token}`**原样返回**响应 JSON日志打印 |
不解析 token、不合并字段、不存盘——平台返什么就返什么。
### 1.2 凭证存取方法(绑定到 App
| 方法 | 行为 |
|------|------|
| `GetPlatformConfig() interface{}` | 读 config.json 的 `platformConfig` 段回前端 |
| `SavePlatformConfig(jsonData string) (bool, string)` | 存 `platformConfig` 段(重置 = 存空值) |
### 1.3 config 结构改动
[config/types.go](../types.go) 新增结构并挂到 `Config`
```go
type PlatformConfig struct {
BaseURL string `json:"baseUrl"`
Username string `json:"username"`
Password string `json:"password"`
}
// Config 增加字段:
// PlatformConfig PlatformConfig `json:"platformConfig"`
```
[config/config_manager.go](../config_manager.go) 新增 `UpdatePlatformConfig`,复用现有 `SaveGlobalConfig`
> 改了 App 方法后需跑 `wails dev` / `wails build` 重新生成 `frontend/wailsjs/go/main/App.js` 绑定。
## 二、前端
文件:[frontend/src/components/AutoReply.vue](../../frontend/src/components/AutoReply.vue),在 AI 配置区(`#auto-section-ai`02顶部新增「万川平台」卡片。
### 2.1 UI
- 输入框:平台地址 / 账号 / 密码(绑 reactive挂载时 `GetPlatformConfig` 回填,可编辑)
- 按钮「登录并获取模型」
- 按钮「重置」:清空凭证(`SavePlatformConfig` 存空)后重新走一次流程
### 2.2 「登录并获取模型」逻辑
1. `SavePlatformConfig(当前输入)` 先存凭证
2. `WanchuanLogin(url, user, pwd)``JSON.parse` → 多路径取 token
`token` / `data.token` / `data.access_token` / `access_token`
3. 依次 `WanchuanGetModel(url, code, token)`
- `generic`(必拉)
- `vision``voice`(可选,失败跳过)
4. 每个响应取 `data.providerModels`,对 `encryptedConfig` 做**二次 `JSON.parse`**
`{ modelName, apiKey, endpointUrl }`
5. **`console.log` + `LogFrontend` 打印**原始响应与解析结果 —— **到此为止。**
### 2.3 字段映射(供第二期参考)
| 万川 code | 解析字段 | AIConfig 字段 |
|-----------|---------|---------------|
| `generic` | endpointUrl / apiKey / modelName | `baseUrl` / `apiKey` / `model` |
| `vision` | endpointUrl / apiKey / modelName | `visionBaseUrl` / `visionApiKey` / `visionModel` |
| `voice` | endpointUrl / apiKey / modelName | `audioBaseUrl` / `audioApiKey` / `audioModel` |
`summary_*` 无对应业务,忽略;知识库列表不拉。)
## 三、验证
- `go build` 通过;`wails dev` 起来后在 AI 配置区填真实平台地址/账号/密码,点「登录并获取模型」,
看浏览器控制台和后端日志打印出 generic/vision/voice 的解析结果,确认 `endpointUrl/apiKey/modelName` 拿对。
- 重启应用,确认账号密码自动回填(持久化生效)。
- 点「重置」,确认凭证清空。
## 四、第二期(确认数据无误后)
把 2.2 第 5 步从"打印"改为:
- 按 2.3 映射回填 `form.ai.*`
- 调现有 `SaveAutoReplyConfig(form)` 落盘 + 推 helper 重载
至此 AI 配置实现平台动态下发。