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:
@@ -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 5(Jupiter)+ 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`:Git(JGit)远程仓库 mirror 缓存、增量 fetch、按时间范围过滤、作者过滤、变更文件提取;支持 HTTPS Token 与 SSH 私钥认证。
|
||||
- `core/range/DateRangeResolver.java`:按月份/日期/周解析时间范围(SVN 与 Git 共用)。
|
||||
- `LogEntry.java`:日志数据模型(POJO;SVN 用 `revision`,Git 用 `commitHash`)。
|
||||
- `web/controller/*`:REST API(SVN、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. 代码风格规范(必读)
|
||||
|
||||
Reference in New Issue
Block a user