Files
argon-theme/.kiro/steering/ai-settings-refactor-plan.md
nanhaoluo 2c25caae23 feat: 添加统一 API 系统测试脚本和文档
- 创建 test-unified-api-system.php 测试脚本
- 测试功能包括:函数存在性、数据迁移、API配置、向后兼容等
- 添加阶段性实施计划文档
- 添加新 AI 设置界面草稿
2026-01-26 13:25:49 +08:00

162 lines
5.6 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 设置页面重构方案
## 重构目标
将当前按提供商分组的 API 管理方式改为统一的 API 列表管理,并重新组织 AI 功能的设置结构。
## 当前结构问题
1. **API 管理分散**:每个提供商独立管理 API用户需要在 10 个提供商之间切换
2. **结构不清晰**AI 摘要和评论审核分散在不同的一级分类中
3. **用户体验差**:添加 API 时需要先选择提供商,然后才能配置
## 新结构设计
### 页面结构
```
AI 功能 (独立 h1不在分类编号中)
├── API 管理 (h2)
│ ├── 已配置的 API 列表(统一显示所有提供商的 API
│ └── 添加新 API输入密钥 → 选择提供商 → 选择模型)
├── 文章摘要 (h2)
│ ├── 启用 AI 摘要
│ ├── 默认服务商选择
│ ├── Prompt 设置
│ └── 排除文章设置
└── 评论审核 (h2)
├── 启用 AI 识别
├── 实时检测模式
├── 关键字管理
├── Prompt 模式
└── 其他配置
```
### 数据结构变更
#### 旧数据结构
```php
// 每个提供商独立存储
argon_ai_openai_apis = [
{id: 'api_1', name: '主API', api_key: 'sk-xxx', ...}
]
argon_ai_anthropic_apis = [...]
// ... 10 个提供商
```
#### 新数据结构
```php
// 统一存储所有 API
argon_ai_apis = [
{
id: 'api_1',
name: '主 OpenAI API',
provider: 'openai',
api_key: 'sk-xxx',
api_endpoint: '',
model: 'gpt-4o-mini',
is_active: false,
created_at: 1234567890
},
{
id: 'api_2',
name: '备用 Claude API',
provider: 'anthropic',
api_key: 'sk-ant-xxx',
api_endpoint: '',
model: 'claude-3-5-sonnet-20241022',
is_active: true,
created_at: 1234567891
}
]
// 当前使用的 API按场景
argon_ai_summary_active_api = 'api_1' // 文章摘要使用的 API
argon_ai_spam_active_api = 'api_2' // 垃圾评论检测使用的 API
```
## 实施步骤
### 步骤 1数据迁移函数
创建 `argon_migrate_ai_apis()` 函数,将旧的分散数据迁移到新的统一结构。
### 步骤 2更新核心函数
- 修改 `argon_get_ai_provider_config()` 支持新数据结构
- 添加 `argon_get_all_apis()` 获取所有 API
- 添加 `argon_get_api_by_id($api_id)` 获取指定 API
- 添加 `argon_add_api($config)` 添加 API
- 添加 `argon_update_api($api_id, $config)` 更新 API
- 添加 `argon_delete_api($api_id)` 删除 API
- 添加 `argon_set_active_api_for_scenario($scenario, $api_id)` 设置场景使用的 API
### 步骤 3重构 settings.php
- 移除原有的按提供商分组的 API 配置界面
- 创建新的统一 API 列表界面
- 重新组织 AI 功能的设置结构
### 步骤 4更新 AJAX 处理函数
- 更新所有 API 管理相关的 AJAX 函数
- 支持新的数据结构
### 步骤 5向后兼容
- 在主题加载时自动检测并迁移旧数据
- 保留旧数据作为备份
## 界面设计
### API 管理界面
```
┌─ 已配置的 API ─────────────────────────────────────┐
│ │
│ ● 主 OpenAI API (gpt-4o-mini) │
│ OpenAI (ChatGPT) | sk-xxx... │
│ [测试] [编辑] [删除] │
│ │
│ ○ 备用 Claude API (claude-3-5-sonnet) │
│ Anthropic (Claude) | sk-ant-xxx... │
│ [测试] [编辑] [删除] │
│ │
│ [+ 添加新 API] │
└─────────────────────────────────────────────────────┘
添加/编辑 API:
┌─────────────────────────────────────────────────────┐
│ 配置名称: [主 OpenAI API_________________] │
│ API 密钥: [sk-xxx_______________________] [显示] │
│ 提供商: [OpenAI (ChatGPT) ▼] │
│ API 端点: [_____________________________] (可选) │
│ 模型: [gpt-4o-mini__________________] [刷新] │
│ │
│ [保存] [取消] │
└─────────────────────────────────────────────────────┘
```
### 文章摘要设置
```
启用 AI 摘要: [启用 ▼]
默认使用 API: [主 OpenAI API ▼]
Prompt 设置: [...]
排除文章 ID: [...]
```
### 评论审核设置
```
启用 AI 识别: [☑] 启用 AI 自动识别垃圾评论
默认使用 API: [备用 Claude API ▼]
实时检测模式: [智能抽查 ▼]
...
```
## 优势
1. **统一管理**:所有 API 在一个列表中,一目了然
2. **灵活配置**:不同场景可以使用不同的 API
3. **易于添加**:添加 API 时直接输入密钥和选择提供商
4. **更好的 UX**:不需要在多个提供商之间切换
## 注意事项
1. **数据迁移**:确保旧数据能够正确迁移到新结构
2. **向后兼容**:保留旧数据作为备份,以防迁移失败
3. **测试充分**:需要测试所有 AI 功能是否正常工作
4. **文档更新**:更新用户文档说明新的配置方式