From 2d41a7b0be16cdc7321d14631d6a61ffb23aa7e6 Mon Sep 17 00:00:00 2001 From: dongzi Date: Thu, 4 Jun 2026 15:54:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=84=9A=E6=9C=AC=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/checker/notifier.py | 126 +++++++++++++++++++++++-------------- .gitea/model.md | 1 + .gitea/model1.md | 1 + 3 files changed, 82 insertions(+), 46 deletions(-) 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} ---