"""创建功能中心分类的父级模块，并建立父子关系

策略：
- 已创建的4个模块(会议运维/资产管理/会务管理/维护工单)直接作为父级模块
- 补充创建剩余的父级分类模块(预定2.0/集控控制/数据统计/信息发布/信息管理/其他分类)
- 把现有旧模块挂到对应父级下
"""
import sqlite3
from datetime import datetime

conn = sqlite3.connect('data/test_platform.db')
cur = conn.cursor()

now = datetime.utcnow().isoformat()

# 1. 补充创建剩余的父级分类模块（避开已存在的会议运维/资产管理/会务管理/维护工单）
new_parent_modules = [
    ('module_parent_yuding20', '预定2.0', '会议预约相关功能'),
    ('module_parent_jikong', '集控控制', '集控控制相关功能'),
    ('module_parent_shujutongji', '数据统计', '数据统计相关功能'),
    ('module_parent_xinxifabu', '信息发布', '信息发布相关功能'),
    ('module_parent_xinxiguanli', '信息管理', '信息管理相关功能'),
    ('module_parent_qita', '其他分类', '其他分类功能'),
]

for mid, name, desc in new_parent_modules:
    cur.execute('SELECT id FROM modules WHERE name = ? AND parent_id IS NULL', (name,))
    if not cur.fetchone():
        cur.execute('''
            INSERT INTO modules (id, name, description, icon, "order", module_type, created_at, updated_at)
            VALUES (?, ?, ?, 'folder', 0, 'standard', ?, ?)
        ''', (mid, name, desc, now, now))
        print(f'  ✅ 创建父模块: {name}')
    else:
        print(f'  已存在父模块: {name}')

# 2. 确保已创建的4个模块作为父级（parent_id=NULL）
existing_parents = [
    'module_c9496f382be1430c958936d5cf473f62',  # 会议运维
    'module_251aebd2e6dd4d09acda0eb179c35d23',  # 资产管理
    'module_69cba085ed3c4b8288a363de7b97aa63',  # 会务管理
    'module_0b5e956ade4c4b188ec1a6826f71229c',  # 维护工单
    'module_1c2cd6d565054bf6ac632aad77685b99',  # 功能中心（保留为顶级）
]
for mid in existing_parents:
    cur.execute('UPDATE modules SET parent_id = NULL WHERE id = ?', (mid,))

# 3. 把现有旧模块挂到对应父级下
def get_parent_id_by_name(name):
    cur.execute('SELECT id FROM modules WHERE name = ? AND parent_id IS NULL', (name,))
    row = cur.fetchone()
    return row[0] if row else None

old_module_parents = {
    'module_e80a5d08b48d4c67a16cb86156320f25': '预定2.0',       # 会议管理 -> 预定2.0
    'module_6790b99750114326b539458f322f3be8': '数据统计',       # 数据分析 -> 数据统计
    'module_ddec220aa05f4a4b9b3728a648dfa62a': '数据统计',       # 运维管理 -> 数据统计
    'module_33fd0582a8e74f46b9fd66051fc61b83': '数据统计',       # 管理看板 -> 数据统计
    'module_432a65347d624b638f9623fe303af957': None,            # 登录模块（保持顶级）
}

for child_id, parent_name in old_module_parents.items():
    if parent_name is None:
        continue
    parent_id = get_parent_id_by_name(parent_name)
    if parent_id:
        cur.execute('UPDATE modules SET parent_id = ? WHERE id = ?', (parent_id, child_id))
        cur.execute('SELECT name FROM modules WHERE id = ?', (child_id,))
        cname = cur.fetchone()[0]
        print(f'  ✅ {cname} -> 父级[{parent_name}]')

conn.commit()

# 4. 验证
print('\n=== 验证模块层级 ===')
cur.execute('SELECT id, name, parent_id FROM modules WHERE parent_id IS NULL ORDER BY name')
top_modules = cur.fetchall()
print(f'\n顶级模块({len(top_modules)}个):')
for row in top_modules:
    print(f'  📁 {row[1]}')
    # 查子模块
    cur.execute('SELECT name FROM modules WHERE parent_id = ? ORDER BY name', (row[0],))
    children = cur.fetchall()
    for c in children:
        print(f'      └─ {c[0]}')

conn.close()
print('\n✅ 父子模块结构建立完成!')
