jar包瘦身

This commit is contained in:
2026-06-10 10:45:52 +08:00
parent a9c916efb1
commit 2137b938d6
12 changed files with 658 additions and 70 deletions

View File

@@ -0,0 +1,38 @@
# API 请求方式变更通知模版
对应 `11.py``build_method_change_markdown()`
适用URI 不变,仅 **HTTP 方法** 变化(如 `GET``POST`)。
> 第一期是否纳入,待产品确认;模版先备齐。
---
## 完整示例
```
# 【API请求方式变更通知】
变更类型: <font color="warning">**修改请求方式**</font>
路径: <font color="info">**jnpf-ftb/jnpf-ftb-biz/src/main/java/jnpf/workflow/controller/ApplyClockInController.java**</font>
修改人: dongzi
修改时间: 2026-06-08 16:30:00
---------------------------------------
#### 【请求方式变更详情】
- **URI** <font color="info">**`/apply/clockIn/{id}`**</font>
- **原请求方式:** <font color="warning">**GET**</font>
- **新请求方式:** <font color="info">**PUT**</font> ← <font color="info">**请求方式已变更**</font>
```
---
## 检测逻辑
- 方法指纹相同 + URI 相同 + `httpMethod` 不同 → `is_method_changed = true`
- 与路径变更、参数变更报告**互斥拆分**(同 11.py `comparator` 约定)
## 实现
- `EndpointDiffEngine`
- `ApiChangeNotifier.buildMethodChangeMarkdown()`

View File

