feat(web): unify web entry, preset config, SSE streaming and dual-pane live logs

This commit is contained in:
liumangmang
2026-04-03 15:40:31 +08:00
parent 2d6c64ecff
commit 2150dfe24e
42 changed files with 1917 additions and 1533 deletions

View File

@@ -5,12 +5,11 @@
## 1. 项目概览
- 语言与构建Java 8 + Maven`pom.xml`)。
- 打包产物:可执行 fat jar`jar-with-dependencies`)。
- 入口:`com.svnlog.Main`CLI
- Web 入口:`com.svnlog.WebApplication`(前后端一体,静态页面 + REST API
- 其他入口:`com.svnlog.DeepSeekLogProcessor``com.svnlog.ExcelAnalyzer`
- 统一入口:`com.svnlog.web.WebApplication`(前后端一体,静态页面 + REST API
- 核心目录:
- `src/main/java/com/svnlog/`
- `docs/`
- SVN 预设地址:`src/main/resources/application.properties``svn.presets[*]`
## 2. 常用命令Build / Lint / Test / Run
以下命令默认在仓库根目录执行。
@@ -36,29 +35,19 @@
- 说明:当前 `src/test/java` 为空;新增测试时采用 Surefire 默认约定。
### 2.4 Run
- 运行主程序SVN 日志抓取):
- `java -jar target/svn-log-tool-1.0.0-jar-with-dependencies.jar`
- 运行 Web 工作台(推荐):
- `mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.WebApplication`
- `mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.web.WebApplication`
- 启动后访问:`http://localhost:8080`
- 运行 DeepSeek 处理器:
- `java -cp target/svn-log-tool-1.0.0-jar-with-dependencies.jar com.svnlog.DeepSeekLogProcessor`
- Maven 方式运行 DeepSeek
- `mvn exec:java -Dexec.mainClass="com.svnlog.DeepSeekLogProcessor"`
## 3. 代码结构与职责边界
- `Main.java`CLI 交互、读取输入、调用 `SVNLogFetcher`、输出 Markdown。
- `SVNLogFetcher.java`SVN 连接、版本区间处理、日志抓取、用户过滤。
- `LogEntry.java`日志数据模型POJO
- `DeepSeekLogProcessor.java`:读取 Markdown、调用 DeepSeek API、生成 Excel。
- `ExcelAnalyzer.java`:本地临时分析工具,偏实验性质。
- `web/controller/*`REST APISVN、AI、任务、文件、设置
- `web/service/*`异步任务与业务编排SVN 抓取、AI 分析、输出目录管理)。
- `src/main/resources/static/*`Web 前端页面与交互脚本。
- 变更原则:
- 抓取逻辑改在 `SVNLogFetcher`
- 交互逻辑改在 `Main`
- AI/Excel 逻辑改在 `DeepSeekLogProcessor`
- AI/Excel 逻辑改在 `web/service/AiWorkflowService`
- 不把多种职责混入同一方法。
## 4. 代码风格规范(必读)
@@ -112,7 +101,7 @@
## 5. 安全与敏感信息
- 严禁提交真实密钥、口令、Token、内网敏感地址。
- `DeepSeekLogProcessor` 存在硬编码 API Key 风险;新增改动时应:
- Web 端 AI 分析涉及 API Key新增改动时应
- 优先从环境变量读取(如 `DEEPSEEK_API_KEY`)。
- 回退到交互输入。
- 不把真实值写入源码或日志。