docs(PROJECT_STATE): resolve n8n pipeline incident as SAVE_ON_SUCCESS=none artifact

- Root cause: EXECUTIONS_DATA_SAVE_ON_SUCCESS=none -> successful executions
  never persisted; only errors land in execution_entity
- W1-W4 activation verified healthy post-recreate (activeVersionId aligned)
- NocoDB test data wiped (Customers/CP=0; catalog 176/171 intact)
- AList orphan accounts cleaned: users TEST-Alice/mama/hoe/test and roles
  customer-*+newrole removed; only guest+hoelee remain
- Next step reprioritized: end-to-end live test (W1->W2->W3)
- Added current workflow IDs + drifting DSM IP to credential quick-ref
This commit is contained in:
2026-08-24 21:51:58 +08:00
parent 4693c9d684
commit f26164023e
+29 -13
View File
@@ -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: `<redacted>`;base AlistAccess = `p3lzkresswyowqg` |
| **n8n** | `https://auto.hoelee.com`;API key: `<redacted>` |
| **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 是否动过 + 恢复方式
4. ~~n8n 执行管道停摆~~ —— **已结案**:是 `EXECUTIONS_DATA_SAVE_ON_SUCCESS=none` 造成的
「执行消失」假象,管道本身健康(见「下一步」后的结案说明)