类型展示的优化
All checks were successful
类变更检测 / class-change-check (push) Successful in 15s

This commit is contained in:
2026-06-08 17:29:11 +08:00
parent be19389f4c
commit eedc1767b3
3 changed files with 56 additions and 24 deletions

View File

@@ -23,9 +23,9 @@
> <font color="warning">[修改]</font> `changeUserId` 说明: <font color="comment">变更人员id</font> 类型: <font color="warning">String</font> → <font color="info">Integer</font> > <font color="warning">[修改]</font> `changeUserId` 说明: <font color="comment">变更人员id</font> 类型: <font color="warning">String</font> → <font color="info">Integer</font>
> <font color="info">[新增]</font> `storeId` 说明: <font color="comment">门店ID</font> > <font color="info">[新增]</font> `storeId` 说明: <font color="comment">门店ID</font> 类型: <font color="info">String</font>
> <font color="warning">[删除]</font> `oldField` 说明: <font color="comment">已废弃字段</font> > <font color="warning">[删除]</font> `oldField` 说明: <font color="comment">已废弃字段</font> 类型: <font color="warning">Integer</font>
## 【影响范围】 ## 【影响范围】

View File

@@ -20,15 +20,17 @@
> <font color="warning">[重命名]</font> <font color="comment">taskId</font> → <font color="info">taskIds</font> 说明: <font color="comment">流程主键</font> > <font color="warning">[重命名]</font> <font color="comment">taskId</font> → <font color="info">taskIds</font> 说明: <font color="comment">流程主键</font>
> <font color="warning">[删除]</font> `changeUserNickName` 说明: <font color="comment">变更人员别名</font> > <font color="info">[新增]</font> `applyUserList` 说明: <font color="comment">申请人员集合</font> 类型: <font color="info">List<String></font>
> <font color="warning">[删除]</font> `applyUser1` 说明: <font color="comment">申请人员</font> 类型: <font color="warning">Integer</font>
``` ```
| 操作 | 标签 | 类型段 | | 操作 | 标签 | 类型段 |
|------|------|--------| |------|------|--------|
| 新增 | info `[新增]` | | | 新增 | info `[新增]` | 始终展示,绿色 `info` |
| 删除 | warning `[删除]` | | | 删除 | warning `[删除]` | 始终展示,橙色 `warning` |
| 修改 | warning `[修改]` | 仅类型变化时出现 | | 修改 | warning `[修改]` | 始终展示,旧类型 warning → 新类型 info |
| 重命名 | warning `[重命名]` | 说明匹配时合并删除+新增;类型变化时附带类型行 | | 重命名 | warning `[重命名]` | 始终展示;仅改名时单色 info改类型时 old → new |
### 重命名配对规则 ### 重命名配对规则

View File

@@ -223,43 +223,73 @@ public class WeComNotifier {
: colorComment(desc); : colorComment(desc);
switch (change.getKind()) { switch (change.getKind()) {
case ADDED: case ADDED: {
return quoteLine(tagAdded() + " " + fieldName + " 说明: " + descPart); StringBuilder line = new StringBuilder();
case REMOVED: line.append(tagAdded()).append(" ").append(fieldName)
return quoteLine(tagRemoved() + " " + fieldName + " 说明: " + descPart); .append(" 说明: ").append(descPart);
case RENAMED: appendFieldType(line, change);
return quoteLine(line.toString());
}
case REMOVED: {
StringBuilder line = new StringBuilder();
line.append(tagRemoved()).append(" ").append(fieldName)
.append(" 说明: ").append(descPart);
appendFieldType(line, change);
return quoteLine(line.toString());
}
case RENAMED: {
StringBuilder renameLine = new StringBuilder(); StringBuilder renameLine = new StringBuilder();
renameLine.append(tagRenamed()).append(" ") renameLine.append(tagRenamed()).append(" ")
.append(colorComment(safe(change.getOldFieldName()))).append("") .append(colorComment(safe(change.getOldFieldName()))).append("")
.append(colorInfo(safe(change.getFieldName()))) .append(colorInfo(safe(change.getFieldName())))
.append(" 说明: ").append(descPart); .append(" 说明: ").append(descPart);
String renameTypeDetail = change.getDetail(); appendFieldType(renameLine, change);
if (renameTypeDetail != null && !renameTypeDetail.isBlank()) {
renameLine.append(" 类型: ").append(formatTypeChange(renameTypeDetail));
}
return quoteLine(renameLine.toString()); return quoteLine(renameLine.toString());
}
case MODIFIED: case MODIFIED:
default: default: {
StringBuilder line = new StringBuilder(); StringBuilder line = new StringBuilder();
line.append(tagModified()).append(" ").append(fieldName) line.append(tagModified()).append(" ").append(fieldName)
.append(" 说明: ").append(descPart); .append(" 说明: ").append(descPart);
String detail = change.getDetail(); appendFieldType(line, change);
if (detail != null && !detail.isBlank()) {
line.append(" 类型: ").append(formatTypeChange(detail));
}
return quoteLine(line.toString()); return quoteLine(line.toString());
}
} }
} }
/** 类型变化:旧 warning → 新 info */ /** 追加字段类型:新增/重命名(仅改名)用 info删除用 warning修改/重命名(改类型)用 old → new */
private void appendFieldType(StringBuilder line, FieldChange change) {
if (change.getKind() == FieldChange.ChangeKind.RENAMED
|| change.getKind() == FieldChange.ChangeKind.MODIFIED) {
String typeDetail = change.getDetail();
if (typeDetail != null && !typeDetail.isBlank()) {
line.append(" 类型: ").append(formatTypeChange(typeDetail));
return;
}
}
String singleType = change.getKind() == FieldChange.ChangeKind.REMOVED
? change.getOldType()
: change.getNewType();
if (singleType == null || singleType.isBlank()) {
return;
}
line.append(" 类型: ");
if (change.getKind() == FieldChange.ChangeKind.REMOVED) {
line.append(colorWarning(singleType));
} else {
line.append(colorInfo(singleType));
}
}
/** 类型变化:旧 warning → 新 info泛型尖括号原样展示不做 HTML 转义 */
private String formatTypeChange(String detail) { private String formatTypeChange(String detail) {
int arrow = detail.indexOf(""); int arrow = detail.indexOf("");
if (arrow < 0) { if (arrow < 0) {
return colorWarning(safe(detail)); return colorWarning(detail);
} }
String oldType = detail.substring(0, arrow).trim(); String oldType = detail.substring(0, arrow).trim();
String newType = detail.substring(arrow + 3).trim(); String newType = detail.substring(arrow + 3).trim();
return colorWarning(safe(oldType)) + "" + colorInfo(safe(newType)); return colorWarning(oldType) + "" + colorInfo(newType);
} }
private String tagAdded() { private String tagAdded() {