忘记密码?
确认操作
总览
读取中...
🛡️ 守护状态 P3
读取中...
最近检查:
⚡ 快速操作
读取中...
机器人心跳
读取中...
📊 数据完整性监控
读取中...
VPS 资源
读取中...
机器人 / 脚本
读取中...
📜 日志查看 点左侧机器人查看日志
← 从左侧选一个机器人
异常中心
🚨 待处理异常
读取中...
定时任务
每日任务
读取中...
定时发排班
发送早班排班(0700)每日执行06:50明日 06:50
发送晚班排班(1100)每日执行10:40明日 10:40
生成今日请假清单每日执行00:00明日 00:00
月度任务
读取中...
TG 管家指令
指令一览
/a总览状态
/b异常清单
/c今日任务
/d定时任务
/e机器人心跳
/h查看日志
/i手动巡检
/r重启机器人(按钮选单)
AI 对话模式
非 / 开头的消息将进入 AI 对话模式。
AI 可分析异常、解释日志、判断原因、提供修复建议。
AI 不会执行操作,所有执行必须通过指令触发。
📋 依赖清单
读取中...
跨机器人文件依赖
读取中...
新增依赖项
❓ 面板操作说明
📌 这是什么?

Wendy 监控中枢 — 把分散在 VPS 服务器、本机 Windows 电脑、Google Apps Script 的脚本统一管起来:

  • 看哪些脚本还活着(心跳 / systemd 状态)
  • 异常时自动报警 → TG 通知
  • 关键 Google Sheet 数据完整性检查
  • 依赖清单可视化(每个脚本读写哪些资源)
🗺️ 各分页都干什么
总览一眼看完整体状态:VPS 资源、机器人心跳、守护级别(P1-P3)、数据完整性。每天打开就来这里。
机器人/脚本所有被监控的脚本列表 + 最近日志 + 手动重启按钮。
异常中心未处理 / 已处理异常列表。可手动「解决」或「重开」。已处理项 3 天后自动清理。
定时任务所有有 cron / 触发器的脚本(包括 GAS Apps Script)。注册时填了「排程时间」字段的本机脚本也会进这里。
📋 依赖清单每个 bot 读写的资源(Google Sheet / 本地文件 / API / TG)。每条 dep 行末有徽章显示健康状态(✓ ok / ⚠ 缺失 / ✗ 错误 / · 未监控)。
📖 介绍说明每个脚本是干嘛的、功能列表(从脚本 docstring / 顶部注释自动提取)。
❓ 操作说明就是你现在看的这页。
📜 操作日志面板上「添加/删除/修改」等动作的审计日志。保留 3 天。
⚙️ 设定改密码、配置 VPS 连线、TG 通知、添加新监控项目(4 种方式:自动扫描 / 手动 / 本机脚本 / GAS)。
🆕 怎么添加新监控项目?
到「设定 → 添加监控项目」,4 种方式:
  1. 🔍 自动扫描 — SSH 到 VPS 找所有 .py / .sh,未注册的自动全部加入。
  2. 📝 手动添加 — SSH 扫描后弹列表,你勾选哪些要加(已添加的会标「已在监控中」)。
  3. 📁 添加本机脚本 — 给你的 Windows 本地脚本接入心跳监控。会引导你:① 选脚本档 → ② 复制回传代码到脚本 → ③ 可选填排程/依赖 → ④ 注册 + 显示开机自启指引。
  4. 🟢 添加 GAS — 输入 Google Apps Script 部署 URL,自动扫触发器加入定时任务。
🚨 异常处理流程
  1. 面板检测到异常 → 进入「异常中心」+ 总览右上「未处理异常」红点
  2. 同时(如果配置了 TG)发通知到所有 Chat ID
  3. 你点进异常卡,查看详情和最近日志
  4. 处理完后点「✅ 标记已解决」,3 天后自动清理
  5. 如果是误报,下次同一类异常会自动不再触发(用 bot+title 配对去重)
🎨 界面小技巧
  • 右下角浮动按钮 🖥️ ☀️ 🌙 — 全页可见,切换系统/开灯/关灯主题
  • 异常卡里的展开按钮可看最近日志原文
  • 依赖清单行末徽章会在数据完整性出问题时立即显示
  • 设定 → 修改密码可改;忘记密码可发 TG 验证码重置
