待处理问题
| 等级 | 问题类型 | URL | 处理说明 |
|---|
本报告不能证明 1:1 迁移、媒体本地化、动态功能、视觉一致性或正式发布验收通过。
#!/usr/bin/env python3 """Offline WordPress WXR preflight and optional static output URL coverage check.""" from __future__ import annotations import argparse import html import json import sys from pathlib import Path ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path:sys.path.insert(0,str(ROOT)) from app.wp_complex_v820 import inspect_wxr, MAX_XML from app.builder import output_path def inspect_file(source:Path,dist:Path|None=None): if source.stat().st_size>MAX_XML:raise ValueError('WXR 超过 16 MB,需分割后分别预检') result=inspect_wxr(source.read_bytes()) if dist is not None: if not dist.is_dir():raise ValueError('静态构建输出目录不存在') # Every actual published URL must be matched. WXR preflight by design # never claims 100% coverage if it has invalid or duplicate routes. from defusedxml import ElementTree as ET root=ET.parse(source).getroot() routes=[] from app.core import route_path from urllib.parse import urlsplit for item in root.findall('./channel/item'): fields={c.tag.rsplit('}',1)[-1]:c.text or '' for c in item if c.tag.rsplit('}',1)[-1] in ('post_type','status','link')} if fields.get('post_type') in ('attachment','revision','nav_menu_item') or fields.get('status','publish')!='publish':continue p=urlsplit(fields.get('link','')) if p.scheme in ('http','https') and p.hostname and not p.query and not p.fragment and p.path: try:routes.append(route_path(p.path)) except ValueError:pass missing=[route for route in sorted(set(routes)) if not output_path(dist,route).is_file()] result['static_build_coverage']={'expected_routes':len(set(routes)),'missing_count':len(missing), 'missing_sample':missing[:100], 'passed':len(missing)==0 and result['blocking_issues']==0} return result def render_html(report): rows=''.join('
离线分析,不连接原站,不修改已有站点
| 等级 | 问题类型 | URL | 处理说明 |
|---|
本报告不能证明 1:1 迁移、媒体本地化、动态功能、视觉一致性或正式发布验收通过。