feat: support git repositories and project management

- Git (JGit) log fetching: mirror clone cache, incremental fetch, time/author filter, HTTPS token & SSH key auth
- Git preset management and /api/git/* endpoints (test-connection, version-range, fetch)
- Markdown report generalization: project meta, commit range, short hash entries
- Project management: project entities, drag-drop repo assignment, sorting, rename sync, non-empty delete protection
- AI analysis: project-based grouping merges SVN+Git commits, excludes empty projects from Excel
- Batch fetch: skip repos without logs instead of aborting the whole flow
- Frontend: project management page, repo page project dropdown, Git fields, sidebar updates
- Tests: GitLogFetcherTest, DateRangeResolverTest, ProjectConfigServiceTest, merge/exclusion coverage
This commit is contained in:
liujing
2026-07-31 21:19:12 +08:00
parent b5c7907c23
commit 53f8b2e21b
50 changed files with 4434 additions and 291 deletions
+18 -4
View File
@@ -4,14 +4,14 @@
Web 工作台将现有 CLI 能力封装为可视化页面与 REST API,支持以下流程:
1. SVN 参数录入与连接测试
1. 仓库参数录入与连接测试SVN / Git 两种类型)
2. 异步抓取日志并导出 Markdown
3. 使用 DeepSeek 或 OpenAI 兼容接口分析 Markdown 并生成 Excel
4. 查看任务历史(状态、进度、错误、产物),支持筛选、分页与取消运行中任务
5. 下载输出文件、配置 API Key、SVN 账号与输出目录
6. 工作台展示系统健康状态(输出目录可写性、API Key 配置、任务统计)
批量抓取策略:多个项目按顺序执行(前一个项目完成后才开始下一个)。
批量抓取策略:多个项目SVN + Git 可混合)按顺序执行(前一个项目完成后才开始下一个),最终汇总为一份 Excel 整体报告
## 启动方式
@@ -51,11 +51,21 @@ http://localhost:18088
## 页面说明
- 工作台:最近任务统计与最近产物
- SVN 日志抓取:版本区间、过滤用户与连接测试;SVN 账号密码统一在系统设置中托管
- AI 工作量分析:选择 Markdown 文件、工作周期、输出文件名
- 日志抓取:选择 SVN / Git 仓库(可混合),选时间范围(月/周/日)、过滤用户与连接测试;SVN 自动填充版本号,Git 直接按时间范围抓取
- AI 工作量分析:选择 Markdown 文件、工作周期、输出文件名;SVN 与 Git 报告可多选合并,按项目归类生成整体 Excel
- 任务历史:异步任务状态与产物列表,支持筛选、分页、取消任务
- 仓库管理:SVN / Git 预设 CRUD、连接测试;Git 预设支持分支(留空自动探测)、HTTPS Token 或 SSH 私钥认证
- 系统设置:AI 提供商、DeepSeek API Key、OpenAI 兼容 Base URL/API Key/阶段模型、SVN 用户名/密码、输出目录、默认 SVN 预置项目
## Git 仓库支持说明
- 一个 Git 地址即一个项目(与 SVN 语义一致),在「仓库管理」新增仓库时选择类型 `Git`。
- Git 抓取基于 JGit(纯 Java),HTTPS 使用「用户名 + Token」,SSH 使用预设中保存的私钥(加密存储)。
- 首次抓取会 mirror 克隆到 `java.io.tmpdir/svnlog-git-cache/<presetId>/`(首次较慢),后续增量 fetch。
- Git 报告显示提交短 hash(如 `4fed870`),AI 分析与 Excel 汇总逻辑与 SVN 一致,SVN + Git 报告可混合合并为整体工作量统计。
- SSH 主机密钥默认严格校验(读取 `~/.ssh/known_hosts`);内网可显式开启信任任意主机:
- `SVN_LOG_TOOL_ACCEPT_ANY_SSH_HOST=true` 或 `-Dsvnlog.git.acceptAnySshHost=true`
## 输出目录
- 默认输出目录:`outputs/`
@@ -123,6 +133,10 @@ http://localhost:18088
- `POST /api/svn/fetch`
- `POST /api/svn/version-range`:按 `rangeType=date|week|month` 查询版本范围;旧的 `year/month` 月份请求仍兼容
- `GET /api/svn/presets`
- `POST /api/git/test-connection`
- `POST /api/git/fetch`:按 `rangeType=date|week|month` + 时间参数直接抓取(Git 无版本号)
- `POST /api/git/version-range`:返回 `commitCount` 与首尾提交 hash
- `GET /api/git/presets`
- `POST /api/ai/analyze`
- `GET /api/tasks`
- `GET /api/tasks/query?status=&type=&keyword=&page=1&size=10`