"""后台管理:提供 Web 管理界面和 REST API,动态修改命令监听配置。""" from aiohttp import web from ..config import command, get_settings_flat, reload_settings, update_settings_from_api from ..response import error, ok # ── API ────────────────────────────────────────────────────── async def api_get_settings(request: web.Request) -> web.Response: """GET /api/settings — 返回全部动态配置。""" return ok(data=get_settings_flat()) async def api_update_settings(request: web.Request) -> web.Response: """PUT /api/settings — 批量更新配置并立即生效。""" try: data = await request.json() except Exception: return error("invalid json") if not isinstance(data, dict): return error("request body must be a json object") filtered = update_settings_from_api(data) if not filtered: return error("no valid settings to update") return ok(data=filtered, msg="配置已更新并生效") async def api_reload_settings(request: web.Request) -> web.Response: """POST /api/settings/reload — 从 settings.yaml 重新加载配置。""" reload_settings() return ok(msg="配置已从 settings.yaml 重新加载") # ── 管理页面 ───────────────────────────────────────────────── ADMIN_HTML = r"""