diff --git a/.gitignore b/.gitignore index c06c52a..ff08654 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ # Maven -target/ pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup @@ -9,6 +8,12 @@ dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties .mvn/wrapper/maven-wrapper.jar +backend/target/ +target/ + +# Frontend +frontend/node_modules/ +frontend/dist/ # IntelliJ IDEA .idea/ @@ -40,6 +45,12 @@ md/ *.xlsx outputs/ +# Release artifacts +release/windows/*.jar +release/unix/*.jar +release/*.zip +release/*.tar.gz + # OS generated files .DS_Store .DS_Store? diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 8f3cc1c..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,154 +0,0 @@ -# CLAUDE.md - -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## Project Overview - -SVN Log Tool is a Java-based application that fetches SVN logs, exports them to Markdown, and uses DeepSeek AI to analyze logs and generate Excel workload reports. - -**Tech Stack**: Java 8, Maven, Spring Boot 2.7.18, SVNKit, Apache POI, OkHttp - -**Entry Points**: -- CLI: `com.svnlog.Main` - Interactive SVN log fetcher -- Web: `com.svnlog.WebApplication` - Web workbench with REST API (port 8080) -- AI Processor: `com.svnlog.DeepSeekLogProcessor` - Standalone AI analysis tool - -## Build & Run Commands - -### Build -```bash -# Compile only (fastest validation) -mvn clean compile - -# Package with tests -mvn clean package - -# Package without tests -mvn clean package -DskipTests -``` - -### Run -```bash -# Web workbench (recommended) -mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.WebApplication -# Access at http://localhost:8080 - -# CLI tool -java -jar target/svn-log-tool-1.0.0-jar-with-dependencies.jar - -# AI processor -java -cp target/svn-log-tool-1.0.0-jar-with-dependencies.jar com.svnlog.DeepSeekLogProcessor -``` - -### Test -```bash -# Run all tests -mvn test - -# Run single test class -mvn -Dtest=ClassName test - -# Run single test method -mvn -Dtest=ClassName#methodName test -``` - -## Architecture - -### Core Components - -**SVN Layer** (`com.svnlog`): -- `SVNLogFetcher` - SVN connection, log fetching, user filtering -- `LogEntry` - Log data model -- `Main` - CLI interaction and Markdown generation - -**AI Layer** (`com.svnlog`): -- `DeepSeekLogProcessor` - Calls DeepSeek API, generates Excel workload reports - -**Web Layer** (`com.svnlog.web`): -- `controller/AppController` - REST API endpoints -- `controller/GlobalExceptionHandler` - Centralized error handling -- `service/TaskService` - Async task orchestration -- `service/SvnWorkflowService` - SVN fetch workflow -- `service/AiWorkflowService` - AI analysis workflow -- `service/TaskPersistenceService` - Task history persistence -- `service/HealthService` - System health checks -- `service/SettingsService` - API key and output directory management -- `service/SvnPresetService` - Preset SVN projects -- `service/OutputFileService` - File listing and downloads -- `service/AiInputValidator` - Input validation (max 20 files, 2MB each) -- `service/RetrySupport` - Retry logic for external calls - -**Frontend** (`src/main/resources/static`): -- `index.html` - Main web interface -- `app.js` - Frontend logic -- `styles.css` - Styling - -### Data Flow - -1. **SVN Fetch**: User input → `SVNLogFetcher` → Markdown file (`outputs/md/*.md`) -2. **AI Analysis**: Markdown → `DeepSeekLogProcessor` → Excel file (`outputs/excel/*.xlsx`) -3. **Web Mode**: REST API → Async tasks → Task history (`outputs/task-history.json`) - -### Output Directory Structure -``` -outputs/ -├── md/ # SVN log Markdown files -├── excel/ # AI-generated Excel reports -└── task-history.json # Task persistence (survives restarts) -``` - -## Key REST API Endpoints - -- `POST /api/svn/test-connection` - Test SVN connection -- `POST /api/svn/fetch` - Async SVN log fetch -- `GET /api/svn/presets` - List preset SVN projects -- `POST /api/ai/analyze` - Async AI analysis -- `GET /api/tasks` - List all tasks -- `GET /api/tasks/query?status=&type=&keyword=&page=1&size=10` - Query tasks -- `POST /api/tasks/{taskId}/cancel` - Cancel running task -- `GET /api/health` - System health status -- `GET /api/files` - List output files -- `GET /api/files/download?path=...` - Download file -- `GET /api/settings` - Get settings -- `PUT /api/settings` - Update settings - -## DeepSeek API Configuration - -**API Key Priority** (highest to lowest): -1. Request-level `apiKey` parameter -2. Runtime settings (via `/api/settings`) -3. Environment variable `DEEPSEEK_API_KEY` - -**Security**: Never commit real API keys. Use environment variables in production. - -## Code Style Requirements - -- **Java 8 compatibility**: No Java 9+ APIs -- **Imports**: No wildcards, explicit imports only, grouped by: `java.*` / third-party / `com.svnlog.*` -- **Formatting**: 4 spaces, max 120 chars/line, always use braces for `if/for/while` -- **Naming**: `UpperCamelCase` for classes, `lowerCamelCase` for methods/variables, `UPPER_SNAKE_CASE` for constants -- **Resources**: Use try-with-resources for I/O, explicit UTF-8 encoding -- **Error handling**: Never swallow exceptions, provide actionable error messages - -## Testing Strategy - -- Test directory: `src/test/java/com/svnlog/` -- Naming: `Test`, methods: `shouldWhen` -- Minimal validation: `mvn clean compile` must pass - -## Important Notes - -- **Preset SVN projects** are hardcoded in `Main.java` (lines 14-18) -- **Task persistence** enables history recovery after restart -- **AI input limits**: Max 20 files, 2MB each, `.md` only -- **Async tasks** run in background, tracked via `TaskService` -- **Web frontend** is a single-page app with vanilla JS - -## When Modifying Code - -- SVN logic → `SVNLogFetcher` -- CLI interaction → `Main` -- AI/Excel logic → `DeepSeekLogProcessor` -- Web API → `AppController` + services -- Always update `docs/` if behavior changes -- Run `mvn clean compile` before committing diff --git a/README.md b/README.md deleted file mode 100644 index 44c2f2a..0000000 --- a/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# SVN/Git 日报周报月报一键生成 - -本地离线运行的代码仓库报表生成工具,支持 SVN 和 Git 仓库,一键生成日报、周报、月报。当前仓库仅保留 `Spring Boot` 后端与打包链路。 - -## 核心能力 - -- SVN(远程)+ Git(本地路径)双仓库支持 -- 日报 / 周报 / 月报自动换算日期区间 -- Markdown + Excel 双产物导出 -- DeepSeek AI 摘要增强,可选开启 -- 异步任务管理、历史查询、文件下载 -- 单 jar、Docker、源码三种交付方式 - -## 项目结构 - -```text -backend/ Spring Boot API 与打包入口 -docs/ 用户文档、销售文案、打包说明 -release/ 发行包模板目录 -``` - -## 开发命令 - -### 后端开发 - -```bash -cd backend -mvn clean compile -mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.web.WebApplication -``` - -### 整体构建 - -```bash -make build -``` - -或: - -```bash -cd backend -mvn clean package -DskipTests -``` - -说明:仓库已移除前端代码,`backend/pom.xml` 现在只负责后端构建与打包。 -仓库内置 `backend/.mvn/settings.xml`,默认使用国内镜像源完成 `maven` 依赖下载。 - -## 运行方式 - -### Docker 方式 - -```bash -make up -``` - -访问:`http://localhost:18088` - -### 本机运行 - -```bash -cd backend -mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.web.WebApplication -``` - -## 文档 - -- [发行版打包指南](docs/发行版打包指南.md) -- [用户手册](docs/用户手册.md) -- [快速开始](docs/快速开始.md) -- [销售文案](docs/销售文案.md) - -## 技术栈 - -- 后端:Java 8、Spring Boot 2.7.18 -- SVN:SVNKit -- Git:JGit -- Excel:Apache POI -- AI:DeepSeek API、OkHttp、Gson diff --git a/docs/README_DeepSeek.md b/docs/README_DeepSeek.md deleted file mode 100644 index a997af1..0000000 --- a/docs/README_DeepSeek.md +++ /dev/null @@ -1,39 +0,0 @@ -# SVN 日志 AI 分析(Web) - -## 功能说明 - -通过 Web 工作台上传/选择 Markdown 日志,调用 DeepSeek API 分析并生成 Excel 工作量统计文件。 - -## 启动 - -```bash -# Docker 一键启动(推荐) -make up -``` - -备用方式(本机 Java + Maven): - -```bash -mvn spring-boot:run -Dspring-boot.run.mainClass=com.svnlog.web.WebApplication -``` - -访问:`http://localhost:18088` - -## 使用步骤 - -1. 在「SVN 日志抓取」先生成 `.md` 文件 -2. 在「系统设置」配置 DeepSeek API Key(或使用环境变量 `DEEPSEEK_API_KEY`) -3. 在「AI 工作量分析」选择 `.md` 文件并发起分析 -4. 在「任务历史」或「产物列表」下载 `.xlsx` - -## API Key 读取优先级 - -1. 请求中的 `apiKey` -2. 设置页保存的运行时 `apiKey` -3. 环境变量 `DEEPSEEK_API_KEY` - -## 注意事项 - -- 不要在源码和日志中写入真实密钥 -- 需要可访问 DeepSeek API 的网络环境 -- 接口调用可能产生费用,建议控制调用频率 diff --git a/docs/README_Migration.md b/docs/README_Migration.md deleted file mode 100644 index 802bd09..0000000 --- a/docs/README_Migration.md +++ /dev/null @@ -1,16 +0,0 @@ -# 包结构迁移说明 - -## 入口调整 - -- 当前只保留 `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 输出逻辑。 diff --git a/docs/samples/sample_monthly_report.md b/docs/samples/sample_monthly_report.md deleted file mode 100644 index c5be716..0000000 --- a/docs/samples/sample_monthly_report.md +++ /dev/null @@ -1,99 +0,0 @@ -# SVN 月报 - -## 报告信息 - -- **仓库**: `ERP-Backend` -- **周期**: 2025年05月 月报 -- **来源**: SVN 远程仓库 -- **生成时间**: 2025-06-01 09:00:00 - -## 统计信息 - -- **总提交数**: 45 -- **涉及文件数**: 128 -- **活跃作者数**: 4 -- **作者提交分布**: - - `lisi`: 18 次 - - `wangwu`: 12 次 - - `zhangsan`: 10 次 - - `zhaoliu`: 5 次 -- **涉及模块**: - - `src`: 89 个文件 - - `webapp`: 24 个文件 - - `config`: 10 个文件 - - `docs`: 5 个文件 - -## 工作摘要 - -- 完成采购审批流程模块开发,支持三级审批链路 -- 库存预警功能上线,支持邮件和站内信双通道通知 -- 报表导出模块重构,统一使用 Apache POI 模板引擎 -- 修复财务对账模块金额精度丢失问题(BigDecimal 替换 double) -- 前端表单校验增强,新增 15 个字段级校验规则 -- 数据库慢查询优化 8 处,平均响应时间降低 40% - -## 风险与说明 - -- 采购审批流程尚未覆盖退货场景,计划 6 月迭代补充 -- 库存预警阈值目前为全局配置,后续需支持按品类自定义 - -## 提交明细 - -### r15230 - -**作者**: `lisi` -**时间**: 2025-05-30 16:45:00 -**仓库**: `ERP-Backend` - -**提交信息**: - -``` -feat: 采购审批流程 - 三级审批链路完整实现 -``` - -**变更路径**: -- `src/main/java/com/erp/approval/ApprovalChainService.java` -- `src/main/java/com/erp/approval/ApprovalController.java` -- `src/main/java/com/erp/model/ApprovalRecord.java` -- `webapp/views/approval/list.jsp` - ---- - -### r15218 - -**作者**: `wangwu` -**时间**: 2025-05-28 14:20:00 -**仓库**: `ERP-Backend` - -**提交信息**: - -``` -feat: 库存预警功能 - 支持邮件和站内信通知 -``` - -**变更路径**: -- `src/main/java/com/erp/inventory/AlertService.java` -- `src/main/java/com/erp/notification/EmailSender.java` -- `src/main/java/com/erp/notification/InboxSender.java` -- `config/alert-rules.xml` - ---- - -### r15205 - -**作者**: `zhangsan` -**时间**: 2025-05-25 10:30:00 -**仓库**: `ERP-Backend` - -**提交信息**: - -``` -fix: 修复财务对账金额精度丢失,double 替换为 BigDecimal -``` - -**变更路径**: -- `src/main/java/com/erp/finance/ReconciliationService.java` -- `src/main/java/com/erp/model/FinanceRecord.java` -- `src/test/java/com/erp/finance/ReconciliationServiceTest.java` - ---- diff --git a/docs/samples/sample_weekly_report.md b/docs/samples/sample_weekly_report.md deleted file mode 100644 index a1d5e15..0000000 --- a/docs/samples/sample_weekly_report.md +++ /dev/null @@ -1,115 +0,0 @@ -# Git 周报 - -## 报告信息 - -- **仓库**: `demo-web-app` -- **周期**: 2025-05-19 至 2025-05-25 周报 -- **来源**: Git 本地仓库 -- **作者过滤**: `zhangsan` -- **生成时间**: 2025-05-25 18:30:00 - -## 统计信息 - -- **总提交数**: 12 -- **涉及文件数**: 37 -- **活跃作者数**: 1 -- **作者提交分布**: - - `zhangsan`: 12 次 -- **涉及模块**: - - `src`: 28 个文件 - - `docs`: 5 个文件 - - `config`: 4 个文件 - -## 工作摘要 - -- 完成用户登录模块重构,统一使用 JWT 认证方案 -- 优化首页加载性能,接口响应时间从 800ms 降至 200ms -- 修复订单列表分页查询在大数据量下的 SQL 慢查询问题 -- 新增导出功能,支持 CSV 和 Excel 两种格式 -- 补充单元测试 15 个,覆盖率从 62% 提升至 78% - -## 风险与说明 - -- JWT 密钥目前硬编码在配置文件中,后续需迁移至密钥管理服务 - -## 提交明细 - -### abc1234 - -**作者**: `zhangsan` -**时间**: 2025-05-25 17:20:00 -**仓库**: `demo-web-app` -**引用**: `develop` - -**提交信息**: - -``` -feat: 新增订单导出 Excel 功能 -``` - -**变更路径**: -- `src/main/java/com/demo/service/ExportService.java` -- `src/main/java/com/demo/controller/OrderController.java` -- `src/test/java/com/demo/service/ExportServiceTest.java` - ---- - -### bcd2345 - -**作者**: `zhangsan` -**时间**: 2025-05-24 15:40:00 -**仓库**: `demo-web-app` -**引用**: `develop` - -**提交信息**: - -``` -perf: 优化首页接口查询,添加缓存层 -``` - -**变更路径**: -- `src/main/java/com/demo/service/DashboardService.java` -- `src/main/java/com/demo/config/CacheConfig.java` - ---- - -### cde3456 - -**作者**: `zhangsan` -**时间**: 2025-05-23 11:15:00 -**仓库**: `demo-web-app` -**引用**: `develop` - -**提交信息**: - -``` -fix: 修复订单分页查询慢查询问题,添加复合索引 -``` - -**变更路径**: -- `src/main/resources/db/migration/V20250523__add_order_index.sql` -- `src/main/java/com/demo/mapper/OrderMapper.java` - ---- - -### def4567 - -**作者**: `zhangsan` -**时间**: 2025-05-22 09:30:00 -**仓库**: `demo-web-app` -**引用**: `develop` - -**提交信息**: - -``` -refactor: 重构登录模块,统一使用 JWT 认证 -``` - -**变更路径**: -- `src/main/java/com/demo/security/JwtTokenProvider.java` -- `src/main/java/com/demo/security/JwtAuthFilter.java` -- `src/main/java/com/demo/controller/AuthController.java` -- `src/main/java/com/demo/config/SecurityConfig.java` -- `docs/auth-design.md` - ---- diff --git a/docs/发行版打包指南.md b/docs/发行版打包指南.md deleted file mode 100644 index 492fb62..0000000 --- a/docs/发行版打包指南.md +++ /dev/null @@ -1,78 +0,0 @@ -# 发行版打包指南 - -本文档说明当前纯 `backend/` 结构下的发行版打包方式。 - -## 一键打包 - -在项目根目录执行: - -```bash -make release -``` - -该命令会自动: - -1. 在 `backend/` 执行 `mvn clean package -DskipTests` -2. 生成 `backend/target/svn-log-tool-1.0.0-jar-with-dependencies.jar` -3. 将 jar 复制到 `release/windows/` 和 `release/unix/` -4. 打包 Windows、Unix、Docker 三类发行包 - -## 手动打包步骤 - -### 1. 构建后端产物 - -```bash -cd backend -mvn clean package -DskipTests -``` - -### 2. 复制 jar 到发行目录 - -```bash -cp backend/target/svn-log-tool-1.0.0-jar-with-dependencies.jar release/windows/ -cp backend/target/svn-log-tool-1.0.0-jar-with-dependencies.jar release/unix/ -``` - -### 3. 打包 Windows 版本 - -```bash -cd release/windows -zip -r ../svn-log-tool-1.0.0-windows.zip * -cd ../.. -``` - -### 4. 打包 Unix 版本 - -```bash -cd release/unix -tar czf ../svn-log-tool-1.0.0-unix.tar.gz * -cd ../.. -``` - -### 5. 打包 Docker 版本 - -```bash -cd release/docker -cp ../../Dockerfile . -tar czf ../svn-log-tool-1.0.0-docker.tar.gz * -rm Dockerfile -cd ../.. -``` - -## Docker 构建说明 - -根目录 `Dockerfile` 采用多阶段构建: - -1. `maven:3.9.6-eclipse-temurin-8` 打包 `backend/` -2. `eclipse-temurin:8-jre` 作为最终运行镜像 - -## 发布清单 - -- [ ] Windows 发行包(.zip) -- [ ] Unix 发行包(.tar.gz) -- [ ] Docker 发行包(.tar.gz) -- [ ] 用户手册 -- [ ] 快速开始指南 -- [ ] 样例报表 -- [ ] 产品截图 -- [ ] 演示视频(可选) diff --git a/docs/快速开始.md b/docs/快速开始.md deleted file mode 100644 index ab2fc5e..0000000 --- a/docs/快速开始.md +++ /dev/null @@ -1,90 +0,0 @@ -# 快速开始指南 - -3 步快速上手「SVN/Git 日报周报月报一键生成」 - ---- - -## 方式一:Docker(推荐) - -### 第 1 步:启动服务 - -```bash -cd release/docker -docker compose up -d -``` - -### 第 2 步:打开浏览器 - -访问:http://localhost:18088 - -### 第 3 步:生成报表 - -1. 点击左侧「报表生成」 -2. 选择仓库类型(SVN 或 Git) -3. 填写仓库信息 -4. 选择报表周期(日报/周报/月报) -5. 点击「生成 Markdown + Excel」 - -完成!报表在 `outputs/` 目录下。 - ---- - -## 方式二:Windows - -### 第 1 步:安装 Java - -如果尚未安装,访问 https://adoptium.net/ 下载 JRE 8 (LTS)。 - -### 第 2 步:启动服务 - -双击 `start.bat` - -### 第 3 步:生成报表 - -浏览器打开 http://localhost:18088,按照界面提示操作。 - ---- - -## 方式三:macOS / Linux - -### 第 1 步:启动服务 - -```bash -cd release/unix -./start.sh -``` - -### 第 2 步:生成报表 - -浏览器打开 http://localhost:18088,按照界面提示操作。 - ---- - -## 示例:生成本周周报 - -1. 打开 http://localhost:18088 -2. 左侧点击「报表生成」 -3. 选择「Git」仓库类型 -4. 填写 Git 仓库路径:`/home/user/my-project` -5. 报表周期选择「周报」 -6. 基准日期选择本周任意一天(默认今天) -7. 点击「生成 Markdown + Excel」 -8. 等待完成,自动下载 Excel - ---- - -## 可选:配置 AI 分析 - -如需 AI 自动生成工作摘要: - -1. 访问 https://platform.deepseek.com 获取 API Key -2. 在 Web 工作台 → 系统设置 → 填入 API Key -3. 生成报表时勾选「启用 AI 摘要」 - -不配置也可正常使用基础功能。 - ---- - -## 需要帮助? - -查看完整文档:`docs/用户手册.md` diff --git a/docs/用户手册.md b/docs/用户手册.md deleted file mode 100644 index 28bd12c..0000000 --- a/docs/用户手册.md +++ /dev/null @@ -1,253 +0,0 @@ -# SVN/Git 日报周报月报一键生成 - 用户手册 - -## 目录 - -1. [产品简介](#1-产品简介) -2. [环境要求](#2-环境要求) -3. [安装与启动](#3-安装与启动) -4. [功能说明](#4-功能说明) -5. [AI 工作量分析](#5-ai-工作量分析) -6. [常见问题](#6-常见问题) - ---- - -## 1. 产品简介 - -「SVN/Git 日报周报月报一键生成」是一款本地离线运行的代码仓库报表生成工具。 - -**核心能力:** - -- 连接 SVN 远程仓库或 Git 本地仓库,自动抓取提交日志 -- 支持日报、周报、月报三种统计周期 -- 自动生成 Markdown 格式提交报表 -- 可选集成 DeepSeek AI,自动分析工作量并导出 Excel -- Web 工作台操作,无需命令行 - -**适用场景:** - -- 团队周报/月报编写,快速汇总代码提交记录 -- 项目经理查看团队成员工作量 -- 个人开发者整理工作日志 -- 外包项目交付工作量证明 - -**数据安全:** - -- 所有数据本地处理,不上传任何服务器 -- AI 分析仅发送提交摘要(非源码),且可选关闭 - ---- - -## 2. 环境要求 - -### 方式一:Docker 部署(推荐) - -- Docker 20.10+ -- Docker Compose v2+ -- 无需安装 Java - -### 方式二:本机 Java 运行 - -- Java 8 或更高版本(JRE 即可) -- Windows 7+ / macOS 10.12+ / Linux - -**Java 安装指引:** - -| 系统 | 安装方式 | -|------|----------| -| Windows | 访问 https://adoptium.net/ 下载 JRE 8 (LTS) | -| macOS | `brew install openjdk@8` | -| Ubuntu/Debian | `sudo apt install openjdk-8-jre` | -| CentOS/RHEL | `sudo yum install java-1.8.0-openjdk` | - ---- - -## 3. 安装与启动 - -### 3.1 Docker 方式 - -```bash -# 进入 docker 发行包目录 -cd release/docker - -# 一键启动 -docker compose up -d - -# 查看状态 -docker compose ps - -# 停止服务 -docker compose down -``` - -启动后浏览器访问:**http://localhost:18088** - -### 3.2 Windows 方式 - -1. 解压发行包到任意目录 -2. 双击 `start.bat` -3. 等待控制台显示启动成功 -4. 浏览器访问:**http://localhost:18088** - -### 3.3 macOS / Linux 方式 - -```bash -# 进入 unix 发行包目录 -cd release/unix - -# 启动 -./start.sh -``` - -浏览器访问:**http://localhost:18088** - ---- - -## 4. 功能说明 - -### 4.1 工作台 - -首页展示系统概览: - -- **任务统计**:总任务数、执行中、失败数 -- **系统状态**:输出目录可写性、API Key 配置状态 -- **报表模板**:可用的报表模板列表 -- **最近文件**:最新生成的报表文件,可直接下载 - -### 4.2 报表生成 - -这是核心功能页面,操作步骤: - -**第一步:选择仓库类型** - -- **SVN**:需要填写 SVN 预设项目、用户名、密码 -- **Git**:需要填写本地 Git 仓库路径(如 `/home/user/my-project`) - -**第二步:选择报表周期** - -- **日报**:统计指定日期当天的提交 -- **周报**:统计指定日期所在周(周一至周日)的提交 -- **月报**:统计指定日期所在月的全部提交 - -**第三步:填写参数** - -- **基准日期**:报表统计的参考日期(默认今天) -- **周期标签**:报表标题中的周期描述(自动生成,可修改) -- **作者过滤**:只统计包含指定关键词的作者(留空不过滤) -- **输出名称**:生成文件的名称前缀(自动生成,可修改) - -**第四步:可选 AI 增强** - -- 勾选「启用 AI 摘要」可让 DeepSeek 自动生成工作摘要 -- 需要先在系统设置中配置 API Key - -**第五步:点击生成** - -- 点击「测试连接」验证仓库可访问 -- 点击「生成 Markdown + Excel」开始生成 -- 执行日志区域会实时显示进度 -- 完成后自动下载 Excel 文件 - -### 4.3 任务历史 - -查看所有历史任务: - -- 支持按状态(PENDING/RUNNING/SUCCESS/FAILED/CANCELLED)筛选 -- 支持按类型筛选 -- 支持关键词搜索 -- 分页浏览 -- 可直接下载任务产物 - -### 4.4 系统设置 - -- **DeepSeek API Key**:配置 AI 分析所需的密钥 -- **默认 SVN 项目**:设置默认选中的 SVN 预设 -- **输出目录**:自定义报表输出路径(默认 `outputs`) - ---- - -## 5. AI 工作量分析 - -### 5.1 获取 API Key - -1. 访问 https://platform.deepseek.com -2. 注册账号并登录 -3. 进入「API Keys」页面 -4. 创建新的 API Key -5. 复制 Key(格式为 `sk-...`) - -### 5.2 配置 API Key - -**方式一:Web 设置页** - -在「系统设置」页面填入 API Key 并保存。 - -**方式二:环境变量** - -```bash -export DEEPSEEK_API_KEY=sk-your-key-here -``` - -Docker 方式可在 `docker-compose.yml` 中配置: - -```yaml -environment: - - DEEPSEEK_API_KEY=sk-your-key-here -``` - -### 5.3 使用说明 - -- AI 分析会将提交记录摘要发送给 DeepSeek API -- 不会发送源代码内容,仅发送提交信息 -- 每次分析消耗少量 Token(通常 < 0.01 元) -- 不配置 API Key 也可正常使用基础报表功能 - ---- - -## 6. 常见问题 - -### Q: 启动后无法访问 http://localhost:18088? - -- 确认服务已启动(控制台无报错) -- 检查端口 18088 是否被其他程序占用 -- 尝试使用 http://127.0.0.1:18088 - -### Q: SVN 连接失败? - -- 检查 SVN 地址格式是否正确(以 `http://` 或 `https://` 开头) -- 确认用户名和密码正确 -- 确认网络可以访问 SVN 服务器 -- 如果是 HTTPS,可能存在证书问题 - -### Q: Git 仓库路径无效? - -- 确认路径指向 `.git` 所在的目录(不是 `.git` 本身) -- 路径必须是本地绝对路径 -- Docker 模式下需要将 Git 仓库目录挂载到容器中 - -### Q: AI 分析报错? - -- 检查 API Key 是否正确 -- 确认网络可以访问 api.deepseek.com -- 检查 DeepSeek 账户余额是否充足 - -### Q: 生成的报表在哪里? - -- 默认在程序目录下的 `outputs/` 文件夹 -- `outputs/md/` 存放 Markdown 报表 -- `outputs/excel/` 存放 Excel 工作量统计 -- 也可在 Web 工作台的「任务历史」页面直接下载 - -### Q: 如何修改端口? - -在 jar 同目录下创建 `application.properties` 文件: - -```properties -server.port=8080 -``` - -Docker 方式修改 `docker-compose.yml` 中的端口映射: - -```yaml -ports: - - "8080:18088" -``` diff --git a/docs/销售文案.md b/docs/销售文案.md deleted file mode 100644 index 6515e79..0000000 --- a/docs/销售文案.md +++ /dev/null @@ -1,96 +0,0 @@ -# 闲鱼商品文案 - -## 商品标题(30字以内) - -SVN/Git日报周报月报一键生成工具 本地离线 AI分析 - ---- - -## 商品描述 - -### 一句话介绍 - -程序员必备效率工具!连接 SVN 或 Git 仓库,一键生成日报、周报、月报,支持 AI 自动分析工作量,导出 Markdown + Excel。 - -### 痛点场景 - -- 每周写周报要翻半天 Git 提交记录? -- 项目经理要月度工作量统计,手动整理到崩溃? -- 外包项目交付,需要提供工作量证明? -- 团队成员多,汇总每个人的提交记录费时费力? - -### 产品亮点 - -1. **一键生成**:选择仓库、选择周期、点击生成,3 步搞定 -2. **双仓库支持**:SVN 远程仓库 + Git 本地仓库都能用 -3. **三种周期**:日报 / 周报 / 月报,自动计算日期范围 -4. **AI 智能分析**:接入 DeepSeek AI,自动提炼工作摘要(可选) -5. **Excel 导出**:直接生成工作量统计表,拿来就能用 -6. **Web 操作界面**:浏览器打开就能用,不需要命令行 -7. **本地离线运行**:数据不出你的电脑,安全放心 -8. **Docker 一键部署**:`make up` 一条命令启动 - -### 你会得到什么 - -- 完整源码(Java 8 + Spring Boot) -- Windows 一键启动包(双击 start.bat 即可运行) -- macOS / Linux 启动脚本 -- Docker 部署包 -- 详细用户手册 + 快速开始指南 -- 样例报表(周报 + 月报示例) -- 售后技术支持 - -### 技术栈 - -Java 8 / Spring Boot 2.7 / SVNKit / JGit / Apache POI / DeepSeek API - -### 适合谁 - -- 需要写日报周报月报的开发者 -- 需要统计团队工作量的项目经理 -- 需要提供工作量证明的外包团队 -- 想学习 Spring Boot + 前后端一体化项目的同学 - -### 运行环境 - -- Windows / macOS / Linux 均可 -- 需要 Java 8+(或 Docker) -- AI 功能需要 DeepSeek API Key(免费额度够用很久) - ---- - -## 定价建议 - -- 基础版(源码 + 文档):¥149 -- 标准版(+ 启动包 + 视频教程):¥299 -- 专业版(+ 一对一部署支持 + 定制需求沟通):¥599 - ---- - -## 商品标签(搜索关键词) - -SVN, Git, 日报, 周报, 月报, 工作量统计, 报表工具, 程序员工具, -AI分析, DeepSeek, Spring Boot, Java, 代码日志, 提交记录, -工作量证明, 项目管理, 效率工具 - ---- - -## 买家常见问题(FAQ) - -**Q: 需要什么技术基础?** -A: 不需要编程基础。Windows 用户双击 start.bat 即可启动,打开浏览器操作。 - -**Q: AI 功能收费吗?** -A: 工具本身不收费。AI 功能使用 DeepSeek API,新用户有免费额度,日常使用每月花费不到 1 元。不用 AI 也能正常生成报表。 - -**Q: 支持哪些 SVN/Git 服务器?** -A: SVN 支持所有标准 SVN 服务器(VisualSVN、CollabNet 等)。Git 支持本地仓库(GitHub、GitLab、Gitee 克隆到本地的都行)。 - -**Q: 数据安全吗?** -A: 完全本地运行,不上传任何数据。AI 分析只发送提交信息摘要(不含源码)。 - -**Q: 买了之后怎么获取更新?** -A: 提供售后群,有更新会在群里通知。 - -**Q: 可以定制功能吗?** -A: 专业版包含定制需求沟通,简单需求可免费实现。 diff --git a/release/docker/README.txt b/release/docker/README.txt deleted file mode 100644 index a1d6bd6..0000000 --- a/release/docker/README.txt +++ /dev/null @@ -1,45 +0,0 @@ -SVN/Git 日报周报月报一键生成 - Docker 使用说明 -================================================ - -一、环境要求 ------------ -- Docker 20.10+ -- Docker Compose v2+ - - -二、一键启动 ------------ -将本目录下的 docker-compose.yml 放到任意位置,执行: - - docker compose up -d - -启动后访问:http://localhost:18088 - -查看状态: - docker compose ps - -停止服务: - docker compose down - - -三、数据持久化 ------------ -生成的报表保存在宿主机的 ./outputs/ 目录下。 -容器重启后任务历史和输出文件不会丢失。 - - -四、AI 功能配置(可选) --------------------- -方式一:在 Web 工作台 → 系统设置中填入 API Key - -方式二:通过环境变量传入(修改 docker-compose.yml): - - services: - svn-log-tool: - environment: - - DEEPSEEK_API_KEY=sk-your-key-here - - -五、技术支持 ------------ -如有问题,请联系卖家获取支持。 diff --git a/release/docker/docker-compose.yml b/release/docker/docker-compose.yml deleted file mode 100644 index 9dace56..0000000 --- a/release/docker/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - svn-log-tool: - image: svn-log-tool:latest - build: - context: . - dockerfile: Dockerfile - container_name: svn-log-tool - ports: - - "18088:18088" - volumes: - - ./outputs:/app/outputs - restart: unless-stopped - # 如需配置 AI 功能,取消下方注释并填入 API Key - # environment: - # - DEEPSEEK_API_KEY=sk-your-key-here diff --git a/release/unix/README.txt b/release/unix/README.txt deleted file mode 100644 index 997a055..0000000 --- a/release/unix/README.txt +++ /dev/null @@ -1,49 +0,0 @@ -SVN/Git 日报周报月报一键生成 - macOS / Linux 使用说明 -==================================================== - -一、环境要求 ------------ -- macOS 10.12+ 或 Linux(Ubuntu/CentOS/Debian 等) -- Java 8 或更高版本(JRE 即可) - -安装 Java: - macOS (Homebrew): brew install openjdk@8 - Ubuntu / Debian: sudo apt install openjdk-8-jre - CentOS / RHEL: sudo yum install java-1.8.0-openjdk - - -二、使用方法 ------------ -1. 打开终端,进入本目录 -2. 执行启动脚本: - ./start.sh -3. 浏览器打开 http://localhost:18088 -4. 在 Web 工作台中操作 - - -三、AI 工作量分析(可选) ------------------------ -如需使用 AI 自动分析功能: -1. 访问 https://platform.deepseek.com 获取 API Key -2. 在 Web 工作台 → 系统设置 → 填入 API Key -3. 生成报表时勾选"启用 AI 摘要" - -不配置 API Key 也可正常使用基础报表功能。 - - -四、常见问题 ------------ -Q: 提示 Permission denied? -A: 执行 chmod +x start.sh 赋予执行权限。 - -Q: 端口 18088 被占用? -A: 关闭占用该端口的程序,或在 jar 同目录下创建 - application.properties 文件,添加 server.port=8080 - -Q: 输出文件在哪里? -A: 在 start.sh 同目录的 outputs/ 文件夹下。 - - -五、技术支持 ------------ -如有问题,请联系卖家获取支持。 diff --git a/release/unix/start.sh b/release/unix/start.sh deleted file mode 100755 index 31c6c67..0000000 --- a/release/unix/start.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -# SVN/Git 日报周报月报一键生成 - 启动脚本 - -echo "============================================" -echo " SVN/Git 日报周报月报一键生成" -echo " 本地离线报表生成工具" -echo "============================================" -echo "" - -# 检查 Java 环境 -if ! command -v java &> /dev/null; then - echo "[错误] 未检测到 Java 环境。" - echo "" - echo "请安装 Java 8 或更高版本:" - echo "" - echo " macOS (Homebrew):" - echo " brew install openjdk@8" - echo "" - echo " Ubuntu / Debian:" - echo " sudo apt install openjdk-8-jre" - echo "" - echo " CentOS / RHEL:" - echo " sudo yum install java-1.8.0-openjdk" - echo "" - echo "安装完成后,请重新运行本脚本。" - exit 1 -fi - -# 显示 Java 版本 -JAVA_VER=$(java -version 2>&1 | head -n 1) -echo "[信息] 检测到 Java: $JAVA_VER" -echo "" - -# 检查 jar 文件 -JAR_FILE="svn-log-tool-1.0.0-jar-with-dependencies.jar" -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" - -if [ ! -f "$SCRIPT_DIR/$JAR_FILE" ]; then - echo "[错误] 未找到 $JAR_FILE" - echo "请确认 jar 文件与本脚本在同一目录下。" - exit 1 -fi - -# 创建输出目录 -mkdir -p "$SCRIPT_DIR/outputs" - -echo "[启动] 正在启动 Web 工作台..." -echo "[信息] 启动后请在浏览器中访问: http://localhost:18088" -echo "[信息] 按 Ctrl+C 可停止服务" -echo "" - -cd "$SCRIPT_DIR" -java -jar "$JAR_FILE" diff --git a/release/windows/README.txt b/release/windows/README.txt deleted file mode 100644 index e2169b5..0000000 --- a/release/windows/README.txt +++ /dev/null @@ -1,59 +0,0 @@ -SVN/Git 日报周报月报一键生成 - Windows 使用说明 -================================================ - -一、环境要求 ------------ -- Windows 7 / 10 / 11 -- Java 8 或更高版本(JRE 即可) - -如果尚未安装 Java,请访问以下地址下载: - https://adoptium.net/ - 选择 "JRE 8 (LTS)" → Windows x64 → 下载安装 - -安装后在命令行输入 java -version 确认安装成功。 - - -二、使用方法 ------------ -1. 双击 start.bat 启动服务 -2. 浏览器打开 http://localhost:18088 -3. 在 Web 工作台中操作: - - 选择仓库类型(SVN 或 Git) - - 选择报表周期(日报/周报/月报) - - 填写仓库信息,点击"生成" -4. 生成的报表在 outputs/ 目录下 - - -三、AI 工作量分析(可选) ------------------------ -如需使用 AI 自动分析功能: -1. 访问 https://platform.deepseek.com 注册并获取 API Key -2. 在 Web 工作台 → 系统设置 → 填入 API Key -3. 生成报表时勾选"启用 AI 摘要" - -不配置 API Key 也可正常使用基础报表功能。 - - -四、常见问题 ------------ -Q: 双击 start.bat 闪退? -A: 右键 start.bat → 以管理员身份运行,查看错误信息。 - 通常是 Java 未安装或未加入 PATH。 - -Q: 端口 18088 被占用? -A: 关闭占用该端口的程序,或修改 jar 同目录下的 - application.properties 中的 server.port。 - -Q: SVN 连接失败? -A: 检查 SVN 地址、用户名、密码是否正确。 - 确认网络可以访问 SVN 服务器。 - -Q: 输出文件在哪里? -A: 在 start.bat 同目录的 outputs/ 文件夹下。 - - outputs/md/ Markdown 报表 - - outputs/excel/ Excel 工作量统计 - - -五、技术支持 ------------ -如有问题,请联系卖家获取支持。 diff --git a/release/windows/start.bat b/release/windows/start.bat deleted file mode 100644 index 2043dfc..0000000 --- a/release/windows/start.bat +++ /dev/null @@ -1,53 +0,0 @@ -@echo off -chcp 65001 >nul 2>&1 -title SVN/Git 日报周报月报一键生成 - -echo ============================================ -echo SVN/Git 日报周报月报一键生成 -echo 本地离线报表生成工具 -echo ============================================ -echo. - -:: 检查 Java 环境 -where java >nul 2>&1 -if %errorlevel% neq 0 ( - echo [错误] 未检测到 Java 环境。 - echo. - echo 请安装 Java 8 或更高版本: - echo 下载地址: https://adoptium.net/ - echo 选择 JRE 8 (LTS) 下载安装即可。 - echo. - echo 安装完成后,请重新运行本脚本。 - echo. - pause - exit /b 1 -) - -:: 检查 Java 版本 -for /f "tokens=3" %%v in ('java -version 2^>^&1 ^| findstr /i "version"') do ( - set JAVA_VER=%%v -) -echo [信息] 检测到 Java 版本: %JAVA_VER% -echo. - -:: 检查 jar 文件 -set JAR_FILE=svn-log-tool-1.0.0-jar-with-dependencies.jar -if not exist "%JAR_FILE%" ( - echo [错误] 未找到 %JAR_FILE% - echo 请确认 jar 文件与本脚本在同一目录下。 - echo. - pause - exit /b 1 -) - -:: 创建输出目录 -if not exist "outputs" mkdir outputs - -echo [启动] 正在启动 Web 工作台... -echo [信息] 启动后请在浏览器中访问: http://localhost:18088 -echo [信息] 按 Ctrl+C 可停止服务 -echo. - -java -jar "%JAR_FILE%" - -pause