📜 操作日志 保留最近 3 天
读取中...
⚙️ 设定
修改密码
🖥️ VPS 连线设定
读取中...
📨 TG 通知设定
Chat ID 可向 @userinfobot 发任意消息取得;群组 ID 把 bot 拉进群后用 @RawDataBot 取得。
➕ 添加监控项目
🔍
自动扫描
扫描 VPS · 全部自动加入
📝
手动添加
扫描后挑选
📁
添加本机脚本
选档 · 生成回传代码
🟢
添加 GAS
输入 URL · 扫触发器
🔁
重新绑定
已注册但没心跳?重新生成接入指令
目前监控清单
读取中...
添加 VPS
📁 选取 VPS 资料夹
当前: /root
读取中...
📁 添加本机脚本 — 资料夹扫描
① 选资料夹 + 扫描 ② 接入指令
💡 选脚本所在资料夹,面板自动扫描里面的 .py / .bat / .ps1 等可监控档案,自动识别每个的运行方式 / 依赖 / 语言,你只要勾选哪些要加入即可。
📁
点击选资料夹把资料夹拖到这里
扫描资料夹内所有 .py / .bat / .cmd / .ps1 / .sh / .js / .ts
💡 可多次拖入不同资料夹合并扫描;或一次拖多个
🔁 重新绑定本机脚本
如果你之前注册了脚本但忘了加心跳代码(或者代码删了),脚本会一直显示「等待首次心跳」。
选要重新生成接入指令的脚本,把生成的指令粘给 Claude Code(或用 PowerShell 一键)即可。
🔍 扫描结果
🔐 重置密码
系统会发送 6 位验证码到您预设的 Telegram。
⚠ 需要先在「设定 → TG 通知设定」配置 Bot Token + Chat ID
➕ 添加快捷操作
勾选要加到总览的操作(已加入的会显示为灰色)
🟢 添加 Google Apps Script
添加时系统会自动 GET URL 抓 ScriptApp.newTrigger(...) 触发器,没扫到也能加(标注「排程未知」)。
🤖 Claude Code 面板
📋 错误内容
从异常中心点击「发送至 Claude」,或在此粘贴日志 / 错误内容
🛡️ 系统安全提示
🔑Bot Token 与 API Key 均硬编码在脚本中,请定期轮换并避免推送至公共仓库
🚫禁止手动 python3 bot.py 启动机器人,必须通过 systemctl 管理,避免多实例 Telegram Conflict
🔒/root/ 目录权限为 700,monitor_api 以 ubuntu 运行,日志读取需要 sudo tail,不可直接访问
代码审核(code_review.py)通过 Popen 异步执行,勿重复点击,OpenAI API 有并发与速率限制
📋Google Sheet 通过公开 CSV 接口读取,写入依赖 Apps Script Web App;修改前须核对 dependency_map.md
🛑执行重启 / 操作前确认 Guardian 状态,P0 状态下所有自动操作应暂停,优先人工排查
🔐监控面板 Token 存储于 sessionStorage,关闭浏览器后自动失效;密码连续错误 5 次锁定 5 分钟
📖 介绍说明
🤖 机器人 / 脚本一览
点击标签可展开 / 收起详细说明
Shell 脚本发工作机器人schedule_bot.sh点击展开
  • 每日 06:50 / 10:40 由 Cron 触发,分别发送 0700 / 1100 班次排班消息到 TG 群组
  • 从「早班工作表 — 当月工作安排」读取当日班次人员名单,支持早班/晚班/双班多种排班模式
  • 从「早班工作表 — 人员能力表」读取各岗位所需技能,自动分配适合人员到对应岗位
  • 读取 leave_today.txt(请假机器人写入)扣除当日请假人员,实时反映当日出勤状况
  • 内建缺岗 / 兼岗冲突检测:发现人力不足或一人兼多岗时,附加警告说明
  • 发送前检查 Guardian 守护状态,P0 严重异常时自动终止执行并记录日志
📁 /root/schedule_bot/schedule_bot.sh  ·  send_schedule.sh  ·  leave_today.txt
Shell Daemon请假机器人tg_leave_daemon.sh点击展开
  • 长驻后台常驻进程,通过 Telegram getUpdates 轮询监听管理员 TG 消息
  • 识别请假指令(格式:姓名 请假 / 休假 / 补班),将名单追加写入 /root/schedule_bot/leave_today.txt
  • 支持取消请假(从 leave_today.txt 移除对应姓名)与查询今日请假清单
  • 每日 00:00 由 Cron 自动清空 leave_today.txt,确保隔日请假记录从零开始
  • 通过 tg_offset.txt 记录已读消息 offset,重启后不会重复处理历史消息
