fix(drift-narrator): 砍 spec.template.spec. 前綴 — 修 Telegram 自動換行醜陋排版
All checks were successful
CD Pipeline / build-and-deploy (push) Successful in 12m1s

2026-04-18 下午(台北時區)— ogt + Claude Opus 4.7

統帥實彈三輪視覺回報: 字段名 'spec.template.spec.volumes' 共 24 字元,
加上 emoji+': '+summary 超過 Telegram <pre> 視覺寬度,自動換行
造成 emoji 與 field name 斷開、單獨成行的醜狀。

修復: _shorten_field_path() 砍 3 種常見前綴:
  - 'spec.template.spec.' → ''
  - 'spec.template.' → ''  (後備)
  - 'spec.' → ''  (後備)

效果對比:
  前: '🟡 spec.template.spec.affinity.podAntiAffinity.preferredDuringS: [清單 3 項]'
  後: '🟡 affinity.podAntiAffinity.preferredDuringS: [清單 3 項]'

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-18 17:10:19 +08:00
parent 584831bace
commit b63aed72df

View File

@@ -577,6 +577,18 @@ class DriftNarratorService:
n += 1
return n
def _shorten_field_path(self, field: str) -> str:
"""
砍掉常見冗長前綴,讓 Telegram 排版不換行
spec.template.spec.volumes → volumes
spec.template.metadata.labels → metadata.labels
spec.internalTrafficPolicy → internalTrafficPolicy
"""
for prefix in ("spec.template.spec.", "spec.template.", "spec."):
if field.startswith(prefix):
return field[len(prefix):]
return field
def _render_telegram_body(
self,
report: "DriftReport",
@@ -607,7 +619,8 @@ class DriftNarratorService:
else:
for it in items:
emoji = "🔴" if it.get("level") == "high" else "🟡"
lines.append(f"{emoji} {it['field']}: {it['summary']}")
short_field = self._shorten_field_path(it['field'])
lines.append(f"{emoji} {short_field}: {it['summary']}")
shown = len(items)
if actionable > shown: