Commit Graph
79 Commits
Author SHA1 Message Date
butubb 0fab6f4de8 fix: opencv-python-headless 锁 4.x——清华源 5.0.0.93 wheel 打包异常(site-packages 无 cv2 模块),OCR 仍不可用 2026-08-19 16:23:36 +08:00
butubb 5de87465bc fix: start.sh 修复顺序——rapidocr 依赖声明 opencv-python 会被 pip 强制装回 GUI 版,uninstall 必须在 pip install 之后最后执行 2026-08-19 16:17:28 +08:00
butubb b33ff17c26 feat: 容器启动脚本 scripts/start.sh——幂等卸载 opencv-python(GUI 版缺 X11 库致 OCR 崩)并装 headless,compose 指向本脚本后环境修复全走 git 2026-08-19 16:14:15 +08:00
butubb c0667c5959 fix: 容器环境 OCR 不可用——opencv-python 依赖 X11(libxcb)在 slim 容器 import 崩溃致条件判断 OCR 步骤任务退出,改为 opencv-python-headless(本地 Mac 不受影响) 2026-08-19 16:11:20 +08:00
butubb d0cb531c20 fix: 未登录访问 500——login_view 蓝图化后未更新为 auth.login,flask_login 重定向 url_for('login') BuildError 2026-08-19 16:02:47 +08:00
butubb 42c2820180 docs: requirements 注释清理(STF 时代描述 → 当前架构) 2026-08-19 15:51:57 +08:00
butubb a9720e8b81 fix: 抢占归还丢失——preempted_job 在重试循环内被重置为 None,关键字任务一旦重试(attempt≥2)被抢占的养号任务永不恢复;提升到循环外+已有值不覆盖+归还时被抢占任务停用/删除也打日志 2026-08-19 15:46:18 +08:00
butubb e0c3373dd1 feat: 全量路由回归测试脚本 scripts/regression_test.py(GET 全量 + 写操作空 body 探测抓 import 遗漏 + 关键业务 POST,500=缺陷 502/503=业务提示)+ fix: clear_all_worker_errors 缺导入(回归脚本首跑即抓到) 2026-08-19 15:24:11 +08:00
butubb 2adc54b512 fix: adb 相关功能全挂——tools_api 缺 ADB_PATH/_ADB_BLOCKED_PATTERNS 导入(模块拆分遗漏),应用版本/adb终端/剪贴板恢复,全量 28 个 GET 路由回归通过 2026-08-19 15:12:42 +08:00
butubb a0916ebda2 fix: 抓取元素回填垃圾选择器——无属性元素生成 //*[N](匹配任意节点点不到),改为 invalid 标记前端提示不可选;结构路径跳过无 class 层消除 //*[N] 前缀污染;模块拆分遗漏修复(get_all_worker_status/list_installed_apps 致 summary/设备已装应用 500) 2026-08-19 15:10:26 +08:00
butubb 265e47a1f4 fix: 测试此步骤弹窗全链路修复——closeTestModal 恢复(阶段3误删导致关不掉)、test-overlay 层级 1200(高于编辑器/元素抓取弹窗)、tasks_api 补 _log(后端500)、GenericStepsWorker 旧签名调用修复(测试执行失败) 2026-08-19 15:00:27 +08:00
butubb ce47a5b83d refactor: web_server 模块化拆分(web/ 蓝图包 auth/monitor/tasks/admin/tools/devices/apks/tailscale + context/common,web_server 1796→193 行仅留装配与启动)+ 大屏优化(网格 5s 轮询、弹窗独占缩略图、流支持 q/fps)+ 三修复(MIUI 屏幕状态检测改 dumpsys power、补 ADB_PATH 导入修复一键亮屏、renderGrid 增量渲染不重载缩略图) 2026-08-19 14:55:29 +08:00
butubb e07b339a51 feat: 大屏增强——一键亮屏按钮、卡片显示设备名+IP+熄屏状态(thumb 响应头 X-Screen-State)、点击卡片进入设备操作弹窗(实时流+触控+按键+文字),工具页远程看屏子分栏移除并入大屏 2026-08-19 14:17:33 +08:00
butubb c78f17d72f feat: 监控大屏(/wall 全屏深色控制室风格:设备卡片网格+缩略图轮询+统计+时钟,缩略图 360px/q55 每 2.5s 一帧 20 台仅 ~0.2 核 CPU)+ /api/screen/thumb 接口 + 导航栏大屏入口 2026-08-19 14:13:15 +08:00
butubb 5543bad0e6 docs: 全面更新——README/API/DEVELOPMENT 摘除 STF 章节(设备池/型号/看屏/新端点文档,技术红线改为共享 transport 表述) 2026-08-19 14:07:53 +08:00
butubb 83ba489f57 feat: 前端整体改版(仪表控制台主题:自托管 Bricolage Grotesque+IBM Plex Mono 字体、暖纸底+墨色+深青主色、卡片/表格/徽章/模态框/Toast 全面细化、Tab 切换动画)+ fix: showTab 硬编码 tab 列表移除维护后索引错位、tools 分支调用已删的 loadStfDevMgmt、导航移除失效维护Tab 2026-08-19 14:03:02 +08:00
butubb 2d1b10c7f3 fix: 全选勾选不显示(renderDevices 签名缺选中状态导致防抖跳过渲染)+ 亮屏/息屏支持勾选设备(未勾选则全部在线,离线自动过滤) 2026-08-19 13:57:07 +08:00
butubb 6f6093842c feat: 设备型号采集展示(devices 表 model 列+getprop 采集+管理页型号列/采集按钮+监控页兜底)+ fix: 监控页设备列错位(离线标签残留 td)、appver 端点误删恢复、appver 只查在线设备用轻量连接防挂起 2026-08-19 13:53:27 +08:00
butubb eda71c8e5f fix: USB 设备双路径——优先本机 adb 直连,其次 220 远程 adb server(原实现只查远程,本机 USB 会被误判不在 server) 2026-08-19 08:08:40 +08:00
butubb 1573e82653 阶段3: 文档更新(ARCHITECTURE/DEPLOY 摘除 STF 章节,STF_REMOVAL 标记代码完成+220 停容器待确认) 2026-08-18 08:11:00 +08:00
butubb a5ce57b6fd 阶段3: 摘除 STF——删除 stf_client/stf_device_mgmt 与全部引用(STF 容器重启/设备管理/强制释放占用/agent 按钮/占用列),调度与设备管理完全基于本地设备池+adb;错误类迁入 device_worker,create_worker 去 stf 参数 2026-08-18 08:08:32 +08:00
butubb 98244d8161 feat: 设备池管理面板(新增/停用/删除/一键重连,调度数据源规范化入口)+ STF 设备管理增删桥接同步设备池(迁移期) 2026-08-18 08:02:13 +08:00
butubb 645938b305 阶段2: USB 远程 adb server 打通(220 host 网络 5037 全接口监听,无需改 220)+ 自建远程看屏(MJPEG 流 + u2 触控 tap/swipe/key/text,ws-scrcpy 不在 npm 改自建) 2026-08-17 16:50:12 +08:00
butubb 5354fe6379 阶段1: 调度/生命周期切换 device_pool——task_manager 设备解析与状态查询、STFDevice 去 occupy/release、web_server 端点换数据源(USB 桥接保留到阶段 2) 2026-08-17 11:16:13 +08:00
butubb 52c4d3aab4 阶段0: 设备池(SQLite devices 表 + core/device_pool.py 清单/在线状态/CRUD,首次启动自动从 STF 导入)+ STF 摘除迁移计划文档 2026-08-17 11:11:08 +08:00
butubb c111cb9a5e fix: STF未就绪设备纳入维护终端列表(adb可达但agent启动失败,标记stf_not_ready)+ 卸载/检查agent自动先connect 2026-08-17 11:02:43 +08:00
butubb e48eeef49b feat: 任务抢占+归还(抢占任务结束后自动重启被抢占任务)+ 修复抢占死锁(stop_device 移出锁块)+ wait 步骤可中断 + 循环块新增一直循环模式(配合定时启动+停止实现全天候养号) 2026-08-16 08:12:05 +08:00
butubb a51857d143 feat: 步骤新增剪贴板注入(可注入+粘贴,批量发链接场景)+ adb终端快捷命令 tcpip 5555 转网络调试 2026-08-15 15:53:31 +08:00
butubb 17f849f723 feat: STF设备管理彻底删除(脚本+断开+STF API清记录)+ 一键重连(后台跑connect脚本)+ 跳过原因日志区分离线/未就绪 + SSH超时错误分类 2026-08-15 15:22:55 +08:00
butubb e12219c979 feat: 强制安装APK(推送+pm install 绕过厂商弹窗)+ 定位设备(亮屏+大字定位页,结束定位关闭浏览器含后台)+ 一键亮屏/息屏(并发全部设备) 2026-08-15 15:03:01 +08:00
butubb 21d3aa8268 feat: 任务离线设备自动跳过(serial/分组模式触发时过滤 STF 池离线设备,默认开启,任务编辑器可勾选关闭) 2026-08-14 09:16:54 +08:00
butubb 060157ea1a refactor: 前端JS拆分为8个模块(base/list/monitor/editor/tasks/tools/apps/admin,按依赖顺序加载)+ 删除废弃文件(start_web.bat/main.py/fix_web.bat/cleanup.py,web已全覆盖)+ 文档同步 + 修复/api/summary缺导入 2026-08-11 14:53:04 +08:00
butubb 2e491b19e2 feat: SSH 改纯密码认证(paramiko,禁用密钥/agent 不弹授权框,密码放 .env)+ 部署配置全迁 .env(config.py 不再内置 STF/SSH/Tailscale 值,.env.example 补全 11 项) 2026-08-11 14:12:52 +08:00
butubb 136613bc12 refactor: 列表统一为 setListPager 搜索+分页+排序(_lpSort 升序/降序/取消,中文数字感知,空值排后);监控设备表并入统一排序;STF设备管理/应用版本管理接入统一列表 2026-08-11 14:12:52 +08:00
butubb 3bd56b4f59 feat: 工具Tab新增应用版本管理(按包名并发查询所有设备安装版本)+ 文档同步更新(README/API/ARCHITECTURE/DEPLOY:工具Tab各工具、条件判断if_el+OCR、STF设备管理、.env密钥配置) 2026-08-11 10:57:14 +08:00
butubb 5dd605e3a0 feat: 工具Tab新增STF设备管理(读写220脚本DEVICES列表+docker adb connect/disconnect,220侧timeout兜底防卡死)+ 修复设备列表:5555重复显示 2026-08-11 10:50:41 +08:00
butubb 8e23541380 refactor: 应用Tab整体并入工具Tab(应用管理/设备已装应用成为工具子分栏),移除独立应用导航 2026-08-11 10:42:32 +08:00
butubb 2f2d8cc184 feat: 条件判断步骤(if_el 双分支:找到/未找到各执行独立步骤,可嵌套循环/条件;OCR识别选择器匹配图片文字,RapidOCR 跨平台实现含命中点击)+ 动作编辑器布局优化(操作库分组/加宽、任务弹窗加宽) 2026-08-11 10:38:47 +08:00
butubb 159649b6a0 refactor: adb远程终端与Tailscale管理从维护页移至工具Tab(维护仅保留STF服务),设备列表共享缓存+复用esc 2026-08-11 10:00:15 +08:00
butubb 2f1003bf1f feat: 新增工具Tab - 剪贴板注入(多选本地adb/STF设备批量注入文字,u2 setClipboard 实现,实测支持中文/引号/换行) 2026-08-11 09:53:32 +08:00
butubb cff0fc6a79 feat: 任务/应用/维护页统一页内子分栏(showSubTab 泛化),维护页首拆子分栏;模板自动重载(TEMPLATES_AUTO_RELOAD) 2026-08-11 09:38:29 +08:00
butubb 6051c5c2fd fix: Tailscale 设备表接入统一分页/搜索逻辑(setListPager),修正 IP 可修改的过时提示文案 2026-08-11 09:19:41 +08:00
butubb de66c6194b feat: 维护页 Tailscale 管理(设备列表/改名/授权/密钥不过期/设置IP/auth key,独立模块 core/tailscale_client.py)+ 密钥迁移 .env(STF_TOKEN/WEB_SECRET_KEY/TAILSCALE_API_KEY 不再入库)+ 修复设备更新端点(/device/{id} 405,改用 /name /authorized /key 专属端点)+ auth key description 仅 ASCII 2026-08-11 09:06:59 +08:00
butubb a48032da23 chore: 移除已废弃的一次性脚本 create_task.py(任务创建已由 Web 界面覆盖),README 同步清理引用 2026-08-11 08:34:38 +08:00
butubb 608df50acb chore: 开发数据库更新(用户权限 schema 迁移 + 任务/自定义动作数据) 2026-08-11 08:27:33 +08:00
butubb 06a9df111a feat: 用户权限系统(权限位/管理员全权限/前端隐藏/最后管理员保护) 2026-08-11 08:27:33 +08:00
butubb a0d1a533c6 docs: 文档同步(README/API/架构/部署) 2026-08-11 08:27:33 +08:00
butubb 5ccf622942 fix: 删除任务/分组持久化(重启不再复活)+ feat: APK 安装支持本机 USB 设备 2026-08-11 08:27:33 +08:00
butubb 794f40a880 feat: 调度简单设置(频率选择器)+ 运行窗口 + 下次运行列 2026-08-11 08:27:33 +08:00
butubb c37290e8e3 feat: 步骤测试(在设备上单步试执行验证选择器) 2026-08-11 08:27:33 +08:00
butubb 003cb42cb1 feat: 通用步骤新增动作(屏幕控制/按键/滑动直到元素/点击坐标/长按/等待元素/输入前清空) 2026-08-11 08:27:33 +08:00
butubb 3320035c9e feat: 维护 Tab(STF 容器一键重启 + adb 远程终端,含设备快捷选择/卸载 agent/重连) 2026-08-11 08:27:33 +08:00
butubb 26c908f04c feat: 抓取元素选择器精度优化 + 设备列表补全 + 刷新同步 2026-08-11 08:27:32 +08:00
butubb e3acb5739c fix: 动作编辑器修复(toast 未定义/CSRF 缺失/嵌套选中打包/跨层级拖拽/步骤 id 冲突) 2026-08-11 08:27:32 +08:00
butubb 8a3cd67a97 fix: 设备异常状态清除(清除异常/一键清除,检查与更新原子化防竞态) 2026-08-11 08:22:24 +08:00
butubb 5f914c4fe4 fix: 已删除设备残留失败记录不再出现在异常汇总
- _merge_status 清理不在 STF 设备池且无运行 worker 的陈旧状态
- /api/summary 按当前设备池过滤,STF 异常时不隐藏任何记录
2026-08-09 08:04:57 +08:00
butubb 0c4f586ae5 feat: 选择器健康检测 - 连续未命中自动上报,暴露"静默空转"
通用任务 click 步骤连续 10 次找不到元素时判定选择器可能失效(App 改版),
记录 last_warning 并日志 ERROR,监控页设备行显示 ⚠ 警告。
解决"选择器失效但任务仍显示成功"的静默空转问题。
2026-08-08 21:35:21 +08:00
butubb 8a675923cd feat: 失败任务汇总 - /api/summary + 监控页异常面板
- 新增 /api/summary:各状态计数 + 异常设备列表(last_error/任务/重试次数/时间)
- 监控页新增"异常汇总"面板:显示失败/异常设备及错误信息,方便长期运行观察健康度
2026-08-08 21:33:35 +08:00
butubb 02016b7b85 feat: 悬空设备自愈 - 启动可选自动释放残留 STF 占用
崩溃/强杀后设备残留占用需手动清理。新增 AUTO_RELEASE_STALE_OCCUPY 配置
(默认关):单实例部署设为 true 时,web_server 启动自动释放本账户残留占用;
多实例共用 STF 账户时勿开(会误放另一实例任务)。默认仅启动提示。
2026-08-08 21:31:53 +08:00
butubb 838886e043 security: 环境变量密钥、密码加盐哈希、CSRF 防护
- config.py/web_server.py 支持环境变量注入 STF_TOKEN/WEB_SECRET_KEY,新增 .env 加载和 .env.example;.env 加入 gitignore
- 用户密码从裸 SHA-256 改为 werkzeug 加盐哈希(scrypt),旧哈希登录时自动升级
- CSRF:session token + X-CSRF-Token 请求头校验非 GET 请求,前端自动携带
2026-08-08 21:29:39 +08:00
butubb afeb0902a1 feat: 进程守护 supervise.sh,崩溃自动重启;DEPLOY 补 docker healthcheck
- scripts/supervise.sh:web_server 崩溃自动重启,带 2s 退避和 300s 窗口内重启上限(10次)防死循环
- doc/DEPLOY.md 补充通用守护用法 + python-app 容器 healthcheck 配置
2026-08-08 21:23:36 +08:00
butubb e3afa5d36f docs: 新增开发手册(流程/准则/技术红线/手册),修正 README 文档索引
- doc/DEVELOPMENT.md:开发流程与 git 工作流(所有 git 操作需确认)、
  环境说明、技术红线(绝不 kill-server/断开IP:5555 等)、本地开发手册、常见开发任务