📁 /root/schedule_bot/tg_leave_daemon.sh  ·  leave_today.txt  ·  tg_offset.txt
Python Bot日报机器人bot.py点击展开
  • 监听 TG 群组消息,识别含「提交人」关键字的日报内容
  • 主流程:消息须 @TW_Wendi605_02bot,提取提交人姓名后与当日排班表比对,确认人员在班才写入
  • 静默写入规则:@TW_beila_bot 的日报消息直接写入 Sheet 不发任何回复,不影响群组
  • 写入路径:日报原文 POST 到月復盤 Apps Script Web App → 由 Apps Script 落地写入 Google Sheet(daily_reports 分页,含 report_date / reporter_name / raw_content 等栏位)
  • 支持补交(消息含「补交」关键字时跳过排班比对,直接写入)
  • 全员当日日报提交完毕后,调用 GPT 生成汇整审批报告并回发到 TG 群组
  • 本地 submitted.json 暂存当日已提交名单,每日重置
📁 /root/daily_bot/bot.py  ·  submitted.json  ·  Sheet: daily_reports
Python Bot出勤机器人attendance_bot.py点击展开
  • 监听 TG 群组消息,捕获含「台达」关键字的异常出勤通报
  • 自动解析出勤异常内容(人员、班次、原因),写入 Google Sheet「早班排假表 — 出勤记录」分页
  • 每日 07:10 通过内建 threading.Timer 私聊管理员发送出勤确认询问
  • 支持 /monthly 指令查询本月出勤异常记录汇总
  • 使用 Google Service Account(google_service_account.json)进行 Sheet 写入授权
  • 本地 attendance_bot_data.json 暂存当日出勤数据
📁 /root/attendance_bot/attendance_bot.py  ·  /root/credentials/google_service_account.json
Python Bot日报填写机器人wendy_bot.py点击展开
  • 专供管理员(温蒂)私聊使用,不响应群组或其他用户
  • /d 指令启动多步骤对话流程:① 收集数据段(接线量/响应时间/质量指标/出勤状况)→ ② 收集补充说明
  • 数据段使用纯规则解析(正则)提取平台接线量、响应时长、评分、扣分、投诉等关键指标
  • 补充说明调用 GPT-4o-mini 分类整理:机器人状态(客服/行政)、异常情况、代优化项、规划
  • 基于代优化和规划内容,由 GPT 生成「明日动作 TOP3」
  • 生成标准格式日报预览(01今日结果 / 02死锁阻碍 / 03专项复盘 / 04明日动作)
  • 解析结果存储至 fill_params.json,供后续填表脚本使用
  • 瞬时网络错误(httpx.ReadError / NetworkError)在 error_handler 中静默处理,不发通知
📁 /root/wendy_bot/wendy_bot.py  ·  fill_params.json
Python Bot本地程序桥接机器人cs_bridge/main.py点击展开
  • 桥接客服平台(棋牌后台)与 TG 群组,实时将平台新消息转发到 TG
  • 转发消息含玩家 ID、消息内容、接收时间,便于客服在 TG 端即时响应
  • 自动追踪未回复玩家,60 / 120 / 180 秒分级提醒未处理消息
  • 支持接线控制指令:开始接线 / 暂停接线 / 恢复接线,由管理员在 TG 端下达
  • 防刷屏保护:通过 flood_threshold 控制转发频率,避免高峰期消息爆量
  • 业务规则独立维护于 core/rules.py,便于调整识别逻辑
📁 /root/cs_bridge/main.py  ·  core/rules.py  ·  bot/handler.py
Python BotTG 管家机器人tg_monitor_bot.py点击展开
  • 系统监控核心,仅响应管理员私聊(OWNER_ID 硬限制)
  • 每日 08:00 自动发送完整系统巡察报告(所有机器人状态、VPS 资源、异常汇总)
  • 每 2 小时(07:00 — 14:00)执行定频自动巡察,发现异常立即告警
  • 后台持久化任务通过 _bg_tasks Set 持有引用,防止 asyncio GC 销毁导致任务静默失效
  • 指令一览:/a 总览状态 · /b 异常清单 · /c 今日任务 · /d 定时任务 · /e 机器人心跳 · /h 查看日志 · /i 手动巡检 · /r 重启机器人
  • 非 / 开头的消息进入 AI 对话模式,接入 GPT-4o-mini 分析异常、解释日志、提供修复建议
  • 通过 localhost:5055 调用 monitor_api 获取所有系统数据
