# sco-commit **Repository Path**: hu_jiancheng/sco-commit ## Basic Information - **Project Name**: sco-commit - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-07 - **Last Updated**: 2026-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Commit Dashboard [English](./README.md) 基于 Go + React 构建的全栈 Gitea 代码提交分析平台。从 Gitea 实例同步仓库数据,分析提交趋势、贡献者表现和仓库健康度,并提供 AI 驱动的智能洞察。 ## 功能特性 - **总览仪表盘** — 统计卡片(总提交数、贡献者、仓库数、待处理 PR、平均合并时间)+ 提交趋势图 + 最近提交 - **提交分析** — 趋势图(按天/周/月)、活跃热力图(星期 × 小时)、代码变更时间线、累计提交、大小/类型分布、工作模式分析、语言分布、代码影响力指标 - **成员贡献** — 贡献者排行、对比表格、活跃趋势、按仓库分布、提交类型拆解、代码影响力 - **成员详情** — 个人贡献者档案及专属分析,按周期统计 - **仓库分析** — 健康指标、活跃趋势、贡献者分层(核心/活跃/偶尔)、多仓库对比、分支活动 - **仓库详情** — 单仓库深度分析,包含提交分析、文件热点、语言分布、核心贡献者 - **PR 统计** — 状态分布、可筛选 PR 列表、合并时间统计(通过 Gitea API) - **个人档案** — 当前用户统计(今日/本周/本月)、个人趋势、AI 生成周报 - **AI 助手** — 与 AI 代理对话,自动生成周报,AI 具备提交数据访问能力 - **实时同步** — 基于 SSE 的进度追踪,同步仓库和提交时实时显示进度 - **仓库同步** — 选择要同步的仓库,查看分支,按语言筛选 ## 技术栈 | 层级 | 技术 | |------|------| | 后端 | Go 1.25、Fiber v2 | | 数据库 | PostgreSQL、Bun ORM | | AI / LLM | Cloudwego EINO、字节跳动 Ark API(豆包) | | 任务队列 | Asynq | | 前端 | React 19、TypeScript | | 构建 | Vite 7 | | 路由 | TanStack Router(文件路由) | | 状态管理 | Zustand(持久化) | | 数据请求 | React Query、Axios | | UI 组件 | shadcn/ui、Tailwind CSS 4 | | 图表 | Recharts | | 图标 | @tabler/icons-react | ## 快速开始 ### 环境要求 - Go >= 1.25 - Node.js >= 18 - pnpm >= 8 - PostgreSQL - 一个 Gitea 实例及其个人访问令牌 ### 后端 ```bash cd server # 复制环境配置 cp .env.example .env # 编辑 .env,填写数据库和 API 凭证 # 执行数据库迁移 psql -U postgres -d commit -f migrations/gitea/001_init.sql psql -U postgres -d commit -f migrations/ai/001_schema.sql # 启动开发服务器(热重载) task dev # 或者构建后运行 task build && task run ``` 后端运行在 `http://localhost:3000`。 ### 前端 ```bash cd web # 安装依赖 pnpm install # 启动开发服务器 pnpm dev # 构建生产版本 pnpm build ``` 前端运行在 `http://localhost:5173`。 ### 配置说明 后端 `.env` 配置: ```env SERVER_PORT=3000 # PostgreSQL 数据库 DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASSWORD=your_password DB_NAME=commit DB_SSLMODE=disable BUNDEBUG=1 # AI 功能(可选) ARK_API_KEY=your_ark_api_key ARK_MODEL=doubao-seed-1-6-251015 ``` ### 使用流程 1. 浏览器打开 `http://localhost:5173` 2. 输入 Gitea 地址和个人访问令牌 3. 点击 **连接** 验证凭证 4. 进入 **同步** 页面选择仓库 5. 同步仓库和提交数据 6. 浏览各分析页面 ## 项目结构 ``` ├── server/ # Go 后端 │ ├── main.go # 入口文件 │ ├── app/ │ │ ├── gitea/ │ │ │ ├── handlers/ # HTTP 处理器 │ │ │ ├── router/ # 路由定义 │ │ │ ├── models/ │ │ │ │ ├── db/ # 数据库模型 │ │ │ │ ├── request/ # 请求 DTO │ │ │ │ └── response/ # 响应 DTO │ │ │ ├── repository/ # 数据访问层 │ │ │ ├── services/ # 业务逻辑 │ │ │ └── helpers/ # 工具类(SSE 等) │ │ └── ai/ │ │ ├── handlers/ # AI 代理与周报 │ │ ├── router/ │ │ └── repository/ │ ├── infrastructure/ │ │ ├── database/ # PostgreSQL 连接 │ │ ├── gitea/ # Gitea API 客户端 │ │ ├── agent/ # AI 代理 + 工具注册 │ │ │ ├── context.go │ │ │ ├── eino_agent.go │ │ │ ├── setup.go │ │ │ ├── sync_agent.go │ │ │ ├── types.go │ │ │ └── tools/ # 代理工具(commit, contributor, repo, sync) │ │ └── llm/ # LLM 客户端 │ │ ├── eino_client.go │ │ └── template.go │ ├── common/ # 通用响应/分页工具 │ │ ├── option/ │ │ ├── pagination/ │ │ └── response/ │ ├── migrations/ # SQL 迁移文件 │ ├── router/ # 主路由 │ ├── utils/ # 环境变量与 JWT 工具 │ └── config/ # 环境配置 │ └── web/ # React 前端 └── src/ ├── api/ │ ├── gitea/ # API 客户端 + React Query Hooks │ │ ├── analytics.ts │ │ ├── auth.ts │ │ ├── branches.ts │ │ ├── commits.ts │ │ ├── contributors.ts │ │ ├── repos.ts │ │ └── sync.ts │ ├── ai/ │ │ ├── agent.ts │ │ └── sync-agent.ts │ └── index.ts ├── pages/ # 页面组件 │ ├── setup/ # 连接配置 │ ├── dashboard/ # 总览 │ ├── commits/ # 提交分析 │ │ └── components/ # 提交图表与表格 │ ├── members/ # 成员贡献 │ │ └── components/ # 贡献者图表与表格 │ ├── member-detail/ # 成员详情 │ │ └── components/ # 成员分析组件 │ ├── repos/ # 仓库分析 │ │ └── components/ # 仓库图表与表格 │ ├── repo-detail/ # 仓库详情 │ │ └── components/ # 仓库深度分析组件 │ ├── sync/ # 仓库同步 │ │ └── components/ # 同步界面组件 │ ├── mine/ # 个人档案 + AI 周报 │ │ └── components/ # 个人统计与周报组件 │ ├── ai/ # AI 助手 │ │ └── components/ │ ├── settings/ # 设置与主题 │ │ └── components/ │ └── errors/ # 错误页面 ├── components/ │ ├── ui/ # shadcn/ui 组件 │ ├── sag-ui/ # 自定义共享组件 │ └── ai-elements/ # AI 对话 UI 组件 ├── hooks/ # 数据获取 Hooks ├── layout/ # 侧边栏布局 │ └── sidebar/ # 侧边栏组件 ├── routes/ # TanStack Router 文件路由 ├── stores/ # Zustand 状态管理 ├── types/ # TypeScript 类型定义 └── utils/ # HTTP 客户端、工具函数 ``` ## API 接口 ### 认证 - `POST /api/verify` — 验证 Gitea 令牌 ### 同步 - `POST /api/sync/repos` — 从 Gitea 同步仓库 - `POST /api/sync/repo-commits` — 同步提交(阻塞式) - `POST /api/sync/repo-commits/async` — 同步提交(异步,SSE 进度) - `GET /api/sync/progress/:sync_id` — SSE 进度推流 ### 数据 - `GET /api/repos` — 仓库列表 - `GET /api/repos/:owner/:repo` — 获取仓库详情 - `GET /api/commits` — 提交列表(分页) - `GET /api/commits/stats` — 提交统计 - `GET /api/contributors` — 贡献者列表 - `GET /api/branches` — 分支列表 ### 分析 - `GET /api/dashboard/summary` — 仪表盘概览 - `GET /api/commits/analytics` — 提交分析(趋势、热力图、分布等) - `GET /api/repos/analytics` — 仓库分析(健康度、活跃度、分层) - `GET /api/repos/:owner/:repo/analytics` — 单仓库分析 - `GET /api/contributors/analytics` — 贡献者分析 ### AI - `POST /api/ai/agent/chat` — 与 AI 代理对话 - `POST /api/ai/agent/weekly-report` — 生成周报 - `GET /api/ai/agent/sessions` — 会话列表 - `GET /api/ai/agent/sessions/:session_id/history` — 对话历史 ## 开源协议 MIT