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:
+18
-4
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user