diff --git a/README.md b/README.md index 7876e0e..a4d0f2c 100644 --- a/README.md +++ b/README.md @@ -395,234 +395,6 @@ XCodeReviewer 支持 10+ 主流 LLM 平台,可根据需求自由选择: - **权限控制**:基于角色的访问控制 -## 🛠️ 技术栈 - -### 前端技术栈 - -| 分类 | 技术 | 说明 | -| :--- | :--- | :--- | -| **前端框架** | `React 18` `TypeScript` `Vite` | 现代化前端开发栈,支持热重载和类型安全 | -| **UI 组件** | `Tailwind CSS` `Radix UI` `Lucide React` | 响应式设计,无障碍访问,丰富的图标库 | -| **数据可视化** | `Recharts` | 专业的图表库,支持多种图表类型 | -| **路由管理** | `React Router v6` | 单页应用路由解决方案 | -| **状态管理** | `React Hooks` `Sonner` | 轻量级状态管理和通知系统 | -| **HTTP 客户端** | `Axios` `Ky` | 现代化的 HTTP 请求库 | -| **代码质量** | `Biome` `Ast-grep` `TypeScript` | 代码格式化、静态分析和类型检查 | -| **构建工具** | `Vite` `PostCSS` `Autoprefixer` | 快速的构建工具和 CSS 处理 | - -### 后端技术栈 - -| 分类 | 技术 | 说明 | -| :--- | :--- | :--- | -| **Web 框架** | `FastAPI` | 高性能异步 Python Web 框架 | -| **数据库** | `PostgreSQL` `SQLAlchemy` `Alembic` | 关系型数据库 + ORM + 数据库迁移 | -| **认证授权** | `python-jose` `passlib` `bcrypt` | JWT Token 认证和密码加密 | -| **LLM 集成** | `LiteLLM` | 统一的 LLM API 适配层,支持 10+ 平台 | -| **HTTP 客户端** | `httpx` | 异步 HTTP 客户端 | -| **数据验证** | `Pydantic` | 数据验证和序列化 | - -### 数据存储 - -| 分类 | 技术 | 说明 | -| :--- | :--- | :--- | -| **前端本地存储** | `IndexedDB` | 浏览器本地数据库,开箱即用 | -| **云端数据库** | `Supabase` | 可选的云端数据同步 | -| **后端数据库** | `PostgreSQL` | 生产环境推荐的关系型数据库 | - -## 📁 项目结构 - -``` -XCodeReviewer/ -├── frontend/ # 前端项目 -│ ├── src/ -│ │ ├── app/ # 应用配置和路由 -│ │ │ ├── App.tsx # 主应用组件 -│ │ │ ├── main.tsx # 应用入口点 -│ │ │ ├── routes.tsx # 路由配置 -│ │ │ └── ProtectedRoute.tsx # 路由守卫 -│ │ ├── components/ # React 组件 -│ │ │ ├── layout/ # 布局组件 (Sidebar, PageMeta) -│ │ │ ├── ui/ # UI 组件库 (基于 Radix UI) -│ │ │ ├── system/ # 系统配置组件 -│ │ │ ├── database/ # 数据库管理组件 -│ │ │ ├── audit/ # 审计任务组件 -│ │ │ ├── analysis/ # 分析进度组件 -│ │ │ ├── reports/ # 报告导出组件 -│ │ │ └── debug/ # 调试组件 -│ │ ├── pages/ # 页面组件 -│ │ │ ├── Dashboard.tsx # 仪表盘 -│ │ │ ├── Projects.tsx # 项目管理 -│ │ │ ├── InstantAnalysis.tsx # 即时分析 -│ │ │ ├── AuditTasks.tsx # 审计任务 -│ │ │ ├── AdminDashboard.tsx # 系统管理 -│ │ │ ├── Login.tsx # 登录页面 -│ │ │ ├── Register.tsx # 注册页面 -│ │ │ └── Account.tsx # 账户管理 -│ │ ├── features/ # 功能模块 -│ │ │ ├── analysis/ # 代码分析服务 -│ │ │ ├── projects/ # 项目扫描服务 -│ │ │ └── reports/ # 报告生成服务 -│ │ ├── shared/ # 共享工具 -│ │ │ ├── api/ # API 客户端 -│ │ │ ├── config/ # 配置文件 -│ │ │ ├── context/ # React Context -│ │ │ ├── hooks/ # 自定义 Hooks -│ │ │ ├── i18n/ # 国际化 -│ │ │ ├── types/ # TypeScript 类型 -│ │ │ └── utils/ # 工具函数 -│ │ └── assets/ # 静态资源 -│ └── public/ # 公共资源 -│ -├── backend/ # 后端项目 -│ ├── app/ -│ │ ├── api/ # API 路由 -│ │ │ └── v1/ -│ │ │ └── endpoints/ # API 端点 -│ │ │ ├── auth.py # 认证接口 -│ │ │ ├── users.py # 用户管理 -│ │ │ ├── projects.py # 项目管理 -│ │ │ ├── tasks.py # 任务管理 -│ │ │ ├── scan.py # 代码扫描 -│ │ │ ├── config.py # 配置管理 -│ │ │ └── database.py # 数据库操作 -│ │ ├── core/ # 核心模块 -│ │ │ ├── config.py # 配置管理 -│ │ │ ├── security.py # 安全认证 -│ │ │ └── encryption.py # 加密工具 -│ │ ├── db/ # 数据库 -│ │ │ ├── base.py # 数据库基类 -│ │ │ └── session.py # 数据库会话 -│ │ ├── models/ # 数据模型 -│ │ │ ├── user.py # 用户模型 -│ │ │ ├── project.py # 项目模型 -│ │ │ ├── audit.py # 审计模型 -│ │ │ └── analysis.py # 分析模型 -│ │ ├── schemas/ # Pydantic 模式 -│ │ │ ├── user.py # 用户模式 -│ │ │ └── token.py # Token 模式 -│ │ ├── services/ # 业务服务 -│ │ │ ├── llm/ # LLM 服务 -│ │ │ │ ├── factory.py # LLM 工厂 -│ │ │ │ ├── service.py # LLM 服务 -│ │ │ │ ├── base_adapter.py # 基础适配器 -│ │ │ │ └── adapters/ # 平台适配器 -│ │ │ │ ├── litellm_adapter.py # LiteLLM 统一适配 -│ │ │ │ ├── baidu_adapter.py # 百度适配器 -│ │ │ │ ├── minimax_adapter.py # MiniMax 适配器 -│ │ │ │ └── doubao_adapter.py # 豆包适配器 -│ │ │ ├── scanner.py # 代码扫描服务 -│ │ │ └── zip_storage.py # ZIP 文件存储 -│ │ └── main.py # 应用入口 -│ ├── alembic/ # 数据库迁移 -│ └── uploads/ # 上传文件存储 -│ -├── supabase/ # Supabase 配置 -│ └── migrations/ # 数据库迁移文件 -├── docker-compose.yml # Docker Compose 配置(开发环境) -├── Dockerfile # 前端生产环境 Docker 镜像 -├── nginx.conf # Nginx 配置(生产环境) -└── scripts/ # 构建和设置脚本 -``` - -## 🎯 使用指南 - -### 系统配置(首次使用必看) - -访问 `/admin` 系统管理页面,在"系统配置"标签页中配置: - -#### 1. **配置 LLM 提供商** -- 选择您要使用的 LLM 平台(Gemini、OpenAI、Claude 等) -- 填入 API Key(支持通用 Key 或平台专用 Key) -- 可选:配置模型名称、API 基础 URL(用于中转站) - -#### 2. **配置 API 中转站**(如果使用) -- 在"API 基础 URL"中填入中转站地址(如 `https://your-proxy.com/v1`) -- 填入中转站提供的 API Key -- 保存配置 - -#### 3. **调整分析参数**(可选) -- 最大分析文件数、并发请求数、请求间隔 -- 输出语言(中文/英文) - -**配置完成后点击"保存所有更改"并刷新页面即可使用。** - -### 即时代码分析 -1. 访问 `/instant-analysis` 页面 -2. 选择编程语言(支持 10+ 种语言) -3. 粘贴代码或上传文件 -4. 点击"开始分析"获得 AI 分析结果 -5. 查看详细的问题报告和修复建议 - -### 项目管理 -1. 访问 `/projects` 页面 -2. 点击"新建项目"创建项目 -3. 配置仓库 URL 和扫描参数 -4. 启动代码审计任务 -5. 查看审计结果和问题统计 - -### 审计任务 -1. 在项目详情页创建审计任务 -2. 选择扫描分支和排除模式 -3. 配置分析深度和范围 -4. 监控任务执行状态 -5. 查看详细的问题报告 - -### 审计报告导出 -1. 在任务详情页点击"导出报告"按钮 -2. 选择导出格式: - - **JSON 格式**:结构化数据,适合程序处理和集成 - - **PDF 格式**:专业报告,适合打印和分享(通过浏览器打印功能) -3. JSON 报告包含完整的任务信息、问题详情和统计数据 -4. PDF 报告提供美观的可视化展示,支持中文显示 - -### 构建和部署 - -```bash -# 前端开发模式 -cd frontend && pnpm dev - -# 前端构建生产版本 -cd frontend && pnpm build - -# 后端开发模式 -cd backend && uvicorn app.main:app --reload - -# 代码检查 -cd frontend && pnpm lint -``` - -### 后端环境变量说明 - -#### 核心配置 -| 变量名 | 必需 | 默认值 | 说明 | -|--------|------|--------|------| -| `POSTGRES_SERVER` | ✅ | `localhost` | PostgreSQL 服务器地址 | -| `POSTGRES_USER` | ✅ | `postgres` | 数据库用户名 | -| `POSTGRES_PASSWORD` | ✅ | `postgres` | 数据库密码 | -| `POSTGRES_DB` | ✅ | `xcodereviewer` | 数据库名称 | -| `SECRET_KEY` | ✅ | - | JWT 密钥(生产环境必须修改) | - -#### LLM 配置 -| 变量名 | 必需 | 默认值 | 说明 | -|--------|------|--------|------| -| `LLM_PROVIDER` | ✅ | `openai` | LLM 提供商 | -| `LLM_API_KEY` | ✅ | - | API Key | -| `LLM_MODEL` | ❌ | 自动 | 模型名称 | -| `LLM_BASE_URL` | ❌ | - | API 中转站地址 | -| `LLM_TIMEOUT` | ❌ | `150` | 请求超时(秒) | -| `LLM_TEMPERATURE` | ❌ | `0.1` | 温度参数 | -| `LLM_MAX_TOKENS` | ❌ | `4096` | 最大输出 Token | - -#### 仓库扫描配置 -| 变量名 | 默认值 | 说明 | -|--------|--------|------| -| `GITHUB_TOKEN` | - | GitHub Personal Access Token | -| `GITLAB_TOKEN` | - | GitLab Personal Access Token | -| `MAX_ANALYZE_FILES` | `50` | 单次最大分析文件数 | -| `MAX_FILE_SIZE_BYTES` | `204800` | 单文件最大大小(字节) | -| `LLM_CONCURRENCY` | `3` | LLM 并发请求数 | -| `LLM_GAP_MS` | `2000` | 请求间隔(毫秒) | - ## 🤝 贡献指南 我们热烈欢迎所有形式的贡献!无论是提交 issue、创建 PR,还是改进文档,您的每一次贡献对我们都至关重要。请联系我们了解详细信息。 @@ -635,43 +407,6 @@ cd frontend && pnpm lint 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建一个 **Pull Request** -## 🙏 致谢 - -### 核心技术支持 -- **[React](https://reactjs.org/)** & **[Vite](https://vitejs.dev/)**: 提供现代化的前端开发体验 -- **[FastAPI](https://fastapi.tiangolo.com/)**: 高性能 Python Web 框架 -- **[TypeScript](https://www.typescriptlang.org/)**: 提供类型安全保障 -- **[Tailwind CSS](https://tailwindcss.com/)**: 提供现代化的 CSS 框架 -- **[Radix UI](https://www.radix-ui.com/)**: 提供无障碍的 UI 组件库 -- **[LiteLLM](https://github.com/BerriAI/litellm)**: 统一的 LLM API 适配层 - -### AI 平台支持 -- **[Google Gemini AI](https://ai.google.dev/)**: 提供强大的 AI 分析能力 -- **[OpenAI](https://openai.com/)**: GPT系列模型支持 -- **[Anthropic Claude](https://www.anthropic.com/)**: Claude模型支持 -- **[DeepSeek](https://www.deepseek.com/)**: 国产AI大模型支持 -- **[阿里云通义千问](https://tongyi.aliyun.com/)**: 企业级AI服务 -- **[智谱AI](https://www.zhipuai.cn/)**: GLM系列模型 -- **[Moonshot AI](https://www.moonshot.cn/)**: Kimi模型支持 -- **[Ollama](https://ollama.com/)**: 本地模型部署方案 - -### 数据存储 -- **[PostgreSQL](https://www.postgresql.org/)**: 强大的关系型数据库 -- **[Supabase](https://supabase.com/)**: 提供便捷的后端即服务支持 -- **[IndexedDB](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API)**: 浏览器本地存储方案 - -### 功能组件 -- **[Recharts](https://recharts.org/)**: 提供专业的图表组件 -- **[Lucide Icons](https://lucide.dev/)**: 提供精美的图标库 -- **[Sonner](https://sonner.emilkowal.ski/)**: 提供优雅的通知组件 -- **[fflate](https://github.com/101arrowz/fflate)**: ZIP文件处理 - -### 特别感谢 -- 感谢所有为本项目提交 Issue 和 Pull Request 的贡献者 -- 感谢所有 Star 本项目的开发者 -- 感谢开源社区的无私分享精神 -- 以及所有本项目所使用的开源软件的作者们! - ## 👥 贡献者 感谢以下优秀的贡献者们,他们让 XCodeReviewer 更强大!