diff --git a/apps/api/src/services/decision_manager.py b/apps/api/src/services/decision_manager.py
index 7df9bac1..e8dcbbae 100644
--- a/apps/api/src/services/decision_manager.py
+++ b/apps/api/src/services/decision_manager.py
@@ -865,12 +865,16 @@ async def _push_auto_repair_result(
)
# Fallback: 找不到原訊息 ID(舊告警或 Redis 過期)→ 發新訊息
+ # 2026-04-15 ogt: 改為 ADR-075 TYPE-2 格式(禁止 raw text)
if not appended:
+ result_icon = "✅" if success else "❌"
+ result_label = "完成" if success else "失敗"
fallback_text = (
- f"{'✅' if success else '❌'} [自動修復{'完成' if success else '失敗'}] "
- f"{inc_id}\n"
- f"對象: {target[:50]}\n"
- f"{status_line}"
+ f"{result_icon} TYPE-2 | 自動修復{result_label}\n"
+ "──────────────────────\n"
+ f"├─ 事件: {inc_id}\n"
+ f"├─ 對象: {target[:50]}\n"
+ f"└─ {status_line}"
)
await gateway.send_notification(fallback_text)
diff --git a/apps/api/src/services/gitea_webhook_service.py b/apps/api/src/services/gitea_webhook_service.py
index ff88cd27..e26221a3 100644
--- a/apps/api/src/services/gitea_webhook_service.py
+++ b/apps/api/src/services/gitea_webhook_service.py
@@ -363,36 +363,27 @@ class GiteaWebhookService:
else "🔴"
)
+ # 2026-04-15 ogt: 改為 ADR-075 TYPE-1 格式(禁止 ═══ raw 格式)
message_lines = [
- "═══════════════════════════",
- "🔍 GITEA CODE REVIEW",
- "═══════════════════════════",
- f"📦 {repo}",
- f"🔀 {target}",
- f"👤 @{author}",
- "───────────────────────────",
+ f"{quality_emoji} TYPE-1 | Gitea Code Review",
+ "──────────────────────",
+ f"├─ 倉庫: {repo}",
+ f"├─ 目標: {target}",
+ f"├─ 作者: @{author}",
]
if analysis:
- message_lines.extend([
- f"{quality_emoji} 品質分數: {analysis.quality_score:.0f}/100",
- ])
+ message_lines.append(f"├─ 品質分數: {analysis.quality_score:.0f}/100")
if analysis.issues:
- message_lines.append(f"⚠️ 發現 {len(analysis.issues)} 個問題")
+ message_lines.append(f"├─ 問題: {len(analysis.issues)} 個")
if analysis.security_concerns:
- message_lines.append(f"🔐 {len(analysis.security_concerns)} 個安全疑慮")
- message_lines.extend([
- "───────────────────────────",
- "🧠 AI 摘要:",
- f"「{analysis.summary[:150]}」",
- ])
+ message_lines.append(f"├─ 安全疑慮: {len(analysis.security_concerns)} 個")
+ message_lines.append(f"├─ AI 摘要: 「{analysis.summary[:150]}」")
else:
- message_lines.append("❌ AI 分析失敗")
+ message_lines.append("├─ AI 分析失敗")
message_lines.extend([
- "───────────────────────────",
- f"🔗 {url}",
- f"📋 Review ID: {review_id}",
+ f"└─ Review #{review_id}",
])
message = "\n".join(message_lines)