Files
param-auto-manager/README.md
T

443 lines
11 KiB
Markdown
Raw Permalink Normal View History

2026-07-12 01:07:26 +08:00
# Param Auto Manager - 参数数据自动化管理系统
自动管理参数数据网站的系统,支持从内容库和互联网搜索数据,自动处理产品并提交到后台管理待审核区。
## 功能特性
- 📚 **内容库管理**:存储和管理搜索获取的相关文章内容
- 🔄 **自动处理流程**:自动从待处理列表中提取产品并处理
- 🔍 **智能搜索**:从内容库和互联网搜索相关数据
- 🤖 **大模型驱动**:直接调用大模型接口完成智能体任务(不再使用 openclaw 智能体)
- 步骤4 提取产品数据 → 大模型筛选相关内容
- 步骤5 填充字段 → 大模型生成产品数据并检查格式
- 步骤6 提交审核 → 直接调用 ParamHub API
- 🧠 **多模型管理**:前端可新增/编辑/删除/切换大模型配置,随时换模型
- OpenAI 兼容接口(base_url + api_key + model_name
- 支持最大上下文窗口配置
- 一键测试连接
2026-07-12 01:07:26 +08:00
-**审核提交**:自动提交到ParamHub后台管理待审核区
- 🕐 **定时任务**:支持定时自动处理产品
- 🔧 **后台任务系统**:抓取任务在后台持续运行,不受页面刷新影响
- 一键抓取触发后,任务在后台独立运行
- 可随时查看任务进度和状态
- 支持手动停止正在运行的任务
- 自动记录成功/失败/保存数量
2026-07-16 23:35:39 +08:00
- 🛡️ **产品状态检查**:处理前自动检查产品是否已存在
- 检查已发布产品(模型/GPU/CPU)
- 检查待审核产品
- 已存在则自动跳过,避免重复处理
2026-07-17 00:24:11 +08:00
- ⚠️ **异常产品管理**:自动识别无法处理的产品
- 内容库和互联网均无搜索结果时存入异常库
- 支持人工排查和重新处理
- 提供异常产品列表、详情、解决、删除 API
2026-07-12 01:07:26 +08:00
## 系统架构
```
param-auto-manager/
├── app.py # 主应用入口
├── config.py # 配置文件
├── requirements.txt # Python依赖
├── models/
│ └── database.py # 数据库模型(含 llm_configs 大模型配置表)
2026-07-12 01:07:26 +08:00
├── routes/
│ ├── articles.py # 文章内容库API
│ ├── products.py # 产品处理API
│ ├── system.py # 系统管理API
│ ├── process_monitor.py # 处理步骤监控API
│ └── llm.py # 大模型配置管理API
2026-07-12 01:07:26 +08:00
├── services/
│ ├── search_service.py # 搜索服务
│ ├── process_service.py # 数据处理服务
│ ├── process_monitor.py # 处理流程监控(大模型驱动)
│ ├── llm_client.py # 大模型调用客户端(多模型管理)
2026-07-12 01:07:26 +08:00
│ └── paramhub_client.py # ParamHub API客户端
├── utils/
│ └── scheduler.py # 定时任务调度器
├── data/ # 数据库文件目录
└── logs/ # 日志文件目录
```
## 安装依赖
```bash
cd works/param-auto-manager
pip install -r requirements.txt
```
## 启动服务
```bash
# 方式1: 使用启动脚本
chmod +x start.sh
./start.sh
# 方式2: 直接运行
python3 app.py
```
服务将在端口 **16043** 启动。
## API 文档
### 文章内容库 API (`/api/articles`)
#### 获取文章列表
```
GET /api/articles?limit=100&offset=0
```
#### 搜索文章
```
GET /api/articles/search?q=关键词&category=分类
```
#### 获取文章详情
```
GET /api/articles/{article_id}
```
#### 创建文章
```
POST /api/articles
Content-Type: application/json
{
"product_names": ["产品A", "产品B"],
"category": "AI模型",
"keywords": ["关键词1", "关键词2"],
"summary": "文章摘要",
"content": "文章内容",
"source": "来源",
"url": "原文链接"
}
```
#### 从URL抓取文章
```
POST /api/articles/fetch
Content-Type: application/json
{
"url": "https://example.com/article",
"product_names": ["产品A"],
"category": "分类"
}
```
#### 删除文章
```
DELETE /api/articles/{article_id}
```
### 产品处理 API (`/api/products`)
#### 获取待处理产品列表
```
GET /api/products/pending?limit=20&order_by=priority
```
#### 添加待处理产品
```
POST /api/products/pending
Content-Type: application/json
{
"product_name": "产品名称",
"category": "分类",
"subcategory": "子分类",
"priority": 10,
"source": "manual"
}
```
#### 批量添加待处理产品
```
POST /api/products/pending
Content-Type: application/json
[
{"product_name": "产品1", "category": "分类"},
{"product_name": "产品2", "category": "分类"}
]
```
#### 移除待处理产品
```
DELETE /api/products/pending/{product_name}
```
#### 获取处理中的产品
```
GET /api/products/processing
```
#### 获取处理历史
```
GET /api/products/history?limit=100
```
#### 获取指定产品的处理历史
```
GET /api/products/history/{product_name}
```
#### 处理单个产品
```
POST /api/products/process
Content-Type: application/json
{
"product_name": "产品名称",
"category": "分类",
"subcategory": "子分类"
}
```
#### 批量处理产品
```
POST /api/products/process/batch
Content-Type: application/json
{
"limit": 5
}
```
### 后台任务 API (`/api/tasks`)
#### 启动后台抓取任务
```
POST /api/tasks/start
Content-Type: application/json
{
"results": [{"title": "标题", "url": "https://..."}],
"auto_save": true,
"category": "分类",
"keywords": ["关键词"]
}
```
#### 获取任务状态
```
GET /api/tasks/{task_id}/status
```
#### 停止任务
```
POST /api/tasks/{task_id}/stop
```
#### 获取活动任务列表
```
GET /api/tasks/active
```
#### 获取最近任务
```
GET /api/tasks/recent?limit=20
```
#### 删除任务记录
```
DELETE /api/tasks/{task_id}
```
#### 清理已完成任务
```
POST /api/tasks/clear
```
2026-07-12 01:07:26 +08:00
### 系统管理 API (`/api/system`)
#### 获取系统配置
```
GET /api/system/config
```
#### 更新系统配置
```
PUT /api/system/config
Content-Type: application/json
{
"auto_process_enabled": "true",
"process_interval": "300",
"batch_size": "5"
}
```
#### 获取系统统计
```
GET /api/system/stats
```
#### 健康检查
```
GET /api/system/health
```
### 大模型配置 API (`/api/llm`)
#### 获取所有大模型配置
```
GET /api/llm/configs
```
#### 获取当前激活的大模型配置
```
GET /api/llm/configs/active
```
#### 新增大模型配置
```
POST /api/llm/configs
Content-Type: application/json
{
"name": "本地Qwen3.6",
"base_url": "http://192.168.2.7:18003/v1",
"api_key": "sk-xxxx",
"model_name": "unsloth/Qwen3.6-27B-Q4_K_M",
"max_context": 262144
}
```
#### 更新大模型配置
```
PUT /api/llm/configs/{config_id}
```
#### 删除大模型配置(激活中的不能删)
```
DELETE /api/llm/configs/{config_id}
```
#### 切换激活的大模型
```
POST /api/llm/configs/{config_id}/activate
```
#### 测试大模型连接
```
POST /api/llm/test
Content-Type: application/json
# 不传 config 则测试当前激活配置;传 config 测试指定配置
{"config": {"base_url": "...", "api_key": "...", "model_name": "..."}}
```
2026-07-12 01:07:26 +08:00
## 处理流程
1. **添加待处理产品**:手动添加或系统自动发现新产品
2026-07-16 23:35:39 +08:00
2. **产品状态检查**
- 检查产品是否已在 ParamHub 系统中
- 检查已发布产品(模型/GPU/CPU)
- 检查待审核列表
- 如已存在则跳过后续处理
3. **自动/手动触发处理**(大模型驱动):
2026-07-12 01:07:26 +08:00
- 从内容库搜索相关文章
- 从互联网搜索最新数据
- 步骤4:调用**大模型**筛选与产品直接相关且对参数提取有用的内容(替代原智能体)
- 步骤5:调用**大模型**根据相关内容生成产品数据并检查格式(替代原智能体)
- 步骤6:直接调用 ParamHub API 提交到待审核区(不再依赖智能体)
2026-07-16 23:35:39 +08:00
4. **发现新产品**:处理过程中自动发现并添加相关产品
2026-07-12 01:07:26 +08:00
> **大模型配置**:系统所有智能体任务均由当前激活的大模型直接完成。
> 在首页「大模型配置」面板可新增、编辑、切换、删除大模型接口,
> 切换后立即生效,无需重启服务。
2026-07-12 01:07:26 +08:00
## 数据库表结构
### articles (文章内容库)
- id, product_names, category, keywords, summary, content, source, url, fetch_date
### pending_products (待处理产品列表)
- id, product_name, category, subcategory, priority, source
### processing_products (处理中产品)
- id, product_name, category, subcategory, status, started_at
### process_history (处理历史)
- id, product_name, category, subcategory, status, review_id, details
### llm_configs (大模型配置)
- id, name, base_url, api_key, model_name, max_context, is_active
### process_sessions / process_steps (处理会话与步骤)
- 记录每次处理会话及每个步骤的状态、耗时、数据、错误信息
### abnormal_products (异常产品)
- 无搜索结果等无法处理的产品记录
2026-07-12 01:07:26 +08:00
## 配置说明
编辑 `config.py` 文件:
```python
PORT = 16043 # 服务端口
PARAMHUB_BASE_URL = 'http://localhost:16041' # ParamHub API地址
PARAMHUB_PASSWORD = 'admin123' # ParamHub管理员密码
SEARCH_MAX_RESULTS = 10 # 搜索最大结果数
PROCESS_INTERVAL = 300 # 自动处理间隔(秒)
BATCH_SIZE = 5 # 批量处理数量
```
大模型接口在**首页「大模型配置」面板**中管理(数据库 llm_configs 表),首次启动自动写入默认配置:
- 接口地址:`http://192.168.2.7:18003/v1`
- 模型名称:`unsloth/Qwen3.6-27B-Q4_K_M`
- 最大上下文窗口:262144
2026-07-12 01:07:26 +08:00
## 注意事项
1. 确保 ParamHub 服务(端口16041)正常运行
2. 确保大模型接口可用(可在首页测试连接)
3. 首次运行会自动创建数据库和表结构
4. 定时任务默认每5分钟执行一次自动处理
5. 可通过系统配置API调整自动处理参数
6. 大模型调用超时时间 600 秒,长任务请耐心等待
2026-07-12 01:07:26 +08:00
## 日志
日志文件位于 `logs/app.log`,包含:
- 系统启动信息
- 处理过程记录(含大模型调用日志)
2026-07-12 01:07:26 +08:00
- 错误和异常信息
## 版本历史
- v2.0.0 (2026-08-13): 大模型驱动版(主分支大版本)
- 核心改造:不再使用 openclaw 智能体执行步骤流程
- 新增大模型调用服务 llm_client.py,直接调用 OpenAI 兼容接口
- 步骤4/5 改由大模型直接完成(提取数据、填充字段)
- 步骤6 改为直接调用 ParamHub API 提交
- 新增多模型配置管理(数据库 llm_configs 表)
- 前端新增「大模型配置」面板:新增/编辑/删除/切换/测试连接
- 旧版(智能体版)已移至 aliyun-codingplan 分支
2026-07-17 00:24:11 +08:00
- v1.17.0 (2026-07-17): 异常产品管理
- 新增异常产品库,自动存储无法处理的产品
- 内容库和互联网均无搜索结果时存入异常库
- 新增异常产品 API(查询/详情/解决/删除/重试)
- 优化错误处理流程
- v1.16.0 (2026-07-16): 产品状态检查
2026-07-16 23:35:39 +08:00
- 新增产品状态检查功能
- 处理前检查产品是否已存在(已发布/待审核)
- 避免重复处理已有产品
- 新增 check_product_exists API 方法
- v1.1.0 (2026-07-14): 后台任务系统
- 新增后台任务API/api/tasks
- 抓取任务在后台独立运行,不受页面刷新影响
- 支持任务状态查询和手动停止
- 新增后台任务管理界面
- 数据库新增 background_tasks 表
2026-07-12 01:07:26 +08:00
- v1.0.0 (2026-07-12): 初始版本
- 内容库管理
- 产品处理流程
- 定时任务调度
- ParamHub API集成