
## TG 多 VPS 中控 Bot 交互继续演进 [P1]
- 用户明确不喜欢 Telegram 底部常驻键盘，最终偏好是“消息内按钮 + 输入框旁菜单键”，已移除旧 reply keyboard 缓存逻辑并保留菜单键命令入口
- 已为 `@vpsbot8_bot` 配置菜单键命令：`/start`、`/nodes`、`/add`、`/overview`、`/auth`、`/alerts`、`/cancel`
- 分组能力已继续补齐：支持节点详情里“改分组”、现有分组按钮切换、新建/输入新分组，以及删除分组时将节点自动移动到 `default`；`default` 分组不可删除
- 关键踩坑：按钮“改分组没反应”的根因不是 Telegram，而是 `on_callback` 里最初漏接了 `node:setgroup*` 分支；修复后恢复正常

## TG 多 VPS 中控 Bot 编辑与资源告警 [P1]
- 已在 `155.103.67.36:/opt/vpsbot8/app.py` 上继续补上节点编辑能力：节点详情新增 `✏️ 编辑`，可修改名称、地址/IP、端口、用户、密码、Key
- 已补上资源告警阈值设置：`cpu_alert_threshold`、`mem_alert_threshold`、`disk_alert_threshold`（0 表示关闭），并接入巡检逻辑；超阈值告警，恢复后可发送恢复通知
- 为资源告警新增 `resource_state` 状态表做去重，避免每次巡检重复刷屏
- 资源采集方式已验证可用：通过节点概览结果解析 `LOAD/MEM/DISK`，样例解析结果为 `cpu=0.0, mem=51.3, disk=43.0`
- 实测验证：`vpsbot8.service` 重启后保持 `active`，并已通过脚本验证 `show_edit_menu` 存在、节点名可临时改写再恢复

## 本轮执行经验 [P2]
- 在 Telegram 通道里执行超长 here-doc / 内联 Python 补丁命令，容易被审批系统误判为 `approval-timeout (obfuscation-detected)`；后续应优先写入临时补丁文件后再执行，减少长命令审批误报
- Codex 在 `/tmp/vpsbot8` 上两次未能协助完成：一次因不是受信任 git 目录，一次因 `401 Unauthorized` 认证失败；本轮最终改为手工补丁 + 远端验证完成交付

## TG 多 VPS 中控 Bot 账单/到期功能 [P1]
- 已在 `155.103.67.36:/opt/vpsbot8/app.py` 上继续补上账单能力：首页新增 `💰 账单`、`⏰ 到期`，菜单命令新增 `/billing`
- 已新增节点账单相关字段展示与统计入口：月成本总计、年成本估算、按分组成本统计、高成本节点排行、30 天内到期节点预览
- 已新增到期列表视图：支持查看 `7 天内` / `30 天内` 到期节点，展示节点名、分组、到期日、剩余天数、备注、价格（若已填写）
- 实测验证：远端运行结果为 `monthly_total 0.0`、`annual_total 0.0`、`top_cost_nodes [('咸鱼云SJC', 'HK', 0.0), ('HKT1', 'HK', 0.0), ('DPNET', 'VPS', 0.0)]`、`expiring30 []`，说明统计链路已接通，只是现有节点尚未录入价格/到期信息
- 踩坑：首次上线 `/billing` 时出现 `NameError: name 'cmd_billing' is not defined`，根因是命令已注册但函数未成功插入；补回 `cmd_billing` 后服务恢复正常

## TG 多 VPS 中控 Bot 批量服务管理 [P1]
- 已在 `vpsbot8` 的批量操作中新增 `⚙️ 批量服务管理`，支持按“全部节点/分组”范围，对指定 systemd 服务执行 `状态 / 重启 / 启动 / 停止`
- 交互流程已固定为：进入批量服务管理 → 选择范围 → 选择动作 → 文本输入服务名（如 `nginx` / `docker` / `openclaw` / `cron`）
- 已新增 `SERVICE_ACTIONS`、`show_batch_service_scope()`、`show_batch_service_actions()`、`run_batch_service_action()`，并在消息文本流程里加入 `batch_service_name` 上下文处理
- 实测验证：远端服务 `vpsbot8.service` 重启后为 `active`；预演 `all + cron + status` 成功输出批量服务状态结果页，说明批量服务管理链路已打通
- 2026-03-16 晚：`vpsbot8` 已补上节点详情内账单入口：节点详情页新增 `💰 账单`，可直接查看并修改备注、金额、到期日；节点详情正文也会显示账单/到期/剩余/备注。
- 2026-03-16 晚：账单金额单位已从固定 `¥` 改为可配置显示，先统一成 `U`，随后又将文案从 `月付(U)` 收敛为更通用的“账单/金额”。
- 2026-03-16 晚：`vpsbot8` 账单模型继续升级为“金额 + 周期 + 货币”三元组：每个节点新增 `price_cycle`（month/quarter/year）与 `price_currency`（默认 U）字段，账单页新增 `周期` / `货币` 按钮，可选 `月付/季付/年付` 与 `U/CNY/USD/HKD/TWD`。
- 2026-03-16 晚：因已支持多币种，账单总览不再直接把不同货币强行求和；当前改为展示“已填账单数量、分组覆盖、节点账单明细、到期预览”，避免多币种总成本误导。
- 2026-03-16 晚：上述“节点详情账单入口 + 周期/货币选项”已部署到 `155.103.67.36:/opt/vpsbot8/app.py`，并重启 `vpsbot8.service` 验证为 `active`；实测输出含 `has_billing_menu True`、`has_cycle_menu True`、`has_currency_menu True`。
