Files
aiagent/docs/project-structure.md
renjianbo ab1589921a fix: 修复35个安全与功能缺陷,补全知识进化/数字孪生/行为采集模块
## 安全修复 (12项)
- Webhook接口添加全局Token认证,过滤敏感请求头
- 修复JWT Base64 padding公式,防止签名验证绕过
- 数据库密码/飞书Token从源码移除,改为环境变量
- 工作流引擎添加路径遍历防护 (_resolve_safe_path)
- eval()添加模板长度上限检查
- 审批API添加认证依赖
- 前端v-html增强XSS转义,console.log仅开发模式输出
- 500错误不再暴露内部异常详情

## Agent运行时修复 (7项)
- 删除_inject_knowledge_context中未定义db变量的finally块
- 工具执行添加try/except保护,异常不崩溃Agent
- LLM重试计入budget计数器
- self_review异常时passed=False
- max_iterations截断标记success=False
- 工具参数JSON解析失败时记录警告日志
- run()开始时重置_llm_invocations计数器

## 配置与基础设施
- DEBUG默认False,SQL_ECHO独立配置项
- init_db()补全13个缺失模型导入
- 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项
- 新增.env.example模板文件

## 前端修复 (12项)
- 登录改用URLSearchParams替代FormData
- 401拦截器通过Pinia store统一清理状态
- SSE流超时从60s延长至300s
- final/error事件时清除streamTimeout
- localStorage聊天记录添加24h TTL
- safeParseArgCount替代模板中裸JSON.parse
- fetchUser 401时同时清除user对象

## 新增模块
- 知识进化: knowledge_extractor/retriever/tasks
- 数字孪生: shadow_executor/comparison模型
- 行为采集: behavior_middleware/collector/fingerprint_engine
- 代码审查: code_review_agent/document_review_agent
- 反馈学习: feedback_learner
- 瓶颈检测/优化引擎/成本估算/需求估算
- 速率限制器 (rate_limiter)
- Alembic迁移 015-020

## 文档
- 商业化落地计划
- 8篇docs文档 (架构/API/部署/开发/贡献等)
- Docker Compose生产配置

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 19:50:20 +08:00

150 lines
4.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.
# 🏗️ 项目结构概览
> **Project Structure Overview**
天工智能体平台采用前后端分离的架构,使用 pnpm + Vite + Vue 3 构建前端FastAPI + SQLAlchemy 构建后端,通过 Celery + Redis 实现异步任务处理。
---
## 📁 顶层结构
```
aiagent/
├── frontend/ # 前端项目
│ ├── src/ # 源码目录
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 公共组件
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── utils/ # 工具函数
│ │ └── router/ # 路由配置
│ ├── public/ # 静态资源
│ ├── index.html # 入口 HTML
│ ├── vite.config.js # Vite 配置
│ └── package.json # 前端依赖
├── backend/ # 后端项目
│ ├── app/ # 应用主目录
│ │ ├── modules/ # 业务模块
│ │ ├── core/ # 核心功能配置、安全、Celery
│ │ ├── models/ # SQLAlchemy 数据模型
│ │ ├── schemas/ # Pydantic 数据验证模型
│ │ ├── api/ # API 路由定义
│ │ ├── services/ # 业务逻辑层
│ │ └── utils/ # 通用工具函数
│ ├── tests/ # 测试用例
│ ├── alembic/ # 数据库迁移
│ ├── requirements.txt # Python 依赖
│ └── Dockerfile # 后端 Docker 镜像
├── docker-compose.dev.yml # Docker Compose 开发配置
├── nginx.conf # Nginx 反向代理配置
├── .gitignore # Git 忽略规则
└── README.md # 项目总览文档
```
---
## 🖥️ 前端结构详解
### 目录路径约定
| 目录 | 用途 |
|:----|:------|
| `frontend/src/views/` | 页面级组件,按功能模块组织(如 `smart-assistant/`, `market/` |
| `frontend/src/components/` | 可复用 UI 组件 |
| `frontend/src/stores/` | Pinia store按模块管理全局状态 |
| `frontend/src/router/` | 路由配置,含权限控制守卫 |
| `frontend/src/utils/` | 通用工具函数(如 API 请求封装) |
| `frontend/public/` | 无需编译的静态资源 |
---
## ⚙️ 后端结构详解
### 模块化组织
```
backend/app/
├── main.py # FastAPI 应用入口
├── config.py # 配置管理(读取 .env
├── core/
│ ├── security.py # JWT 认证、密码加密
│ ├── celery_app.py # Celery 异步任务配置
│ ├── database.py # 数据库连接与会话管理
│ └── exceptions.py # 全局异常处理
├── modules/
│ ├── user/ # 用户模块(注册、登录、个人信息)
│ ├── agent/ # 智能体模块
│ ├── knowledge/ # 知识库模块
│ └── conversation/ # 对话模块
├── models/ # SQLAlchemy ORM 模型
│ ├── user.py
│ ├── agent.py
│ └── knowledge.py
├── schemas/ # Pydantic 请求/响应模型
│ └── ...
├── api/ # API 路由
│ ├── v1/ # API v1 路由
│ │ ├── users.py
│ │ ├── agents.py
│ │ └── ...
│ └── deps.py # 依赖注入(当前用户等)
└── services/ # 业务逻辑层
├── user_service.py
└── agent_service.py
```
---
## 🗄️ 数据流向
```
浏览器 (Vue 3)
▼ HTTP/HTTPS
Nginx反向代理端口 8038/8037
├──► 前端静态资源 ──── 返回 HTML/CSS/JS
└──► 后端 API (FastAPI, 端口 8037)
├──► Redis缓存 / 会话)
├──► MySQL持久化数据
└──► Celery Worker异步任务如文件处理
```
---
## 🔗 依赖关系
```mermaid
flowchart TD
subgraph 前端
Vue[Vue 3 + Pinia]
Router[Vue Router]
Axios[Axios HTTP]
end
subgraph 后端
FastAPI[FastAPI]
SA[SQLAlchemy]
Celery[Celery]
Redis[Redis]
end
subgraph 数据
MySQL[(MySQL)]
end
Vue --> Axios
Axios --> FastAPI
FastAPI --> SA --> MySQL
FastAPI --> Redis
Celery --> Redis
Celery --> MySQL
```
---
> 💡 **提示**:实际目录结构以最新代码为准,本文档仅供参考。