diff --git a/docs/PROJECT_STATE.md b/docs/PROJECT_STATE.md index 673625c..15509a5 100644 --- a/docs/PROJECT_STATE.md +++ b/docs/PROJECT_STATE.md @@ -1,4 +1,4 @@ -# Project State (Handoff) — 2026-08-23 +# Project State (Handoff) — 2026-08-24 > 交接文档:压缩/新会话后,按此文档续做。细节见各 doc。 @@ -13,7 +13,8 @@ | **NocoDB** | `https://nocodb.hoelee.com`;API token: ``;base AlistAccess = `p3lzkresswyowqg` | | **n8n** | `https://auto.hoelee.com`;API key: `` | | **NocoDB 表 ID** | Customers `maqb9zgvza2te3k` · Products `molyb3pxv81l75g` · Resources `m6cm7tkxzd8m18c` · CustomerProducts `mvyqbv8ao7u6bct` · AccessGrants `mxdx3yhfcyej3ao` · AccessLogs `ml12zcyzlehgi21` · Purchases `mwp12z9lcohhsuk`;M2M link col `c4ko4x8kwi16swg` | -| **n8n workflow ID** | W1=Cust Provision `gU2ee9Eg5w1KzB5p` · W2=CP Sync `D9OWAI7JUjKnRdOn` | +| **n8n workflow ID** | W1=Cust Provision `gU2ee9Eg5w1KzB5p` · W2=CP Sync `D9OWAI7JUjKnRdOn` · W3=Expiry Sync `zlEfjj5eK5IfILtk` · W4=Daily Reconcile `pl8j9lpg5gjrd0dB` | +| **DSM 当前 IP** | `192.168.137.2`(2026-08-24;IP 会漂移,连不上先探测) | ## 已完成 ✅ @@ -92,20 +93,32 @@ Base: **`AlistAccess`**(`p3lzkresswyowqg`),与旧 `accessDB` 完全隔离 ## 🔴 下一步(按序) -> W4 代码与实测已完成。剩余为部署收尾 + 一个 n8n 实例问题: +> 2026-08-24 状态更新:**「执行管道停摆」已定性为误报**(见下),W1-W4 全部激活正常。 +> NocoDB 测试数据已被清空(Customers/CP/AccessGrants=0,Products/Resources=176/171 商品目录健在), +> AList 孤儿测试账号已于 08-24 清理(现仅剩 guest/hoelee + guest/admin)。 -1. **给 n8n 容器补 env 并 redeploy(Portainer stack 144)**: +1. **端到端实测(当前最优先)**:建 1 个测试客户走完 W1(provision)→W2(sync)→W3(expiry sweep) + 全链路。注意:`EXECUTIONS_DATA_SAVE_ON_SUCCESS=none` 导致成功的 execution 不落库—— + 验证要看 **AList/NocoDB 的实际状态变化**,不能看 executions 表。 +2. **给 n8n 容器补 env 并 redeploy(Portainer stack 144)**: `NOCODB_TABLE_RECONCILELOGS=mktsb7le6fqr2u1` + `NOCODB_FK_RECONCILELOG_CUSTOMER=nc_jitu___Customers_id` - (容器 env 改后必须重建,不是 restart)。之后 W4 每日 03:00 才会真正落 ReconcileLogs。 -2. **⚠ n8n 执行管道疑似停摆(2026-08-23 ~23:00Z 起,待查)**:webhook 全返回 200 - "Workflow was started" 但不产生任何 execution(W1/W3 也一样,连 failed 都不落库); - W3 的 5 分钟 schedule 也停了(最后一次执行 23:00:51Z)。疑似与 API key 激活权限错误 - ("attempted to activate a workflow without permissions")或 01:21Z 的一次外部容器 recreate - 有关。**需要用户确认:是否在 Portainer 动过 n8n?** 建议查 n8n 日志/executions 后恢复。 + (2026-08-24 复核:env 仍未加;容器 env 改后必须重建,不是 restart) 3. AccessGrants 物化:维持现状(手工人为授权入口,n8n 不写)——W4 已定案不物化。 4. 密码回写问题(客户自改 AList 密码 → NocoDB plaintext 失真):保持方案 C(不强制回写)。 5. 本地 git 已留档并推 Gitea(`git.hoelee.com/hoelee/alist-serve-resource`,凭据已脱敏)。 +### 「n8n 执行管道停摆」结案(2026-08-24) +- 现象回顾:webhook 全 200 但 executions 表零记录、W3 schedule 无痕迹 → 曾疑管道死亡 +- **根因:容器 env `EXECUTIONS_DATA_SAVE_ON_SUCCESS=none`** —— 成功执行从不落库, + 只有 error 会记(过去 24h 唯一记录是一条无关备份 workflow 的 error,恰好吻合) +- 时间线吻合:最后 success 记录 08-22 23:00Z ≈ n8n 容器重建(01:21:24Z Started)前后; + 激活问题(activeVersionId 错位)已在重建后修复——DB 复核 W1/W2/W3/W4 四个 workflow + active=t 且 activeVersionId==versionId +- 遗留副作用:成功不可观测。若要恢复可见性,把 env 改成 `all` 或 `all-with-logs` + (代价是 executions 表膨胀,已有 prune 配置兜底) +- 另注:DSM IP 已变更为 `192.168.137.2`(2026-08-24 实测);Windows 直连内网端口 + (5244 AList / 10380 NocoDB / 5678 n8n)均通,但公网域名 nocodb.hoelee.com 解析/连通未恢复 + > ⚠️ **Status 语义已定稿(不再待决策)**:5 个值 `pending/active/suspended/expired/deleted`, > account-level 整户开关,**不进** permission calc。详见 `docs/ARCHITECTURE.md`、`docs/PERMISSIONS.md`、`docs/DATABASE_SCHEMA.md`。 @@ -152,8 +165,10 @@ Base: **`AlistAccess`**(`p3lzkresswyowqg`),与旧 `accessDB` 完全隔离 `nc_jitu___Customers_id`(实测确认),env `NOCODB_FK_RECONCILELOG_CUSTOMER` - **NocoDB v2 删行**:`DELETE /api/v2/tables/{t}/records` + body `[{"Id": N}, ...]`; `/records/{id}` 和 `where=` 参数都不行 - - **n8n 执行可能全局停摆**(2026-08-23 23:00Z 起):webhook 200 但不落 execution——见「下一步」#2, - 恢复前 n8n 侧一切「执行」都不可信(本机直连跑 W4 代码是替代验收路径,见 W4-DESIGN.md) + - **n8n「执行消失」假象(2026-08-24 定性)**:`EXECUTIONS_DATA_SAVE_ON_SUCCESS=none` + 时成功的 execution 完全不落库(webhook 照样 200),只有 error 落库。 + **验证 workflow 是否在跑:看 AList/NocoDB 的实际状态变化,别看 executions 表。** + 想要可见性就改 `all`/`all-with-logs`(prune 已配,表不会无限涨) ## 📁 项目结构 ``` @@ -173,4 +188,5 @@ alist-serve-resource/ 1. **AccessGrants 物化**(已定案:**不物化**,保持手工人为授权入口源 b;n8n 永不写它)——W4 已确认 2. 密码:客户可自改 AList 密码 → NocoDB plaintext 会失真;保持方案 C(W4 repair 也不推密码,仅 provision 新建时用) 3. 对账/到期只靠 n8n 定时扫描(AList 无 expiry 概念)—— 已确认 -4. **n8n 执行管道停摆**(见「下一步」#2)——需要用户确认 Portainer 是否动过 + 恢复方式 \ No newline at end of file +4. ~~n8n 执行管道停摆~~ —— **已结案**:是 `EXECUTIONS_DATA_SAVE_ON_SUCCESS=none` 造成的 + 「执行消失」假象,管道本身健康(见「下一步」后的结案说明) \ No newline at end of file