# Param Auto Manager - 参数数据自动化管理系统 自动管理参数数据网站的系统,支持从内容库和互联网搜索数据,自动处理产品并提交到后台管理待审核区。 ## 功能特性 - 📚 **内容库管理**:存储和管理搜索获取的相关文章内容 - 🔄 **自动处理流程**:自动从待处理列表中提取产品并处理 - 🔍 **智能搜索**:从内容库和互联网搜索相关数据 - 🤖 **大模型驱动**:直接调用大模型接口完成智能体任务(不再使用 openclaw 智能体) - 步骤4 提取产品数据 → 大模型筛选相关内容 - 步骤5 填充字段 → 大模型生成产品数据并检查格式 - 步骤6 提交审核 → 直接调用 ParamHub API - 🧠 **多模型管理**:前端可新增/编辑/删除/切换大模型配置,随时换模型 - OpenAI 兼容接口(base_url + api_key + model_name) - 支持最大上下文窗口配置 - 一键测试连接 - ✅ **审核提交**:自动提交到ParamHub后台管理待审核区 - 🕐 **定时任务**:支持定时自动处理产品 - 🔧 **后台任务系统**:抓取任务在后台持续运行,不受页面刷新影响 - 一键抓取触发后,任务在后台独立运行 - 可随时查看任务进度和状态 - 支持手动停止正在运行的任务 - 自动记录成功/失败/保存数量 - 🛡️ **产品状态检查**:处理前自动检查产品是否已存在 - 检查已发布产品(模型/GPU/CPU) - 检查待审核产品 - 已存在则自动跳过,避免重复处理 - ⚠️ **异常产品管理**:自动识别无法处理的产品 - 内容库和互联网均无搜索结果时存入异常库 - 支持人工排查和重新处理 - 提供异常产品列表、详情、解决、删除 API ## 系统架构 ``` param-auto-manager/ ├── app.py # 主应用入口 ├── config.py # 配置文件 ├── requirements.txt # Python依赖 ├── models/ │ └── database.py # 数据库模型(含 llm_configs 大模型配置表) ├── routes/ │ ├── articles.py # 文章内容库API │ ├── products.py # 产品处理API │ ├── system.py # 系统管理API │ ├── process_monitor.py # 处理步骤监控API │ └── llm.py # 大模型配置管理API ├── services/ │ ├── search_service.py # 搜索服务 │ ├── process_service.py # 数据处理服务 │ ├── process_monitor.py # 处理流程监控(大模型驱动) │ ├── llm_client.py # 大模型调用客户端(多模型管理) │ └── 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 ``` ### 系统管理 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": "..."}} ``` ## 处理流程 1. **添加待处理产品**:手动添加或系统自动发现新产品 2. **产品状态检查**: - 检查产品是否已在 ParamHub 系统中 - 检查已发布产品(模型/GPU/CPU) - 检查待审核列表 - 如已存在则跳过后续处理 3. **自动/手动触发处理**(大模型驱动): - 从内容库搜索相关文章 - 从互联网搜索最新数据 - 步骤4:调用**大模型**筛选与产品直接相关且对参数提取有用的内容(替代原智能体) - 步骤5:调用**大模型**根据相关内容生成产品数据并检查格式(替代原智能体) - 步骤6:直接调用 ParamHub API 提交到待审核区(不再依赖智能体) 4. **发现新产品**:处理过程中自动发现并添加相关产品 > **大模型配置**:系统所有智能体任务均由当前激活的大模型直接完成。 > 在首页「大模型配置」面板可新增、编辑、切换、删除大模型接口, > 切换后立即生效,无需重启服务。 ## 数据库表结构 ### 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 (异常产品) - 无搜索结果等无法处理的产品记录 ## 配置说明 编辑 `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 ## 注意事项 1. 确保 ParamHub 服务(端口16041)正常运行 2. 确保大模型接口可用(可在首页测试连接) 3. 首次运行会自动创建数据库和表结构 4. 定时任务默认每5分钟执行一次自动处理 5. 可通过系统配置API调整自动处理参数 6. 大模型调用超时时间 600 秒,长任务请耐心等待 ## 日志 日志文件位于 `logs/app.log`,包含: - 系统启动信息 - 处理过程记录(含大模型调用日志) - 错误和异常信息 ## 版本历史 - v2.0.0 (2026-08-13): 大模型驱动版(主分支大版本) - 核心改造:不再使用 openclaw 智能体执行步骤流程 - 新增大模型调用服务 llm_client.py,直接调用 OpenAI 兼容接口 - 步骤4/5 改由大模型直接完成(提取数据、填充字段) - 步骤6 改为直接调用 ParamHub API 提交 - 新增多模型配置管理(数据库 llm_configs 表) - 前端新增「大模型配置」面板:新增/编辑/删除/切换/测试连接 - 旧版(智能体版)已移至 aliyun-codingplan 分支 - v1.17.0 (2026-07-17): 异常产品管理 - 新增异常产品库,自动存储无法处理的产品 - 内容库和互联网均无搜索结果时存入异常库 - 新增异常产品 API(查询/详情/解决/删除/重试) - 优化错误处理流程 - v1.16.0 (2026-07-16): 产品状态检查 - 新增产品状态检查功能 - 处理前检查产品是否已存在(已发布/待审核) - 避免重复处理已有产品 - 新增 check_product_exists API 方法 - v1.1.0 (2026-07-14): 后台任务系统 - 新增后台任务API(/api/tasks) - 抓取任务在后台独立运行,不受页面刷新影响 - 支持任务状态查询和手动停止 - 新增后台任务管理界面 - 数据库新增 background_tasks 表 - v1.0.0 (2026-07-12): 初始版本 - 内容库管理 - 产品处理流程 - 定时任务调度 - ParamHub API集成