"""批量创建 Gitea 工单 — 项目下一步需求清单""" import requests import json TOKEN = "fbc9ee7f96635793f4844187eac5c0e573480721" BASE = "http://101.43.95.130:3001/api/v1/repos/admin/aiagent/issues" HEADERS = { "Authorization": f"token {TOKEN}", "Content-Type": "application/json" } ISSUES = [ # ===== Phase 4: 容错与共享 ===== { "title": "[Phase 4.1] 降级/回退链 — 模型/Agent 失败自动切换备用方案", "body": """## 目标 主模型调用失败自动切换 fallback_llm,Agent 执行失败自动切换 fallback_agent。 ## 涉及改动 - AgentLLMConfig 添加 fallback_llm 字段 - Agent 节点 data 添加 fallback_agent 字段 - core.py LLM 调用失败后切换 fallback - workflow_engine.py Agent 节点失败后切换 fallback_agent ## 验收 - 主模型不可用 → 自动切备用模型 - Agent 执行失败 → 自动切备选 Agent - 所有备用方案都失败 → 抛出明确错误 ## 预计工作量 4-6 小时""", }, { "title": "[Phase 4.2] Agent 间知识共享 — 打破记忆隔离", "body": """## 目标 打破 Agent 记忆隔离,Agent A 学到的知识 Agent B 也能检索使用。 ## 方案 - 新增 GlobalKnowledge 模型(content, embedding, source_agent_id, tags) - Agent 执行完成后自动提取关键知识写入全局知识池 - Agent 初始化时从全局知识池检索相关知识 - 自主进化创建的 Agent 自动继承创建者的知识 ## 涉及文件 - models/agent.py — 新增 GlobalKnowledge 模型 - agent_runtime/memory.py — initialize() 添加全局知识加载 - agent_runtime/core.py — 执行完毕提取知识写入全局 ## 预计工作量 8-12 小时""", }, { "title": "[Phase 4.3] Agent 异步执行 — 填空 execute_agent_task", "body": """## 问题 backend/app/tasks/agent_tasks.py 中 execute_agent_task 当前是空壳占位符(返回 pending),定时调度无法真正异步执行 Agent。 ## 方案 1. 从 DB 加载 Agent 配置 2. 构造 AgentRuntime 3. 异步执行并更新 execution 记录 4. 完成通知(飞书/WebSocket/站内通知) ## 涉及文件 - tasks/agent_tasks.py — 实现 execute_agent_task - tasks/scheduler_tasks.py — 调度触发真正的异步执行 ## 预计工作量 4-6 小时""", }, # ===== 监控告警前端 ===== { "title": "[监控] 系统监控面板 — CPU/内存/磁盘 + 执行统计", "body": """## 当前状态 后端 API 已完成:GET /api/v1/monitoring/overview、GET /api/v1/monitoring/statistics 前端界面缺失。 ## 需要完成 - 系统资源监控(CPU、内存、磁盘) - 执行统计图表(成功率、执行时间、错误率) - 实时执行状态看板 ## 预计工作量 4-6 小时""", }, { "title": "[监控] 告警规则管理页面", "body": """## 当前状态 后端 API 已完成:GET/POST /api/v1/alert-rules、PUT/DELETE /api/v1/alert-rules/{id} 前端界面缺失。 ## 需要完成 - 告警规则列表 - 告警规则创建/编辑表单(条件、阈值、通知方式) - 启用/禁用开关 ## 预计工作量 4-6 小时""", }, { "title": "[监控] 告警日志查看页面", "body": """## 当前状态 后端 API 已完成:GET /api/v1/alert-rules/{id}/logs 前端界面缺失。 ## 需要完成 - 告警历史列表(时间、规则、级别、状态) - 告警详情查看 + 筛选分页 - 告警通知配置(邮件、Webhook、飞书) ## 预计工作量 4-6 小时""", }, # ===== DevOps / 生产就绪 ===== { "title": "[DevOps] Docker 生产环境配置 + 多环境管理", "body": """## 目标 从开发环境升级到生产就绪的容器化部署。 ## 需要完成 - Docker Compose 生产配置(资源限制、健康检查、重启策略) - 多环境配置管理(dev / staging / prod) - 配置文件加密(敏感信息不提交 Git) - Nginx 反向代理 + HTTPS ## 预计工作量 8-12 小时""", }, { "title": "[DevOps] Prometheus + Grafana 监控集成", "body": """## 目标 建立生产级指标收集和可视化。 ## 需要完成 - Prometheus 指标收集(业务指标:执行数/成功率/耗时 + 系统指标:CPU/内存/网络) - Grafana 仪表板(系统监控 + 业务监控) - FastAPI metrics 端点暴露 - Celery worker 指标收集 ## 预计工作量 8-12 小时""", }, { "title": "[DevOps] ELK 日志聚合系统", "body": """## 目标 集中化日志管理,替代本地 backend.log 文件。 ## 需要完成 - Elasticsearch + Logstash + Kibana 容器化部署 - FastAPI 日志接入 Logstash - Celery 任务日志接入 - 日志查询和分析界面(Kibana) ## 预计工作量 8-12 小时""", }, { "title": "[DevOps] CI/CD 流水线 — GitHub Actions", "body": """## 目标 自动化测试→构建→部署流程。 ## 需要完成 - 自动化测试流程(pytest + vitest) - 代码质量检查(ESLint + Pylint + Black) - 自动化 Docker 镜像构建 - 自动化部署到 staging 环境 ## 预计工作量 10-15 小时""", }, { "title": "[安全] API 限流保护", "body": """## 目标 防止 API 滥用,保护后端服务。 ## 需要完成 - 全局限流(每 IP 每分钟 N 次) - 用户级别限流(按 token/user_id) - Agent 对话接口更严格限流 - 限流响应头(X-RateLimit-*) ## 技术方案 可使用 slowapi(FastAPI 限流库)或 Redis + 滑动窗口。 ## 预计工作量 4-6 小时""", }, { "title": "[安全] 密钥管理 — 敏感信息加密存储", "body": """## 问题 当前 API Key、数据库密码等敏感信息明文存储在 .env 文件中。 ## 方案 - 使用环境变量 + Docker secrets 管理生产密钥 - 开发环境使用 .env.local(加入 .gitignore) - 数据库存储的 API Key 使用 AES 加密 ## 预计工作量 4-6 小时""", }, # ===== 用户体验 ===== { "title": "[UX] 工作流编辑器优化 — 自动布局 + 节点搜索", "body": """## 目标 提升复杂工作流的编辑效率。 ## 需要完成 - 节点自动布局(一键美化排列) - 节点搜索/筛选(按名称、类型快速定位) - 画布小地图(minimap)导航 - 节点分组/折叠功能 ## 预计工作量 8-10 小时""", }, { "title": "[UX] Agent 快速测试功能", "body": """## 目标 在 Agent 配置页面直接测试,不需跳转到对话页。 ## 需要完成 - Agent 配置页嵌入测试对话面板 - 测试结果实时显示(思考链+工具调用+最终回答) - 测试历史记录 - 快速切换模型对比测试 ## 预计工作量 6-8 小时""", }, { "title": "[UX] Agent 使用统计和分析", "body": """## 目标 量化每个 Agent 的使用情况。 ## 需要完成 - 每个 Agent 调用次数、成功率、平均耗时 - Token 消耗统计 - 工具调用频次排行 - 按时间维度(日/周/月)展示趋势图 ## 预计工作量 6-8 小时""", }, { "title": "[UX] 移动端适配", "body": """## 目标 核心功能支持移动端访问。 ## 需要完成 - 响应式布局优化 - 移动端 Agent 对话页面 - 移动端执行状态查看(只读) - 移动端工作流查看(只读) ## 预计工作量 15-20 小时""", }, # ===== 高级功能 ===== { "title": "[高级] 主控台/应用商店 — 面向业务用户的一站式入口", "body": """## 目标 让业务用户选模板→填参数→执行→看结果,不需了解工作流细节。 ## 需要完成 - MainConsole 主入口页面 - TemplateMarket 模板市场(浏览、搜索、评分、收藏) - ExecutionBoard 父子执行链看板 - 一键从模板创建并执行 ## 预计工作量 15-20 小时""", }, { "title": "[高级] 统一 DSL — 场景可编程输入", "body": """## 目标 让不同模板复用统一的输入契约,降低场景迁移成本。 ## 方案 - 新增 scenario_dsl.py 定义标准输入:目标、约束、产物、验收标准 - 工作流入口处做 DSL 校验与标准化映射 - 所有模板脚本迁移到 DSL 输入 ## 预计工作量 8-12 小时""", }, { "title": "[高级] 成本预算治理 — 按 Agent 设置预算阈值", "body": """## 目标 防止 Agent 执行失控,支持组织级运营。 ## 方案 - 增加预算控制:max_steps、工具调用上限、token 估算上限 - 新增预算配置模型,按租户/项目/Agent 维度配置 - 预算超限告警与熔断 ## 预计工作量 8-12 小时""", }, { "title": "[高级] 插件系统 — 第三方自定义节点 + 插件市场", "body": """## 目标 让外部开发者可以开发自定义节点插件,扩展平台能力。 ## 方案 - 插件注册机制(插件清单、入口文件、依赖声明) - 自定义节点插件开发框架(SDK + 脚手架) - 插件市场(上传、下载、评分、版本管理) - 插件安全沙箱 ## 预计工作量 30-40 小时(大型功能,可分期交付)""", }, { "title": "[高级] 多租户支持 — SaaS 化", "body": """## 目标 支持多个组织/团队独立使用平台,数据隔离。 ## 方案 - 租户模型和 API - 数据隔离(数据库级 / Schema 级 / 行级) - 资源配额管理 - 租户管理界面 ## 预计工作量 20-30 小时(大型功能)""", }, # ===== 质量保障 ===== { "title": "[测试] 单元测试覆盖率提升至 80%+", "body": """## 当前状态 测试框架已搭建(pytest + vitest),但覆盖率较低。 ## 需要完成 - 后端核心模块覆盖率提升(workflow_engine、agent_runtime、core) - 前端核心组件测试(AgentChat、WorkflowDesigner) - API 端点测试完善 ## 预计工作量 20-30 小时(持续投入)""", }, { "title": "[测试] E2E 测试 — Playwright 核心流程", "body": """## 目标 用 Playwright 覆盖核心用户流程的端到端测试。 ## 测试场景 - 用户登录→创建 Agent→对话→查看结果 - 用户登录→创建工作流→添加节点→执行→查看日志 - Agent 编排→多 Agent 协作→查看执行链 ## 预计工作量 10-15 小时""", }, { "title": "[测试] 性能压测 — Locust/k6", "body": """## 目标 找到系统性能瓶颈,验证并发能力。 ## 需要完成 - Locust/k6 压测脚本编写 - 压测场景:并发对话、并发工作流执行、并发 API 调用 - 性能瓶颈分析 + 输出性能测试报告 ## 预计工作量 8-12 小时""", }, { "title": "[测试] 安全扫描 — OWASP ZAP + 依赖漏洞检查", "body": """## 目标 发现并修复安全漏洞。 ## 需要完成 - OWASP ZAP 扫描 Web 应用 - 依赖漏洞检查(pip-audit / npm audit) - Docker 镜像漏洞扫描 - API 接口权限验证 ## 预计工作量 8-12 小时""", }, # ===== Agent 能力拓展 ===== { "title": "[Agent] 多模态 Agent — 图片识别 + 语音输入", "body": """## 目标 让 Agent 支持图片和语音输入,不只限于文本。 ## 当前基础 tessdata 目录已存在(OCR),图片上传功能已有。 ## 需要完成 - 图片理解 Agent(上传图片→OCR 提取文字→Agent 分析) - 语音转文字输入(Whisper API 集成) - 前端输入框添加图片/语音入口 ## 预计工作量 12-16 小时""", }, { "title": "[Agent] Agent 协作工作台 — 可视化多 Agent 编排", "body": """## 目标 用可视化方式设计和执行多 Agent 协作流程。 ## 需要完成 - 协作流程图编辑器(拖拽 Agent 节点+连线) - 4 种协作模式可视化配置 - 协作结果总览面板 - 协作模板保存和复用 ## 预计工作量 12-16 小时""", }, { "title": "[Agent] Agent 技能商店 — 公共市场共享", "body": """## 目标 让用户发布和共享 Agent、工具、工作流模板。 ## 需要完成 - Agent 发布到公共市场(名称、描述、评分、下载数) - 工具和工作流模板发布 - 评分和评论系统 - 分类浏览和搜索 ## 预计工作量 15-20 小时""", }, ] def main(): print(f"准备创建 {len(ISSUES)} 个工单到 admin/aiagent ...\n") created = [] failed = [] for i, issue in enumerate(ISSUES): payload = { "title": issue["title"], "body": issue["body"], "assignee": "admin", } try: r = requests.post(BASE, headers=HEADERS, json=payload, timeout=15) if r.status_code == 201: data = r.json() num = data["number"] print(f" [{i+1:2d}/{len(ISSUES)}] #{num} {issue['title']}") created.append(num) else: print(f" [{i+1:2d}/{len(ISSUES)}] FAIL ({r.status_code}): {issue['title']}") print(f" {r.text[:200]}") failed.append(issue["title"]) except Exception as e: print(f" [{i+1:2d}/{len(ISSUES)}] ERROR: {e}") failed.append(issue["title"]) print(f"\n=== 完成 ===") print(f"成功: {len(created)} 个") print(f"失败: {len(failed)} 个") if created: print(f"工单编号: #{created[0]} ~ #{created[-1]}") if failed: print(f"失败列表: {failed}") # 验证 print("\n--- 验证:当前所有 Open 工单 ---") r = requests.get( f"{BASE}?state=open&limit=50", headers=HEADERS, timeout=10 ) if r.status_code == 200: issues = r.json() print(f"共 {len(issues)} 个开放工单:") for iss in issues: print(f" #{iss['number']} [{iss['state']}] {iss['title']}") if __name__ == "__main__": main()