@@ -0,0 +1,121 @@
# API 参数变更通知模版
对应 `11.py``build_markdown_notification()` 中参数变更分支 + `_format_endpoint_block()`
适用:**URI 与 HTTP 方法均未变**,仅入参发生变化。
---
## 完整示例
```
# 【API参数变更通知】
- **修改人:** dongzi
- **修改时间:** 2026-06-08 16:30:00
- **变更类型:** <font color="warning">**修改参数**</font>
- **URI** **POST** `/apply/clockIn`
- **路径:** <font color="info">**jnpf-ftb/jnpf-ftb-biz/src/main/java/jnpf/workflow/controller/ApplyClockInController.java**</font>
---------------------------------------
#### 【接口参数变动详情】
**类对象变更(一级字段)**
共 **1** 个类对象 · **2** 项字段变更
**`ApplyAttendanceChangeDto`**
├─ `taskIds` · `List<String>` · 必填 [新增]
> 说明:流程主键集合
└─ `applyUser1` · `Integer` [删除]
> 说明:申请人员
**普通参数变更**
共 **1** 项变更
1. `id` · `String` · 路径参数 [新增]
> 说明:主键
```
---
## 示例(仅普通参数,无 RequestBody
```
# 【API参数变更通知】
- **修改人:** dongzi
- **修改时间:** 2026-06-08 16:30:00
- **变更类型:** <font color="warning">**修改参数**</font>
- **URI** **GET** `/apply/clockIn/{id}`
- **路径:** <font color="info">**jnpf-ftb/.../ApplyClockInController.java**</font>
---------------------------------------
#### 【接口参数变动详情】
**普通参数变更**
共 **1** 项变更
1. `pageSize` · `Integer` · 查询参数 [新增]
```
---
## 参数分类与检测
| 来源注解 | `source` 字段 | diff 粒度 |
|----------|---------------|-----------|
| `@RequestBody` | `body` | Dto **一级字段**(复用 `FieldDiffEngine` |
| `@PathVariable` | `path` | 参数名、类型、增删 |
| `@RequestParam` | `query` | 参数名、类型、required、增删 |
| 无注解 | `simple` | 待确认是否纳入 |
### 排除的框架参数(建议默认开启)
`HttpServletRequest``HttpServletResponse``BindingResult``Principal``Authentication``Model``ModelMap``UriComponentsBuilder` 等。
---
## ParameterChange 数据结构(对齐 11.py
| 字段 | 说明 |
|------|------|
| `param_name` | 当前参数名 / 字段名 |
| `old_name` | 重命名前名称 |
| `param_type` | 类型字符串,如 `List<String>` |
| `description` | 说明(@Schema / 注释) |
| `source` | `body` / `path` / `query` |
| `body_param_name` | `@RequestBody` 形参名 |
| `parent_dto` | Dto 简单类名 |
| `change_type` | `added` / `removed` / `modified` / `renamed` |
| `detail` | 类型变化等详情 |
---
## 与路径变更的拆分规则11.py 约定)
| 同一次改动 | 通知策略 |
|------------|----------|
| 仅参数变 | 本模版 |
| 路径变 + 参数变 | **拆两条**:先路径通知,再参数通知 |
| 方法变 + 参数变 | **拆两条**:先方法通知,再参数通知 |
| 新增接口 + 带参数 | 路径通知可**附带**参数详情区块 |
---
## JavaParser 实现要点
1. **EndpointSnapshotParser**:遍历 `MethodDeclaration.getParameters()`,读参数注解
2. **@RequestBody**:取 Dto 类型 → `ClassFieldParser.parseFields()` 得字段列表
3. **ParameterDiffEngine**:旧/新快照按方法指纹对齐后 diff
4. **ApiChangeNotifier**:渲染本模版;泛型类型展示规则与类变更通知一致(`<>` 不 HTML 转义)
## 实现
- `ParameterDiffEngine`
- `ApiChangeNotifier.formatEndpointBlock()`
- 复用 `FieldDiffEngine` / `WeComNotifier` 中的字段行格式(可选统一)

View File

@@ -0,0 +1,88 @@
# API 路径变更通知模版
对应 `11.py``build_path_change_markdown()`
适用:**新增接口**、**删除接口**、**修改路径**。
---
## 完整示例(修改路径)
```
# 【API路径变更通知】
变更类型: <font color="warning">**修改路径**</font>
路径: <font color="info">**jnpf-ftb/jnpf-ftb-biz/src/main/java/jnpf/workflow/controller/ApplyClockInController.java**</font>
修改人: dongzi
修改时间: 2026-06-08 16:30:00
---------------------------------------
#### 【URI变更详情】
- **原路径:** <font color="warning">~~`/apply/clockIn`~~</font> ← <font color="warning">**旧路径**</font>
- **新路径:** <font color="info">**`/apply/clockIn/v2`**</font> ← <font color="info">**新路径**</font>
```
---
## 示例(新增接口)
```
# 【API路径变更通知】
变更类型: <font color="warning">**新增接口**</font>
路径: <font color="info">**jnpf-ftb/.../ApplyClockInController.java**</font>
修改人: dongzi
修改时间: 2026-06-08 16:30:00
---------------------------------------
#### 【URI变更详情】
- **原路径:** `-`
- **新路径:** <font color="info">**`/apply/clockIn`**</font> ← <font color="info">**新增**</font>
```
> 若新增接口同时有参数变更,可在路径通知后追加【接口参数变动详情】区块(见 `api-param-change.md`)。
---
## 示例(删除接口)
```
# 【API路径变更通知】
变更类型: <font color="warning">**删除接口**</font>
路径: <font color="info">**jnpf-ftb/.../ApplyClockInController.java**</font>
修改人: dongzi
修改时间: 2026-06-08 16:30:00
---------------------------------------
#### 【URI变更详情】
- **原路径:** <font color="warning">**`/apply/clockIn/{id}`**</font> ← <font color="warning">**已删除**</font>
- **新路径:** `已删除`
```
---
## 字段说明
| 占位符 | 来源 |
|--------|------|
| 变更类型 | `新增接口` / `删除接口` / `修改路径` |
| 路径 | Controller `.java` 相对仓库根路径(`source_file` |
| 原路径 / 新路径 | 类级 `@RequestMapping` + 方法级 Mapping 拼接后的 URI |
| HTTP 方法 | 路径变更通知中默认不展示;与请求方式变更模版区分 |
## 检测逻辑JavaParser
1. 解析旧/新 commit 下同一 Controller 源码 AST
2. 提取每个方法的 `httpMethod` + `uri`(已有 `EndpointParser` 逻辑)
3. 用**方法指纹**(类文件 + 方法名,如 `ApplyClockInController.java#getApply`)匹配新旧接口;参数增删改由 ParameterDiffEngine 检测
4. 指纹相同且 URI 不同 → **修改路径**
5. 仅旧有新无 → **删除**;仅新有旧无 → **新增**
## 实现
- `EndpointSnapshotParser` — 解析快照
- `EndpointDiffEngine` — 对比产出 `EndpointChangeReport.is_renamed_endpoint` 等标志
- `ApiChangeNotifier.buildPathChangeMarkdown()` — 渲染本模版