# -*- coding: utf-8 -*-
"""
modules.py — 平台模块注册

集中声明平台所有可用模块，供首页渲染和路由使用。
新增模块只需在此文件追加声明 + 注册 Blueprint，不改首页代码。

用法：
  from utils.modules import get_modules
  modules = get_modules(role='admin')
"""

# ============================================================
# 模块清单（声明式）
# ============================================================

MODULES = [
    {
        "id": "troubleshoot",
        "name": "问题排查助手",
        "icon": "🔍",
        "description": "基于历史知识库的 AI 问题排查，357 条记录",
        "url": "/troubleshoot",
        "enabled": True,
        "roles": [],      # 空 = 所有登录用户可访问
        "sort": 1,
    },
    {
        "id": "service-manage",
        "name": "服务管理",
        "icon": "🛠️",
        "description": "新统一平台服务授权、服务升级、服务信息管理",
        "url": "/service-manage",
        "enabled": True,
        "roles": ["admin"],
        "sort": 2,
    },
    {
        "id": "service-monitor",
        "name": "服务监测",
        "icon": "📊",
        "description": "通过 SSH 连接监测服务器服务运行状态、输出报告",
        "url": "/service-monitor",
        "enabled": True,
        "roles": [],      # 所有登录用户可访问
        "sort": 3,
    },
    # 后续模块在此追加
]


def get_modules(role=None):
    """获取可用模块列表。

    参数：
      role: 用户角色（None=不过滤，返回全部启用模块）

    返回：
      按 sort 排序的模块列表
    """
    result = []
    for m in MODULES:
        if not m.get("enabled", True):
            continue
        if role is not None and m.get("roles") and role not in m["roles"]:
            continue
        result.append(m)
    result.sort(key=lambda x: x.get("sort", 99))
    return result