📁 /home/ubuntu/monitor_api/tg_monitor_bot.py  ·  依赖 monitor_api @ localhost:5055
Apps Script月復盤機器人云端 Apps Script点击展开
  • 每月 25 日 08:00 自动生成当月月度复盘报告(基于 Google Sheet 数据汇整)
  • 生成完成后自动复制副本至「温蒂复盘资料夹」存档
  • 作为日报写入的中间层:接收来自日报机器人的 POST 请求,将日报原文落地写入 Google Sheet daily_reports 分页
  • 写入内容包含:report_date(YYYY-MM-DD)、reporter_name、raw_content 等标准栏位
  • 每日 09:30 由 Cron 触发 run_report_check.py 检查昨日上班人员是否全员提交日报
☁️ Google Apps Script(云端) ·  Sheet: 日报记录表 daily_reports  ·  不受本面板控制
Apps Script月排班機器人云端 Apps Script点击展开
  • 每月 26 日 12:00 自动读取人员配置与排休表,生成次月完整排班表
  • 生成后需管理员人工确认排班内容是否正确
  • 确认无误后,于每月最后一天 12:00 自动将排班结果转移至正式工作表
  • 每日 14:00 检查隔天排班是否存在缺岗或兼岗冲突,结果通过 TG 机器人通知管理员
☁️ Google Apps Script(云端) ·  Sheet: 早班工作表  ·  不受本面板控制
Flask API监控 APImonitor_api/app.py点击展开
  • 为本监控面板提供全部后端数据接口,运行于 localhost:5055,以 ubuntu 用户身份运行
  • 机器人状态查询(systemd is-active)、日志读取(sudo tail 访问 /root/)、服务重启(sudo systemctl restart)
  • Guardian 守护状态评估:综合日志错误、服务状态、排班文件、依赖健康,输出 P0-P3 等级
  • 依赖健康检查:后台线程每 10 分钟扫描一次所有 Google Sheet / 本地文件依赖可用性
  • 快速操作接口:手动巡察 / 发排班 / 日报汇整检查 / 代码审核(均需 Token 验证)
  • Token 认证:登录后颁发随机 Token,有效期 8 小时,连续失败 5 次锁定 5 分钟
📁 /home/ubuntu/monitor_api/app.py  ·  config.json  ·  端口 5055
⏰ 定时任务完整清单
时间任务负责方通知方式
00:00清空今日请假清单(leave_today.txt)Cron
06:50发送 0700 排班到 TG 群组Cron → 发工作机器人TG 群组
07:10私聊管理员询问今日出勤状况出勤机器人(内建 threading)TG 私聊
08:00每日系统巡察完整报告TG 管家(auto_patrol)TG 私聊
09:00所有机器人/脚本代码审核Cron → code_review.pyTG 私聊(管家发送)
09:30日报汇整检查(昨日日报是否全员写入)Cron → run_report_check.pyTG 私聊(管家发送)
10:40发送 1100 排班到 TG 群组Cron → 发工作机器人TG 群组
14:00检查隔天排班缺岗/兼岗冲突月排班機器人(Apps Script)TG 通知
07-14点 每2h系统定频巡察TG 管家(auto_patrol)TG 私聊
每月26日 12:00自动生成次月排班,确认无误后月末最后一天转移月排班機器人(Apps Script)
每月25日 08:00生成月度复盘,副本存至温蒂复盘资料夹月復盤機器人(Apps Script)
📊 Google Sheet 依赖
Sheet 名称Sheet ID(前8位)分页使用方
早班工作表1tVvb08z...当月工作安排、人员能力表发工作机器人、日报机器人
早班排假表1nX7AJni...当月排休(勿动)、出勤记录发工作机器人、出勤机器人
日报记录表1u0F7jTS...daily_reports日报机器人(经 Apps Script 写入)、日报汇整检查
⚠️ 注意事项
• 日报记录表:Sheet ID 1u0F7jTS...,分页 daily_reports,由月復盤 Apps Script 写入
• 本地程序桥接机器人(cs_bridge)目前为 inactive 状态
• 月排班/月復盤机器人为 Google Apps Script,不受本面板重启控制
• 所有机器人必须通过 systemctl 管理,禁止手动 python 启动(避免 TG Conflict)