- README 修正错误的 Windows 绝对路径为相对路径,目录结构补充 monitor.js
2026-08-08 21:17:25 +08:00
butubb 6d3cc10bca feat: 任务批量触发错峰启动,分摊 adb 锁/STF occupy 风暴
大量设备(如 100 台)同时触发时,按 0.2s/台间隔逐个启动 worker,
避免 adb connect 全局锁串行堆积和 STF occupy 并发风暴。
100 台 × 0.2s = 20s 全部开始启动,连接压力分摊。
2026-08-08 21:09:03 +08:00
butubb 47262abdcd refactor: 架构优化-前端(JS 拆分外部文件、监控定向更新)
- 前端 JS 从 monitor.html 内联移到 static/admin/monitor.js(HTML/JS 分离,便于维护)
- 监控页 5 秒刷新时设备数据/分页/排序未变则跳过整表重渲染,减少 DOM 抖动
2026-08-08 20:55:53 +08:00
butubb b19caf3d55 refactor: 架构优化-后端(SQLite WAL/迁移机制/健康检查/uiautodev孤儿清理/残留提示)
- SQLite 开 WAL + busy_timeout + synchronous=NORMAL,避免多 worker 并发写锁
- 新增版本化 schema 迁移机制(SCHEMA_MIGRATIONS + app_meta 表记录版本)
- 新增 /api/health 健康检查(无需登录,返回设备/任务/错误摘要)
- uiautodev 用 PID 文件追踪,启动时清理上次异常退出残留的孤儿进程
- 启动时提示残留的 STF 占用(不自动释放,避免多实例误伤)
2026-08-08 20:55:53 +08:00
butubb 1fc0deaecf fix: 监控操作计数只计叶子步骤,排除 loop/group 容器噪音
通用任务执行时 loop/group 容器步骤不再计入 action_counts,
监控"已执行 N 次操作"和徽章只显示实际叶子操作(滑动/点赞/等待等)。
2026-08-08 20:35:27 +08:00
butubb fba8c3abbb fix: 循环块/输入文字模式重开显示不一致 - 渲染时按保存值显示对应字段
_toggleLoopMode/_toggleInputMode 只在 select onchange 时调用,重开编辑不触发,
导致"按时间"被选中但右侧仍显示次数框。改为渲染时直接按保存的 loop_mode/mode
决定显示轮次字段还是时长字段/随机还是指定文字。
2026-08-08 17:01:34 +08:00
butubb 47b3d0bf03 fix: 监控进度显示优化 - 通用任务改为"已执行操作数",操作计数紧凑展示
- 通用步骤任务进度语义:done=累计执行操作次数,不再配固定 total(原来显示 33/2 步骤 无意义)
- 前端操作计数徽章按数量降序、最多显示6个,超出折叠为 +N
- 移除无意义的百分比进度条(无固定总数时不显示)
2026-08-08 16:57:40 +08:00
butubb aeffb1b95b fix: 元素抓取生成精确选择器,无属性元素用锚点祖先限定;抖音点赞找不到按钮不再双击屏幕
- 元素选择器生成:无 resource-id/text 的元素改用最近有唯一属性祖先限定范围,
  并带同 class 兄弟序号消歧(如 //*[@resource-id=".."]/RelativeLayout[3]),
  不再给裸 class(如 //android.widget.ImageView 会误匹配其他元素)
- 仍无法限定的宽泛选择器标记 broad,前端元素列表显示"⚠宽泛"提示
- 抖音 like 动作:by_element 找不到点赞按钮改为跳过,不再双击屏幕中央(避免误触)
2026-08-08 16:49:38 +08:00
butubb 4186eb1266 fix: 步骤参数同步误把子步骤输入写进父步骤,导致动作组概率失效
_syncParams 用 .sc-body [data-key] 读取卡片输入,但嵌套子步骤也有 .sc-body,
是卡片后代,其输入被写进父步骤 params(如 group 的 probability 被子步骤的 100 覆盖)。
改为只读卡片直接子级 :scope > .sc-body,group 概率与子步骤概率各自独立。
2026-08-08 16:34:09 +08:00
butubb 473dc1909d feat: 前端整体增强(应用查看UI/元素选择/步骤编辑器/拖拽/概率/分页/动作管理)
- 应用Tab:设备已装应用区块(应用名+版本+versionCode+路径)、安装弹窗设备显示 IP·型号
- 元素抓取:截图按 bounds 命中测试选最小元素,跳过全屏容器 overlay
- 步骤编辑器:输入实时同步+localStorage草稿自动保存(防丢内容)
- 拖拽修复:画布 drop 只绑定一次+stopPropagation+延迟渲染,可拖入循环块且不重复
- 步骤概率触发字段、循环按轮次/时间切换、监控页预计结束时间
- 全部列表统一搜索+分页(设备/任务/应用/分组/用户/动作)
- 自定义动作管理模块(列表/新建/编辑/删除)、步骤编辑器容器化、嵌套循环移动修复
2026-08-08 16:31:06 +08:00
butubb fcbdb0a8a1 feat: 通用步骤支持概率触发、循环按时间、预计结束时间上报
- 步骤新增 probability 参数:<100 时按百分比概率决定是否执行(实现"偶尔点赞")
- loop 支持 loop_mode=rounds/time,按时间循环跑满 loop_duration 秒
- BaseWorker._start_timer 上报 end_time(开始+max_duration),task_manager 透出
2026-08-08 16:30:54 +08:00
butubb 4f29762121 feat: 设备已装应用查看(含应用名/版本号)
- adb_helper.list_installed_apps:pm list + pm dump 取包名/versionCode/versionName/APK路径
- 应用名解析:常见应用映射 + 小APK流式pyaxmlparser解析(并行+缓存)+ 包名兜底
- web 新增 GET /api/devices/<serial>/apps
2026-08-08 16:30:49 +08:00
butubb 3a38d9a57f fix: adb 命令超时 + STF 释放失败检查,杜绝设备卡死/占用悬空
- adb 所有命令加 30s 超时:connect 到不可达地址不再无限挂起(worker 不再卡 connecting)
- STF release 检查响应状态并重试:504 等失败不再被静默吞掉,释放失败会真实上报
- release_all_mine 返回 (released, failed);web /api/release 透出失败列表
2026-08-08 16:30:42 +08:00
butubb 468e86f0a9 feat: 新增通用步骤任务+元素抓取,完善全部项目文档
- 新增 generic_steps 通用步骤任务(可视化步骤编辑器编排流程,支持 open_app/click/swipe/input_text/wait/loop/group)

- 新增 core/uiauto_helper.py 封装 uiautodev 元素抓取客户端

- web_server 新增元素抓取/截图/设备列表等 API

- monitor.html 新增步骤编辑器、元素抓取模态框、独立关闭逻辑

- 新增 README.md 项目总览(快速上手/架构/配置/FAQ)

- 新增 doc/ARCHITECTURE.md 架构详解、doc/DEPLOY.md 部署指南、doc/API.md 接口文档

- 修复 doc/TASK_DEV.md:移除已删除的 comment 引用,补充 generic 包,更新注册示例

- .gitignore 忽略 .claude/ 工具产物
2026-08-08 10:40:06 +08:00
butubb 186bded9d9 fix: 消除所有会导致STF断开连接的操作 - adb_connect移除kill-server硬重置(会断全网设备) - APK安装后不再adb_disconnect(IP:5555会断STF provider) - 扫描空闲设备不再adb connect/disconnect(直接标记空闲) 2026-08-07 15:43:17 +08:00
butubb b0f808fb8c fix: 修复所有弹窗打开后无法关闭的问题 - 重写closeModal先关闭再清理并try-catch容错 - 首页路由加no-store响应头避免浏览器缓存旧HTML 2026-08-07 15:26:10 +08:00
butubb 0fe2a2fc5f feat: 新增设备画面截图、列表复选框/排序/批量停止,修复端口绑定失败 2026-08-07 15:08:36 +08:00
butubb bce48fc137 chore: 初始化仓库(排除 adb 二进制文件以解决推送超时) 2026-08-07 13:55:48 +08:00