#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 从 SQLite 生成"带复选框的交互式功能树" HTML (阶段3 交付物)。 管理员可勾选保留/删除, 支持展开折叠、搜索、查看截图、导出勾选结果 JSON。 输出: docs/功能树-勾选.html 及 docs/selection-template.json """ import os, json, sqlite3 BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DB = os.path.join(BASE, "db", "research.db") OUT = os.path.join(BASE, "docs", "功能树-勾选.html") def build_tree(): conn = sqlite3.connect(DB); conn.row_factory = sqlite3.Row rows = [dict(r) for r in conn.execute( "SELECT node_key,parent_key,level,name,full_path,url,description,understanding,screenshot_path,sort_order,keep " "FROM features ORDER BY level,sort_order,id").fetchall()] conn.close() by_parent = {} for r in rows: by_parent.setdefault(r["parent_key"] or "", []).append(r) def build(pk): out = [] for r in by_parent.get(pk, []): n = dict(r) # 截图相对 docs/ 的路径 sp = r.get("screenshot_path") n["shot"] = ("../" + sp) if sp else "" n["children"] = build(r["node_key"]) out.append(n) return out return build("") HTML = r"""