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

@@ -1,121 +1,32 @@
# SVN日志工作量统计工具DeepSeek版
# SVN 日志 AI 分析Web
## 功能说明
这个工具可以根据SVN日志的markdown文件调用DeepSeek API分析日志内容并生成符合格式要求的工作量统计Excel文件。
通过 Web 工作台上传/选择 Markdown 日志,调用 DeepSeek API 分析并生成 Excel 工作量统计文件。
## 启动
```bash
mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.web.WebApplication
```
访问:`http://localhost:8080`
## 使用步骤
### 1. 准备SVN日志markdown文件
1. 在「SVN 日志抓取」先生成 `.md` 文件
2. 在「系统设置」配置 DeepSeek API Key或使用环境变量 `DEEPSEEK_API_KEY`
3. 在「AI 工作量分析」选择 `.md` 文件并发起分析
4. 在「任务历史」或「产物列表」下载 `.xlsx`
使用原有的SVN日志工具生成markdown文件
```bash
java -jar svn-log-tool-1.0.0-jar-with-dependencies.jar
```
## API Key 读取优先级
按照提示输入SVN仓库地址、账号、密码等信息生成markdown格式的日志文件。
### 2. 运行DeepSeek日志处理工具
```bash
java -cp target/svn-log-tool-1.0.0-jar-with-dependencies.jar com.svnlog.DeepSeekLogProcessor
```
或者使用Maven运行
```bash
mvn exec:java -Dexec.mainClass="com.svnlog.DeepSeekLogProcessor"
```
### 3. 按照提示输入信息
程序会依次提示输入:
- **markdown日志文件路径**:可以直接回车使用当前目录下最新的`svn_log_*.md`文件
- **DeepSeek API Key**请提供有效的DeepSeek API Key也可以直接在代码中修改`API_KEY`常量)
- **输出Excel文件名**:可以直接回车使用默认文件名(格式:`YYYYMM工作量统计.xlsx`
### 4. 等待处理完成
程序会自动:
1. 读取markdown日志文件
2. 调用DeepSeek API分析日志内容
3. 根据分析结果生成Excel文件
生成的Excel文件格式与`202512工作量统计_刘靖.xlsx`保持一致。
## Excel文件格式说明
生成的Excel文件包含以下列
- 序号
- 所属班组
- 技术对接
- 开发人员
- 工作周期
- 开发项目名称
- 具体工作内容
- 空列4个
## DeepSeek API配置
`DeepSeekLogProcessor.java`中,可以修改以下配置:
```java
private static final String DEEPSEEK_API_URL = "https://api.deepseek.com/chat/completions";
private static final String API_KEY = "YOUR_DEEPSEEK_API_KEY"; // 请替换为实际的API Key
```
## 提示词说明
工具会向DeepSeek发送以下提示词要求AI以JSON格式返回工作量统计
```json
{
"team": "所属班组",
"contact": "技术对接人",
"developer": "开发人员",
"period": "工作周期 (例如: 2025年12月)",
"records": [
{
"sequence": 1,
"project": "项目名称",
"content": "具体工作内容"
}
]
}
```
1. 请求中的 `apiKey`
2. 设置页保存的运行时 `apiKey`
3. 环境变量 `DEEPSEEK_API_KEY`
## 注意事项
1. **API Key安全**请妥善保管您的DeepSeek API Key不要将其提交到代码仓库中
2. **网络连接**:需要能够访问DeepSeek API服务器
3. **日志格式**markdown文件需要由SVN日志工具生成包含完整的日志信息
4. **成本控制**DeepSeek API可能产生费用请注意控制使用频率
## 故障排查
### 编译错误
```bash
mvn clean package -DskipTests
```
### 运行时找不到主类
确保使用正确的jar文件
```bash
java -cp target/svn-log-tool-1.0.0-jar-with-dependencies.jar com.svnlog.DeepSeekLogProcessor
```
### API调用失败
- 检查API Key是否正确
- 检查网络连接是否正常
- 检查DeepSeek API服务是否可用
## 依赖说明
项目使用以下主要依赖:
- SVNKit 1.10.11SVN操作
- Apache POI 5.2.5Excel文件读写
- OkHttp 4.12.0HTTP客户端
- Gson 2.10.1JSON处理
## 许可证
本工具仅供内部使用。
- 不要在源码和日志中写入真实密钥
- 需要可访问 DeepSeek API 的网络环境
- 接口调用可能产生费用,建议控制调用频率

16
docs/README_Migration.md Normal file
View File

@@ -0,0 +1,16 @@
# 包结构迁移说明
## 入口调整
- 当前只保留 `com.svnlog.web.WebApplication` 作为唯一入口。
- 已移除 CLI/AI 独立入口类。
## 核心类迁移
- `com.svnlog.SVNLogFetcher` -> `com.svnlog.core.svn.SVNLogFetcher`
- `com.svnlog.LogEntry` -> `com.svnlog.core.svn.LogEntry`
- `com.svnlog.TrustAllSSLContext` -> `com.svnlog.core.svn.TrustAllSSLContext`
## 公共能力
- `com.svnlog.core.report.MarkdownReportWriter`:统一 Markdown 输出逻辑。

View File

@@ -11,12 +11,14 @@ Web 工作台将现有 CLI 能力封装为可视化页面与 REST API支持
5. 下载输出文件、配置 API Key 与输出目录
6. 工作台展示系统健康状态输出目录可写性、API Key 配置、任务统计)
批量抓取策略:多个项目按顺序执行(前一个项目完成后才开始下一个)。
## 启动方式
在仓库根目录执行:
```bash
mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.WebApplication
mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.web.WebApplication
```
启动后访问:
@@ -48,6 +50,12 @@ http://localhost:8080
建议在生产环境优先使用环境变量,避免敏感信息暴露。
## SVN 预设来源与调用方式
- SVN 地址统一维护在 `application.properties``svn.presets[*]` 中。
- 前端不再传 SVN URL业务接口统一传 `presetId`,后端按 `presetId` 解析地址。
- `GET /api/svn/presets` 仅返回 `id``name`(不返回 `url`)。
## 主要 API
- `POST /api/svn/test-connection`
@@ -57,6 +65,7 @@ http://localhost:8080
- `GET /api/tasks`
- `GET /api/tasks/query?status=&type=&keyword=&page=1&size=10`
- `GET /api/tasks/{taskId}`
- `GET /api/tasks/{taskId}/stream`SSE 实时输出)
- `POST /api/tasks/{taskId}/cancel`
- `GET /api/health`
- `GET /api/health/details`