diff --git a/apps/api/src/services/drift_narrator_service.py b/apps/api/src/services/drift_narrator_service.py index 36e92104..567c350f 100644 --- a/apps/api/src/services/drift_narrator_service.py +++ b/apps/api/src/services/drift_narrator_service.py @@ -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: