# -*- coding: utf-8 -*- """票 14 前置扫描:demo/index.html 函数签名 + 控件 id + 关键 JS 段行号""" import io, re, sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') P = r"e:\code\crm-backend-matt\.scratch\customer-demo-ref\demo\index.html" txt = open(P, encoding='utf-8').read() lines = txt.split('\n') # 1) 全部函数签名(行号) print("== FUNCTIONS ==") for i, ln in enumerate(lines, 1): for m in re.finditer(r'(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\(([^)]*)\)', ln): print(f"L{i} {m.group(1)}({m.group(2)[:60]})") # 2) HTML/JS 控件 id ids = sorted(set(re.findall(r'id="([^"]+)"', txt))) print("\n== IDS(%d) ==" % len(ids)) print(", ".join(ids)) # 3) 关键锚点行号(辅助定向阅读) anchors = ["dlgCreate", "dlgOppCreate", "doOppCreate", "impUpload", "impConfirm", "cimpUpload", "cimpConfirm", "transfer/", "dlgTransferEntry", "dedup", "reminder", "check-name", "check-phone", "reveal", "defect-panel", "svDelete", "saveForm", "loadForm", "errbox", "memberUserIds", "batchUnarchive", "unarchive", "openQa", "qaSubmit", "dlgFollow", "act("] print("\n== ANCHORS ==") for a in anchors: hits = [i for i, ln in enumerate(lines, 1) if a in ln][:8] print(f"{a}: {hits}")