diff --git a/PROGRESS.md b/PROGRESS.md index cd8e1ee..0af4dc9 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -23,6 +23,7 @@ ### 2026-07 +- **07-08 / 0.52.4**:企微回调加入站留痕日志——用户报企微发语音无反应且 `[wecom-voice]` 日志一行没有(语音分支被调用必打),疑企微侧未投递语音回调;但 text 路径原先零日志无法对照回调通断。解密成功后每条打 `[wecom] inbound msgtype=... from=...`,用"text 行出现、voice 行不出现"即可断定平台侧未投递。个人微信语音已用户实测跑通(0.52.0 链路)。 - **07-08 / 0.52.3**:sandbox 镜像 npm 步骤加重试——腾讯 npm 源拉 cytoscape 偶发 ECONNRESET 崩整个 build(部署实测),fetch-retries 2→5 + retry-maxtimeout 120s;RUN 故障兜底补该行,并写明"部署不涉及镜像变化时用 `--skip-build` 跳过重建"。 - **07-08 / 0.52.2**:sandbox 镜像 build 剔除 host-only 依赖——pilk 进 requirements 后镜像 build 也去装它,slim 基底无 gcc 整个 build 编崩(部署实测)。容器内 run_python 用不到语音解码,方案:requirements 行尾标 `# [host-only]`,Dockerfile 装包前 `grep -v '\[host-only\]'` 过滤(通用机制,后续 host-only 依赖复用);不往镜像塞 build-essential(+~250MB 没收益)。 - **07-08 / 0.52.1**:RUN 故障兜底补 pilk 源码编译坑——服务器 py3.12 无 pilk 预编译 wheel,pip 退源码编译撞缺 gcc(`x86_64-linux-gnu-gcc ... No such file or directory`),处理:`apt install build-essential python3-dev` 后重跑 update(用户部署实测踩到)。 diff --git a/core/__init__.py b/core/__init__.py index 269932d..1528310 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -1,3 +1,3 @@ # zcbot 版本号单一事实源:web/app.py 的 FastAPI version、/healthz 返回、前端展示都引这里。 # 改版本只动这一行。 -__version__ = "0.52.3" +__version__ = "0.52.4" diff --git a/web/app.py b/web/app.py index 43983a3..5c3434d 100644 --- a/web/app.py +++ b/web/app.py @@ -1610,6 +1610,10 @@ def create_app() -> FastAPI: raise HTTPException(400, f"decrypt failed: {type(e).__name__}: {e}") msgtype = msg.get("MsgType") or "" wuid = msg.get("FromUserName") or "" + # 每条解密成功的入站都留痕(text 路径原先零日志)。排查"发某类消息没反应"先看 + # 这行:没出现 = 企微侧根本没投递该回调,与后面的处理代码无关。 + print(f"[wecom] inbound msgtype={msgtype!r} from={wuid} " + f"event={msg.get('Event') or '-'}") uid = await asyncio.to_thread(_wx.get_user_by_wecom_userid, wuid) if uid is None: # 未绑定成员发真实消息(菜单/事件不算)→ 回绑定指引,不再静默:聊天优先布局