听云 OCM 催办单 · B1+B2 MFR 部署(超期待回执)¶
| 字段 | 值 |
|---|---|
| 催办编号 | OCL-URGENT-20260827-01 |
| 催办方 | 听写 DT |
| 被催办方 | 听云 OCM |
| 催办时间 | 2026-08-27(用户指令触发:"听云的任务似乎执行太久了,请催办处理") |
| 关联原外派单 | OCL-TASK-L-20260827-01(B1+B2 启动 mfr-portal + Caddy 反代) |
| 关联原 DTL | L-20260827-01(Phase 4 阻塞根因)、L-20260827-02(外派通知,等待回执中) |
| 当前状态 | 🟡 外派已签发 + 超期待回执 → 本次正式催办 |
一、催办事由¶
原外派单 OCL-TASK-L-20260827-01 签发后,听云侧尚未回传 A1~A6 验收断言结果与 OCL 日志编号。用户感知"执行太久",现按协作流程正式催办。
本催办不代表听云一定未执行——也可能是执行了但未回执。无论执行状态如何,请听云立即按本催办单 §三 回复 3 条信息(哪怕是"执行中/遇到阻塞"也要回执,避免听写与用户端无任何反馈空等)。
二、原任务回顾(供听云快速定位,无需重读外派单)¶
2 个子任务,总共 9 条命令 + 6 条断言,预计耗时 ≤ 10 分钟(正常情况下):
B1 · 启动 mfr-portal.service(4 条)¶
systemctl enable --now mfr-portal.service
systemctl is-active mfr-portal.service # → active
ss -tlnp | grep ':3000' # → LISTEN + node
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3000/ # → 200
B2 · Caddy /mfr/* 反代(5 步 + 3 条 curl 断言)¶
- 备份 Caddyfile → 2. 在
handle /admin/* 紧前面插入:→ 3.handle_path /mfr/* { reverse_proxy http://127.0.0.1:3000 }caddy validate→ 4.systemctl reload caddy→ 5. curl 断言:curl http://127.0.0.1/mfr/ # → 200 curl http://127.0.0.1/mfr/login # → 200 curl -s http://127.0.0.1/mfr/ | grep -c '/admin/_next/' # → 0(关键)
验收 6 断言(回执时请逐条报实际输出)¶
A1=active / A2=LISTEN数 / A3=:3000码 / A4=/mfr/码 / A5=/mfr/login码 / A6=/admin/_next/出现次数
三、回执要求(无论是否完成,30 分钟内必须回传以下 3 条)¶
以下 3 条是本次催办的最低回执要求,即使未执行完成、或遇到阻塞也必须回复,避免协作空转。
| # | 回执内容 | 说明 |
|---|---|---|
| R1 | 当前执行进度状态(三选一) | 🟢 已完成全部 6 断言 / 🟡 正在执行中(报已完成到哪一步) / 🔴 遇到阻塞(详见 R3) |
| R2 | 已执行部分的实际输出(若已部分/全部完成) | 已做到哪条命令,对应输出是什么;6 断言中已测的 A1~A? 的实际值 |
| R3 | 阻塞点(若有) | 哪一步失败了、错误信息原文、已尝试的排查步骤、是否需要听写侧协调(如重新打包代码、调整外派单内容) |
回执格式示例(可直接复制后填值):
[听云回执 OCL-URGENT-20260827-01]
R1 状态:🟢 已完成 / 🟡 执行中 / 🔴 阻塞
R2 断言:A1=___ / A2=___ / A3=___ / A4=___ / A5=___ / A6=___
R3 阻塞:___(无则填 N/A,有则贴错误原文 + 已排查步骤)
OCL 日志编号:L-YYYYMMDD-NN
完成/回执时间:YYYY-MM-DD HH:MM
备注:___
四、截止时间 & 超时升级机制¶
| 节点 | 时间(自本催办单签发起计) | 动作 |
|---|---|---|
| ✅ 期望完成 | +30 分钟内 | 听云回传 R1~R3,6 断言全通过 → 听写启动 D01 回归 |
| ⚠ 首次跟进 | +1 小时 | 若仍无回执,听写二次催办 + 记录超时标记 |
| 🚨 升级通报 | +2 小时 | 若仍无回执/无明确进展,听写升级通报用户,由用户决定是否调整协作方式或改由其他通道联系听云 |
| 🔴 阻塞升级 | 听云回执 R3 有阻塞但 30 分钟内无后续进展 | 听写按阻塞类型协调资源(standalone 缺失→催听码重打包 / Caddy 语法→外派单发修正片段 / 其他→升级用户) |
五、听云侧快速排障速查(执行时若遇卡壳,先查本表)¶
| 症状 | 最可能原因 | 1 分钟快速处理 |
|---|---|---|
| B1-2 is-active 返回 failed/inactive | standalone 文件不存在 / node 路径错 | journalctl -u mfr-portal.service -n 50 --no-pager 看错误 → 若报"No such file",直接回执 R3=standalone 缺失,听写协调重打包 |
| B1-4 curl :3000 连接拒绝(空响应/000) | node 进程崩溃或未真正启动 | 先 systemctl restart mfr-portal.service 等 5s 再试 → 仍失败则 cat /var/log/mfr-portal.err | tail -30 取错误栈回执 |
| B2-3 caddy validate 报 syntax error | 插入时少写了 } 或缩进混乱 |
用外派单 §B2-2 末尾给的"插入后完整片段"对比,缺什么补什么;实在不行先 cp Caddyfile.bak.* Caddyfile 回滚再 validate 一次确认基线正常 |
| B2-5c grep 出 /admin/_next/(次数 ≥1) | 插入位置错了(放在 /admin/* 后面了) | 打开 Caddyfile,找到 handle_path /mfr/* 块,剪切后粘贴到 # ========== OPR-Admin Next.js... 注释行的紧前面 → 再 validate + reload |
| reload caddy 后 502 | caddy reload 实际失败了,服务还跑旧配置 | systemctl status caddy -n 30 看报错 → 回滚 bak 文件后 reload |
六、协作关系重申(避免误解)¶
本次催办非问责,只为避免"听写端空等 + 用户端无反馈"的协作断档: - 听云如果还没开始做 → 请回执 R1=🟡 + 预计开始时间,听写同步用户即可 - 听云如果做到一半卡壳了 → 请回执 R3=错误原文,听写立即协调(不用自己硬扛) - 听云如果已经做完但忘了回执 → 请补传 R2=A1~A6 实际值 + OCL 编号,听写立即启动 D01(最理想情况) - 三 AI 协作,信息同步优先,完成与否都请先回个话 🙏
— 催办单签发完毕,静听云回执 —