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
+11 -6
View File
@@ -9,7 +9,7 @@
- 核心目录:
- `src/main/java/com/svnlog/`
- `docs/`
- SVN 预设地址:通过仓库管理页维护,持久化至 `outputs/repository-configs.json`
- 仓库预设(SVN / Git:通过仓库管理页维护,持久化至 `outputs/repository-configs.json`
## 2. 常用命令(Build / Lint / Test / Run
以下命令默认在仓库根目录执行。
@@ -32,7 +32,7 @@
- 运行单个测试方法(重点):`mvn -Dtest=ClassName#methodName test`
- 单测方法示例:`mvn -Dtest=SVNLogFetcherTest#shouldFilterByUser test`
- 调试失败测试(输出更完整):`mvn -Dtest=ClassName test -e`
- 说明:当前 `src/test/java` 为空;新增测试采用 Surefire 默认约定
- 说明:测试采用 JUnit 5Jupiter+ Surefire 默认约定;现有测试含 `GitLogFetcherTest`(本地 git 仓库夹具,不依赖外网)等
### 2.4 Run
- 运行 Web 工作台(Docker,推荐):
@@ -45,13 +45,18 @@
## 3. 代码结构与职责边界
- `SVNLogFetcher.java`:SVN 连接、版本区间处理、日志抓取、用户过滤。
- `LogEntry.java`:日志数据模型(POJO
- `web/controller/*`REST API(SVN、AI、任务、文件、设置)。
- `web/service/*`:异步任务与业务编排(SVN 抓取、AI 分析、输出目录管理)。
- `core/git/GitLogFetcher.java`GitJGit)远程仓库 mirror 缓存、增量 fetch、按时间范围过滤、作者过滤、变更文件提取;支持 HTTPS Token 与 SSH 私钥认证
- `core/range/DateRangeResolver.java`:按月份/日期/周解析时间范围(SVN 与 Git 共用)。
- `LogEntry.java`:日志数据模型(POJOSVN 用 `revision`Git 用 `commitHash`)。
- `web/controller/*`REST APISVN、Git、AI、任务、文件、设置)。
- `web/service/*`:异步任务与业务编排(SVN 抓取、Git 抓取、AI 分析、输出目录管理)。
- `SvnPresetService` / `GitPresetService`:SVN / Git 仓库预设管理(共享 `RepositoryConfigService`,按 `type` 区分)。
- `AiWorkflowService`:项目列表动态化(启用预设 = 项目,固定 3 个 SVN 项目顺序优先),支持 SVN + Git 报告合并整体 Excel。
- `src/main/resources/static/*`Web 前端页面与交互脚本。
- 变更原则:
- 抓取逻辑改在 `SVNLogFetcher`
- 抓取逻辑改在 `SVNLogFetcher` / `GitLogFetcher`
- AI/Excel 逻辑改在 `web/service/AiWorkflowService`
- 时间范围解析改在 `core/range/DateRangeResolver`
- 不把多种职责混入同一方法。
## 4. 代码风格规范(必读)