微信小程序页面迁移校验之前 P5任务处理之前
This commit is contained in:
94
scripts/ops/clean_session_logs.py
Normal file
94
scripts/ops/clean_session_logs.py
Normal file
@@ -0,0 +1,94 @@
|
||||
"""清理 docs/audit/session_logs/ 下的旧会话日志文件。
|
||||
|
||||
保留:
|
||||
- _session_index.json(重置为空 entries)
|
||||
- _system_prompts/ 目录
|
||||
|
||||
删除:
|
||||
- full_session_*.md(v1 旧格式)
|
||||
- session_*.md(v1 旧格式)
|
||||
- 2026-02/ 目录(v2 新格式)
|
||||
- 2026-03/ 目录(v2 新格式)
|
||||
"""
|
||||
|
||||
import json
|
||||
import shutil
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
from _env_paths import ensure_repo_root
|
||||
|
||||
ensure_repo_root()
|
||||
|
||||
BASE = Path("docs/audit/session_logs")
|
||||
|
||||
def main():
|
||||
if not BASE.exists():
|
||||
raise RuntimeError(f"目录不存在: {BASE}")
|
||||
|
||||
stats = {
|
||||
"full_session_md": 0,
|
||||
"session_md": 0,
|
||||
"v2_dirs_removed": [],
|
||||
"v2_files_in_dirs": 0,
|
||||
}
|
||||
|
||||
# 1. 删除 full_session_*.md
|
||||
for f in sorted(BASE.glob("full_session_*.md")):
|
||||
f.unlink()
|
||||
stats["full_session_md"] += 1
|
||||
|
||||
# 2. 删除 session_*.md
|
||||
for f in sorted(BASE.glob("session_*.md")):
|
||||
f.unlink()
|
||||
stats["session_md"] += 1
|
||||
|
||||
# 3. 删除 v2 日期目录(匹配所有 YYYY-MM 格式的目录)
|
||||
import re
|
||||
date_dirs = sorted([d for d in BASE.iterdir() if d.is_dir() and re.match(r"\d{4}-\d{2}$", d.name)])
|
||||
for d in date_dirs:
|
||||
if d.exists() and d.is_dir():
|
||||
# 先删除所有文件
|
||||
files = sorted(d.rglob("*"), reverse=True)
|
||||
for f in files:
|
||||
if f.is_file():
|
||||
try:
|
||||
f.unlink()
|
||||
stats["v2_files_in_dirs"] += 1
|
||||
except PermissionError:
|
||||
print(f" ⚠ 无法删除(文件被锁定): {f}")
|
||||
# 再从深到浅删除空目录
|
||||
time.sleep(0.2)
|
||||
dirs = sorted([x for x in d.rglob("*") if x.is_dir()], reverse=True)
|
||||
for dd in dirs:
|
||||
try:
|
||||
dd.rmdir()
|
||||
except OSError:
|
||||
print(f" ⚠ 无法删除目录(非空/锁定): {dd}")
|
||||
try:
|
||||
d.rmdir()
|
||||
stats["v2_dirs_removed"].append(d.name)
|
||||
except OSError:
|
||||
print(f" ⚠ 无法删除顶层目录: {d}")
|
||||
stats["v2_dirs_removed"].append(f"{d.name}(部分)")
|
||||
|
||||
# 4. 重置 _session_index.json
|
||||
idx = BASE / "_session_index.json"
|
||||
if idx.exists():
|
||||
idx.write_text(json.dumps({"version": 2, "entries": {}}, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||
print(f"✓ _session_index.json 已重置为空 entries")
|
||||
else:
|
||||
print(f"⚠ _session_index.json 不存在,跳过")
|
||||
|
||||
# 打印统计
|
||||
print(f"\n=== 清理统计 ===")
|
||||
print(f" full_session_*.md 删除: {stats['full_session_md']} 个")
|
||||
print(f" session_*.md 删除: {stats['session_md']} 个")
|
||||
print(f" v2 目录删除: {', '.join(stats['v2_dirs_removed']) or '无'}")
|
||||
print(f" v2 目录内文件: {stats['v2_files_in_dirs']} 个")
|
||||
total = stats["full_session_md"] + stats["session_md"] + stats["v2_files_in_dirs"]
|
||||
print(f" 总计删除文件: {total} 个")
|
||||
print(f"\n保留: _session_index.json, _system_prompts/")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user