feat: 1、将 - saas:period-config:migration:current 修改为 - Key --> saas:period-config:migration:current
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped

2、将 -   saas:period-config:migration:current 加粗
      3、将旧骨架标注为绿色
      4、将新骨架标注为warn颜色
This commit is contained in:
2026-07-14 11:17:58 +08:00
parent 110beb79c0
commit d0f10e5479
2 changed files with 30 additions and 9 deletions

View File

@@ -40,7 +40,7 @@ public class ReportBuilder {
sb.append("未检测到缓存序列化结构变更。\n"); sb.append("未检测到缓存序列化结构变更。\n");
} else { } else {
for (SchemaChange c : report.getChanges()) { for (SchemaChange c : report.getChanges()) {
sb.append("- `").append(nvl(c.getKeyPattern())).append("`\n"); appendKeyLine(sb, c.getKeyPattern());
if (c.getMessage() != null) { if (c.getMessage() != null) {
sb.append(" ").append(c.getMessage()).append('\n'); sb.append(" ").append(c.getMessage()).append('\n');
} }
@@ -50,21 +50,39 @@ public class ReportBuilder {
} }
for (KeyStructureChange kc : keys) { for (KeyStructureChange kc : keys) {
sb.append("- `").append(nvl(kc.getKeyPattern())).append("`\n"); appendKeyLine(sb, kc.getKeyPattern());
String oldJson = nvl(kc.getOldSkeletonJson()); String oldJson = nvl(kc.getOldSkeletonJson());
String newJson = nvl(kc.getNewSkeletonJson()); String newJson = nvl(kc.getNewSkeletonJson());
if (oldJson.isEmpty() && !newJson.isEmpty()) { if (oldJson.isEmpty() && !newJson.isEmpty()) {
sb.append(" value 新增为 “").append(newJson).append("\n\n"); sb.append(" value 新增为 “").append(fontWarning(newJson)).append("\n\n");
} else if (!oldJson.isEmpty() && newJson.isEmpty()) { } else if (!oldJson.isEmpty() && newJson.isEmpty()) {
sb.append(" value 原结构 “").append(oldJson).append("” 已删除写入\n\n"); sb.append(" value 原结构 “").append(fontInfo(oldJson)).append("” 已删除写入\n\n");
} else { } else {
sb.append(" value 值从 “").append(oldJson).append("\n"); sb.append(" value 值从 “").append(fontInfo(oldJson)).append("\n");
sb.append(" 变更为 “").append(newJson).append("\n\n"); sb.append(" 变更为 “").append(fontWarning(newJson)).append("\n\n");
} }
} }
return sb.toString(); return sb.toString();
} }
/**
* Key 行加粗「Key -->」+ 加粗 key 文本。
* 避免 key 末尾 * 与 markdown ** 冲突,结尾加零宽空格再闭合。
*/
private void appendKeyLine(StringBuilder sb, String keyPattern) {
sb.append("- **Key --> ").append(nvl(keyPattern)).append("\u200b**\n");
}
/** 企微 markdown绿色旧骨架。 */
private String fontInfo(String text) {
return "<font color=\"info\">" + text + "</font>";
}
/** 企微 markdownwarning 橙红(新骨架)。 */
private String fontWarning(String text) {
return "<font color=\"warning\">" + text + "</font>";
}
/** /**
* CI 控制台:字段明细 + 完整企微 Markdown。 * CI 控制台:字段明细 + 完整企微 Markdown。
*/ */

View File

@@ -40,9 +40,9 @@ class ReportBuilderTest {
assertTrue(md.startsWith("## [缓存结构变更] jnpf-java-cloud")); assertTrue(md.startsWith("## [缓存结构变更] jnpf-java-cloud"));
assertTrue(md.contains("> **分支**: code/redis_change_detection_v1.0")); assertTrue(md.contains("> **分支**: code/redis_change_detection_v1.0"));
assertTrue(md.contains("> **时间**: 2026-07-13 16:54:17")); assertTrue(md.contains("> **时间**: 2026-07-13 16:54:17"));
assertTrue(md.contains("`tenant:db:content:*`")); assertTrue(md.contains("- **Key --> tenant:db:content:*\u200b**"));
assertTrue(md.contains("value 值从 “{\"dbName\":\"\"")); assertTrue(md.contains("<font color=\"info\">{\"dbName\":\"\",\"linkList\":[{\"id\":\"\"}]}</font>"));
assertTrue(md.contains("变更为 “{\"vo\":")); assertTrue(md.contains("<font color=\"warning\">{\"vo\":{\"dbName\":\"\",\"linkList\":[{\"id\":\"\"}]},\"expiresAtMs\":0}</font>"));
assertFalse(md.contains("### P0")); assertFalse(md.contains("### P0"));
assertFalse(md.contains("位置")); assertFalse(md.contains("位置"));
assertFalse(md.contains("模式")); assertFalse(md.contains("模式"));
@@ -75,5 +75,8 @@ class ReportBuilderTest {
assertTrue(console.contains("**删除字段**: x")); assertTrue(console.contains("**删除字段**: x"));
assertTrue(console.contains("======== 企微 Markdown ========")); assertTrue(console.contains("======== 企微 Markdown ========"));
assertTrue(console.contains("value 值从")); assertTrue(console.contains("value 值从"));
assertTrue(console.contains("- **Key --> k1\u200b**"));
assertTrue(console.contains("<font color=\"info\">"));
assertTrue(console.contains("<font color=\"warning\">"));
} }
} }