import re MAX_TEXT_LENGTH = 2000 def pdd_truncate_text(content: str, max_length: int = MAX_TEXT_LENGTH) -> str: if len(content) <= max_length: return content return content[: max_length - 3] + "..." def pdd_split_long_text(content: str, max_length: int = MAX_TEXT_LENGTH) -> list[str]: chunks = [] remaining = content while remaining: if len(remaining) <= max_length: chunks.append(remaining) break split_at = max_length for punct in ("\n", "。", "!", "?", ";", ".", "!", "?", ";"): pos = remaining[:max_length].rfind(punct) if pos > max_length // 2: split_at = pos + 1 break chunks.append(remaining[:split_at]) remaining = remaining[split_at:] return chunks def pdd_strip_markdown(content: str) -> str: content = re.sub(r"\[([^\]]+)\]\([^)]+\)", r"\1", content) content = re.sub(r"\*\*([^*]+)\*\*", r"\1", content) content = re.sub(r"\*([^*]+)\*", r"\1", content) content = re.sub(r"`([^`]+)`", r"\1", content) content = re.sub(r"^#{1,6}\s+", "", content, flags=re.MULTILINE) content = re.sub(r"^\s*[-*+]\s+", "• ", content, flags=re.MULTILINE) content = re.sub(r"^\s*\d+\.\s+", "", content, flags=re.MULTILINE) content = re.sub(r"\n{3,}", "\n\n", content) return content.strip() def pdd_format_order_card(order_sn: str) -> str: return f"📦 订单编号: {order_sn}\n点击查看详情"