Creative DNA Loop · ST 产品隔离 · 现状盘点
"ST 看不到 TS 的东西"这件事,数据库层面的能力已经就位,但当前还没有真正把两边分开——这不是漏做,是为了留着 TS 的数据给 ST 环境做功能验收。这页说清楚:现在隔到什么程度、差哪几步能真隔开、启用后会怎样。
01 · 逐面现状
| 数据 / 页面 | 有 product_key? | 现在真隔开了吗 | 说明 |
|---|---|---|---|
| 资产库 assets(/knowledge) | 有(旧) | 没有 | 有 user_products 成员闸门,但 admin 绕过 + 所有人都在 tiles-survive 成员里 |
| 创意单元 creative_units | 有(旧) | 没有 | 同上,共用同一套闸门 |
| Agent crawl_slots | 有(0026) | 没有 | 列刚加、已回填,但查询还没按环境产品过滤(应用代码待改) |
| 素材 hot_materials | 有(0026) | 没有 | 同上 |
| 方案 / 成片 | 不加列(有意) | 没有 | 沿血缘从父行推导产品,父行隔离了它们自然隔离 |
一句话:所有表要么已有产品列、要么能从血缘推导,"能不能隔"没问题;"隔没隔"全部是"否"——因为下面三个开关一个都还没打开。
02 · 为什么现在没隔开
DEFAULT_PRODUCT_KEY 还没设成 'st'——现在回落到 tiles-survive,等于和 TS 用同一个产品。我特意没设,否则 st 列表会空(库里 357 个 Agent 全是 TS 的),没数据测 Creative DNA Loop。tiles-survive 成员。所以哪怕普通 ST 用户,也因为是 TS 成员而看得到 TS 的公共资产。isAdmin 为真时直接跳过产品过滤——任何 admin 在 st 上都能看到全部产品。这是设计成"admin 代管所有产品",要不要对 ST 也这样,得产品定。03 · 启用清单
| # | 做什么 | 改哪里 | 类型 |
|---|---|---|---|
| 1 | sozai-st 设 DEFAULT_PRODUCT_KEY='st' | wrangler.jsonc(已有 'st' 默认创意单元,0026 种过) | 配置 |
| 2 | Agent / 素材列表查询按 defaultProductKey(env) 过滤 | pm-workspace.ts / pages.tsx 的 slots+hot 查询(应用代码) | 代码 |
| 3 | 写入路径带上 product_key(建 slot、研究回调入库、爬取入库) | api.ts / creative-chain.ts / cron.ts | 代码 |
| 4 | ST 成员 user_products 授 'st'、去掉 tiles-survive;TS 成员保持 tiles-survive | 一次性 SQL + auth.ts 新用户默认已随环境 | 数据 |
| 5 | 决定 admin 要不要也受产品限制(或加"以 ST 身份查看") | listAssets 的 isAdmin 绕过分支 | 决策 + 代码 |
| 6 | 给 ST 造种子数据:导入一批 ST 素材库 / 建 ST 的 Agent | 数据迁移(会议分工:范枫顺"数据迁移") | 数据 |
1–3 是让 st 只看 'st' 产品;4–5 决定谁算 ST 的人、admin 怎么算;6 是启用后 st 会空,得先有 ST 自己的数据。步骤 2/3 其实就是 0026 那份迁移注释里写的"配套应用代码"。
04 · 启用会怎样
DEFAULT_PRODUCT_KEY='st' 且查询按产品过滤,现有 357 个 TS Agent、2356 条 TS 素材在 st 上全部不可见。所以启用必须和"给 ST 造数据"(步骤 6)一起做,否则 ST 用户打开是空站。DEFAULT_PRODUCT_KEY 还是 tiles-survive,数据照旧;两边从此各看各的。05 · 待决策