# gitdiagram-仓库代码解析 **Repository Path**: loa123/gitdiagram ## Basic Information - **Project Name**: gitdiagram-仓库代码解析 - **Description**: gitdiagram仓库仓库代码解析 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-08-01 - **Last Updated**: 2025-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GitDiagram GitDiagram 是一个帮助开发者从 GitHub 仓库生成图表的工具。该工具支持私有仓库图的生成,并允许用户通过自我托管进行本地开发。 ## 🚀 特性 - 从 GitHub 仓库生成图表。 - 支持私有仓库的图生成。 - 提供缓存机制,以减少重复请求的开销。 - 支持通过不同 AI 模型(如 Claude、OpenAI)生成图表。 - 提供速率限制控制以管理请求频率。 ## ⚙️ 技术栈 - **后端**: Python (FastAPI) - **前端**: TypeScript (Next.js) - **数据库**: Drizzle ORM - **AI 模型支持**: 支持多个 AI 模型,包括 Claude 和 OpenAI。 - **部署**: Docker 容器化部署,通过 `docker-compose.yml` 管理。 ## 🤔 关于 GitDiagram 的目标是通过 AI 模型帮助开发者快速生成他们 GitHub 仓库的结构图,以简化文档编写和项目展示过程。该项目默认使用 GitHub API 来检索仓库信息,并结合 AI 模型生成 Mermaid 图表。 ## 🔒 如何生成私有仓库的图 要生成私有仓库的图,用户需要提供 GitHub 的个人访问令牌(PAT),以便访问私有仓库。平台会使用该令牌进行认证,并检索用户所需的仓库数据。 ## 🛠️ 自我托管 / 本地开发 ### 前提条件 - Python 3.12 - Docker 和 Docker Compose - Node.js 和 pnpm ### 安装步骤 1. 克隆仓库: ```bash git clone https://gitee.com/loa123/gitdiagram cd gitdiagram ``` 2. 安装依赖: ```bash pnpm install pip install -r backend/requirements.txt ``` 3. 启动数据库: ```bash ./start-database.sh ``` 4. 构建并运行项目: ```bash docker-compose up ``` 5. 如果需要本地开发,可运行: ```bash pnpm dev ``` ## 📦 后端结构 - **`main.py`**: 提供主 API 路由。 - **`routers/generate.py`**: 包含 `/stream` 和 `/cost` 等路由,用于生成图表和计算生成成本。 - **`routers/modify.py`**: 提供 `/modify` 路由,用于修改现有图表。 - **`services/github_service.py`**: 用于与 GitHub API 交互,包括检查仓库是否存在、获取 README 和默认分支等。 - **`services/claude_service.py` / `services/o3_mini_openai_service.py` / `services/o4_mini_openai_service.py`**: 各 AI 服务的封装,提供生成 Mermaid 图表的功能。 - **`core/limiter.py`**: 提供请求速率限制功能。 ## 📊 前端结构 - **`src/app/[username]/[repo]/page.tsx`**: 主页面,用于展示特定仓库的图表。 - **`src/components/mermaid-diagram.tsx`**: 展示生成的 Mermaid 图表。 - **`src/hooks/useDiagram.ts`**: 提供处理图表生成和流式响应的逻辑。 - **`src/components/action-button.tsx` / `src/components/api-key-button.tsx` / `src/components/private-repos-dialog.tsx`**: 用户交互组件,用于处理生成和修改请求。 ## 📝 许可证 请查看 [LICENSE](LICENSE) 文件以获取完整的许可证信息。 ## 🤝 贡献 我们欢迎社区贡献!请查看 [Contributing](README.md) 部分了解如何参与项目开发。 ## 📈 速率限制 GitDiagram 实现了请求速率限制,以防止滥用。例如: - `/stream` 接口默认限制为 5 次/分钟。 - `/modify` 接口默认限制为 2 次/分钟。 ## 🤔 未来步骤 - 支持更多 AI 模型。 - 提供用户自定义图表模板功能。 - 增加对 GitLab 和 Bitbucket 的支持。 ## 📚 文档和资源 - 项目文档请参考 [docs/readme_img.png](docs/readme_img.png)。 - 环境配置请参考 [.env.example](.env.example)。 ## 📦 Docker - 后端使用 Docker 容器化部署,请查看 [backend/Dockerfile](backend/Dockerfile)。 - 项目整体部署使用 `docker-compose.yml`。 ## 🧪 测试 测试相关文件未在代码地图中列出,但你可以在 `.cursor/rules/summary.mdc` 中找到一些测试规则。 --- GitDiagram 项目结合了 AI 模型的强大能力与 GitHub API 的灵活性,旨在为开发者提供一种快速、简便的方式来生成他们项目的图表。该项目是开源的,并且欢迎社区贡献,以进一步增强其功能。