diff --git a/.gitea/checker/comparator.py b/.gitea/checker/comparator.py
index b52b59c..d50d9ed 100644
--- a/.gitea/checker/comparator.py
+++ b/.gitea/checker/comparator.py
@@ -35,33 +35,66 @@ class ParameterChange:
old_description: Optional[str] = None
source: str = "query"
- def _escape_cell(self, text: str) -> str:
- """表格单元格转义。"""
- return text.replace("|", "\\|").replace("\n", " ")
+ def _change_tag(self) -> str:
+ """变更类型标签(企微颜色)。"""
+ tags = {
+ ChangeType.ADDED: '**新增**',
+ ChangeType.REMOVED: '**删除**',
+ ChangeType.RENAMED: '**重命名**',
+ ChangeType.MODIFIED: '**修改**',
+ }
+ return tags.get(self.change_type, "")
+
+ def _required_tag(self) -> str:
+ """必填/可选标签。"""
+ if self.required is True:
+ return '必填'
+ if self.required is False:
+ return '可选'
+ return ""
+
+ def to_markdown_block(self, index: int = 1) -> str:
+ """格式化为企微友好的参数变更卡片(列表式,非表格)。"""
+ lines: List[str] = []
+ desc = self.description or self.old_description
- def _change_label(self) -> str:
- """变更列文案,对齐 model.md。"""
- if self.change_type == ChangeType.ADDED:
- if self.required is False:
- return "新增可选"
- return "新增必填"
- if self.change_type == ChangeType.REMOVED:
- return "删除"
if self.change_type == ChangeType.RENAMED:
- return f"重命名 {self.old_name} → {self.param_name}"
- if self.change_type == ChangeType.MODIFIED:
- return self.detail or "修改"
- return "-"
+ lines.append(f"**{index}. `{self.param_name}`** {self._change_tag()}")
+ lines.append(f"> `{self.old_name}` → `{self.param_name}`")
+ if desc:
+ lines.append(f"> 说明:{desc}")
+ return "\n".join(lines)
+
+ if self.change_type == ChangeType.ADDED:
+ type_part = f" · `{self.param_type}`" if self.param_type else ""
+ req_part = f" · {self._required_tag()}" if self._required_tag() else ""
+ lines.append(
+ f"**{index}. `{self.param_name}`**{type_part}{req_part} {self._change_tag()}"
+ )
+ if desc:
+ lines.append(f"> 说明:{desc}")
+ return "\n".join(lines)
+
+ if self.change_type == ChangeType.REMOVED:
+ type_part = f" · `{self.param_type}`" if self.param_type else ""
+ lines.append(
+ f"**{index}. `{self.param_name}`**{type_part} {self._change_tag()}"
+ )
+ if desc:
+ lines.append(f"> 说明:{desc}")
+ return "\n".join(lines)
+
+ # MODIFIED
+ lines.append(f"**{index}. `{self.param_name}`** {self._change_tag()}")
+ if desc:
+ lines.append(f"> 说明:{desc}")
+ if self.detail:
+ lines.append(f"> 变更:{self.detail}")
+ return "\n".join(lines)
def to_table_row(self) -> str:
- """格式化为 model.md 参数变更表格行。"""
- desc = self._escape_cell(self.description or "-")
- change = self._escape_cell(self._change_label())
- return f"| `{self.param_name}` | {desc} | {change} |"
-
- def to_markdown_line(self, *, plain: bool = False) -> str:
- """兼容旧调用,委托至表格行。"""
- return self.to_table_row()
+ """兼容旧调用,委托至卡片块。"""
+ return self.to_markdown_block(1)
@dataclass
diff --git a/.gitea/checker/notifier.py b/.gitea/checker/notifier.py
index 3a37066..fc7d913 100644
--- a/.gitea/checker/notifier.py
+++ b/.gitea/checker/notifier.py
@@ -22,38 +22,32 @@ def truncate_text(text: str, max_length: int = MAX_MD_LENGTH) -> str:
return text[:max_length] + "\n\n... 消息过长,已截断"
-def _format_param_table(changes: List) -> List[str]:
- """按 model.md 生成参数变更 Markdown 表格。"""
+def _format_param_change_list(changes: List) -> List[str]:
+ """生成企微友好的参数变更列表(卡片式)。"""
if not changes:
return ['无']
- lines = [
- "",
- "| 字段 | 说明 | 变更 |",
- "|------|------|------|",
- ]
- for change in changes:
- lines.append(change.to_table_row())
+ lines = ["", f"共 **{len(changes)}** 项变更", ""]
+ for i, change in enumerate(changes, 1):
+ lines.append(change.to_markdown_block(i))
+ if i < len(changes):
+ lines.append("")
return lines
def _format_param_details_section(report: EndpointChangeReport) -> List[str]:
- """生成接口参数变动详情区块(对齐 model.md)。"""
+ """生成接口参数变动详情区块。"""
body_changes = [c for c in report.parameter_changes if c.source == "body"]
regular_changes = [c for c in report.parameter_changes if c.source != "body"]
- lines = ["", "---", "", "## 接口参数变动详情", "", "---", ""]
+ lines = ["", "---------------------------------------", "", "#### 【接口参数变动详情】", ""]
if body_changes:
- lines.append("### 类对象变更")
- lines.append("")
- lines.append("- **参数变更列表:**")
- lines.extend(_format_param_table(body_changes))
+ lines.append("**类对象变更**")
+ lines.extend(_format_param_change_list(body_changes))
lines.append("")
if regular_changes:
- lines.append("### 普通参数变更(非对象字段)")
- lines.append("")
- lines.append("- **参数变更列表:**")
- lines.extend(_format_param_table(regular_changes))
+ lines.append("**普通参数变更**")
+ lines.extend(_format_param_change_list(regular_changes))
lines.append("")
if not body_changes and not regular_changes:
diff --git a/.gitea/model.md b/.gitea/model.md
index 702f985..e1a441a 100644
--- a/.gitea/model.md
+++ b/.gitea/model.md
@@ -22,8 +22,8 @@
- [删除] 属性: `attr2` 说明: {说明}
- [修改] 属性: `attr3` 说明: {说明}
-### 普通参数变更(非对象字段)
-- **参数变更列表:**
+### 【参数变更】
+- **变更列表:**
| 字段 | 说明 | 变更 |
|------|------|------|