diff --git a/.gitea/checker/notifier.py b/.gitea/checker/notifier.py
index 6be628f..80b1c7e 100644
--- a/.gitea/checker/notifier.py
+++ b/.gitea/checker/notifier.py
@@ -24,40 +24,37 @@ def truncate_text(text: str, max_length: int = MAX_MD_LENGTH) -> str:
def _format_endpoint_block(report: EndpointChangeReport) -> str:
"""
- 格式化单个接口块。
-
- 新增接口:只列参数,不出现「参数变更」字样。
- 变更接口:用颜色区分增删改。
- 删除接口:整接口标红。
+ 格式化单个接口块,按模板匹配格式输出。
"""
+ change_type = "新增接口" if report.is_new_endpoint else ("删除接口" if report.is_removed_endpoint else "修改参数")
uri_line = f"**{report.http_method}** `{report.uri}`"
+ class_line = f"- **全路径类名:** {report.controller_class}"
+
+ header = [
+ f"- **变更类型:** {change_type}",
+ f"- **URI:** {uri_line}",
+ class_line,
+ ]
if report.is_removed_endpoint:
- return (
- f"### 【已删除接口】\n"
- f"{uri_line}\n"
- f"该接口已被移除"
- )
+ return "\n".join(header + [f"该接口已被移除"])
+
+ detail_lines = ["", "---", "", "## 接口参数变动详情", "", "---", ""]
if report.is_new_endpoint:
- lines = [
- f"### 【新增接口】 {uri_line}",
- ]
- if report.parameter_changes:
- for change in report.parameter_changes:
- lines.append(change.to_markdown_line(plain=True))
- else:
- lines.append('无入参')
- return "\n".join(lines)
-
- # 已有接口的参数变更
- lines = [f"### {uri_line}"]
- if report.parameter_changes:
- for change in report.parameter_changes:
- lines.append(change.to_markdown_line(plain=False))
+ detail_lines.append("### 新增接口参数")
else:
- lines.append('(无参数变化)')
- return "\n".join(lines)
+ detail_lines.append("### 参数变更明细")
+
+ if report.parameter_changes:
+ # 简化:使用列表格式匹配模板
+ for change in report.parameter_changes:
+ md = change.to_markdown_line(plain=report.is_new_endpoint)
+ detail_lines.append(md)
+ else:
+ detail_lines.append('无')
+
+ return "\n".join(header + detail_lines)
def build_markdown_notification(
@@ -76,9 +73,10 @@ def build_markdown_notification(
:return: Markdown 文本
"""
parts = [
- "## API 接口参数变更通知",
- f"**修改人:** {push_user}",
- f"**修改时间:** {push_time}",
+ "# API参数变更通知",
+ f"- **变更类型:** 修改参数",
+ f"- **修改人:** {push_user}",
+ f"- **修改时间:** {push_time}",
"",
]
@@ -87,27 +85,17 @@ def build_markdown_notification(
changed_reports = [r for r in reports if not r.is_new_endpoint and not r.is_removed_endpoint]
removed_reports = [r for r in reports if r.is_removed_endpoint]
- if new_reports:
- controllers = sorted({r.controller_class for r in new_reports})
- parts.append(f"### 新增 Controller `{', '.join(controllers)}`")
+ for report in new_reports:
+ parts.append(_format_endpoint_block(report))
parts.append("")
- for report in new_reports:
- parts.append(_format_endpoint_block(report))
- parts.append("")
- if changed_reports:
- parts.append("### 接口参数变更")
+ for report in changed_reports:
+ parts.append(_format_endpoint_block(report))
parts.append("")
- for report in changed_reports:
- parts.append(_format_endpoint_block(report))
- parts.append("")
- if removed_reports:
- parts.append("### 已删除接口")
+ for report in removed_reports:
+ parts.append(_format_endpoint_block(report))
parts.append("")
- for report in removed_reports:
- parts.append(_format_endpoint_block(report))
- parts.append("")
if llm_summary:
cleaned = llm_summary.strip()
@@ -226,3 +214,49 @@ def send_parameter_change_notification(
if sent > 0:
print(f"总共发送 {sent} 条通知到企业微信")
return sent
+
+
+def build_path_change_markdown(
+ old_uri: str,
+ new_uri: str,
+ change_type: str,
+ push_user: str,
+ push_time: str,
+ file_name: str,
+) -> str:
+ """构建 API路径变更通知,匹配 model1.md 模板。"""
+ parts = [
+ "# API路径变更通知",
+ f"- **变更类型:** {change_type}",
+ f"- **修改人:** {push_user}",
+ f"- **修改时间:** {push_time}",
+ f"- **全路径类名:** {file_name}",
+ "",
+ "---",
+ "",
+ "## URI变更详情",
+ "",
+ "---",
+ "",
+ "| 项目 | 路径 |",
+ "|------|------|",
+ f"| 原路径 | `{old_uri if old_uri else '-'}` |",
+ f"| 新路径 | `{new_uri if new_uri else '已删除'}` |",
+ "",
+ "---",
+ ]
+ return "\n".join(parts).strip()
+
+
+def send_path_change_notification(
+ webhook_url: str,
+ old_uri: str,
+ new_uri: str,
+ change_type: str,
+ push_user: str,
+ push_time: str,
+ file_name: str,
+) -> bool:
+ """发送路径变更通知。"""
+ md = build_path_change_markdown(old_uri, new_uri, change_type, push_user, push_time, file_name)
+ return _post_wecom_markdown(webhook_url, md)
diff --git a/.gitea/model.md b/.gitea/model.md
index 5daa850..cc1fdf9 100644
--- a/.gitea/model.md
+++ b/.gitea/model.md
@@ -4,6 +4,7 @@
- **URI:** {Method} {URI}
- **修改人:** {Modifier}
- **修改时间:** {ModifyTime}
+- **全路径类名:** {FileName}
---
diff --git a/.gitea/model1.md b/.gitea/model1.md
index e880cb9..ebd0174 100644
--- a/.gitea/model1.md
+++ b/.gitea/model1.md
@@ -3,6 +3,7 @@
- **变更类型:** {新增接口 / 修改路径 / 删除接口}
- **修改人:** {Modifier}
- **修改时间:** {ModifyTime}
+- **全路径类名:** {FileName}
---