微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,93 @@
"""将外部生成的摘要导入到双索引文件。
精简索引 (_session_index.json):仅主对话
完整索引 (_session_index_full.json):主对话 + 子代理
输入文件格式 (_summaries.json):
{
"exec_id_short": "摘要文本",
"447a8e20": "完成了 Kiro 日志存储结构的逆向工程...",
...
}
用法:
python -B scripts/ops/import_session_summaries.py export/session_summaries/_summaries.json
python -B scripts/ops/import_session_summaries.py --dry-run export/session_summaries/_summaries.json
"""
import json
import sys
from pathlib import Path
from _env_paths import ensure_repo_root
ensure_repo_root()
INDEX_DIR = Path("docs/audit/session_logs")
INDEX_PATH = INDEX_DIR / "_session_index.json"
INDEX_FULL_PATH = INDEX_DIR / "_session_index_full.json"
def load_json(path: Path) -> dict:
if not path.exists():
return {"version": 2, "entries": {}}
return json.loads(path.read_text(encoding="utf-8"))
def save_json(path: Path, data: dict):
path.write_text(
json.dumps(data, indent=2, ensure_ascii=False) + "\n",
encoding="utf-8",
)
def import_to_index(entries: dict, summaries: dict, dry_run: bool) -> tuple[int, int]:
"""将摘要写入索引 entries返回 (matched, not_found)"""
matched = 0
not_found = 0
for short_id, desc in summaries.items():
found = False
for full_id in entries:
if full_id.startswith(short_id):
if not dry_run:
entries[full_id]["description"] = desc
matched += 1
found = True
break
if not found:
not_found += 1
return matched, not_found
def main():
import argparse
parser = argparse.ArgumentParser(description="导入摘要到 session 双索引")
parser.add_argument("summaries_file", help="_summaries.json 文件路径")
parser.add_argument("--dry-run", action="store_true", help="只预览不写入")
args = parser.parse_args()
summaries = json.loads(Path(args.summaries_file).read_text(encoding="utf-8"))
print(f"读取 {len(summaries)} 条摘要")
# 精简索引
index = load_json(INDEX_PATH)
entries = index.get("entries", {})
m1, nf1 = import_to_index(entries, summaries, args.dry_run)
print(f"精简索引: {m1} 条匹配, {nf1} 条未找到")
# 完整索引
full_index = load_json(INDEX_FULL_PATH)
full_entries = full_index.get("entries", {})
m2, nf2 = import_to_index(full_entries, summaries, args.dry_run)
print(f"完整索引: {m2} 条匹配, {nf2} 条未找到")
if not args.dry_run:
save_json(INDEX_PATH, index)
save_json(INDEX_FULL_PATH, full_index)
print("写入完成")
else:
print("(dry-run 模式,未写入)")
if __name__ == "__main__":
main()