# 搜索边界独立复审

三项已复现的问题均已修复，原场景独立复测通过。验证使用隔离的真实 PostgreSQL 和本地 HTTP 模型接口替身；未运行真实 Ollama 模型，不代表模型相关度、CPU/GPU 性能或真实渠道内容已验收。

| 边界 | 修复前证据 | 修复及独立复测 |
| --- | --- | --- |
| 模型响应期间后台发布标签 | 原词表中的 `old-love` 被替换后，合法查询返回 `400 invalid_search_plan`；同一关键词本可查到 1 部剧。 | 服务端重新验证模型计划，失效计划降为关键词，显式用户筛选仍正常校验。原场景现在返回 200、1 条真实结果，`searchMode=keyword`、`downgraded=true`。 |
| 更换游客身份绕过个人查询预算 | 原预算仅按游客 owner 计数；新游客可重新获得个人额度，无法约束模型调用总量。 | 增加 PostgreSQL 共享全局日预算和并发槽。用 100 个不同游客 owner 并发查询，全局额度设为 7，实际 HTTP 模型调用 7 次、数据库计数 7，其余降为关键词；不是 100 次真实浏览器清 Cookie 测试。 |
| 慢配置读取导致并发租约过期 | 并发上限设为 1，首次配置读取延迟 1.8 秒、模型响应 2.5 秒，第二请求在 4.1 秒到达；原实现实际模型峰值为 2。 | 配置读取后、调用模型前，按原槽位和租约 ID 原子确认并续租；失效或已被替换的租约直接降级。原时间组合复测峰值为 1，结果分别为语义搜索和关键词降级。 |

截至 2026-10-03，独立重跑 `services/platform/tests/search.test.mjs` 共 9 项通过，包括上述三项、授权目录、分页复用、非法输出、超时及个人额度并发限制。模型只生成有界关键词和已发布标签；结果仍由授权目录查询，后续 cursor 不再次调用模型。

Web 的运营刷新也已回归：手动刷新先获取最新配置，剔除失效条件后从第一页查询；配置失败保留当前卡片并提供重试。四组真实 Chrome 场景覆盖手机／桌面、游客／会员，确认刷新不重放已取消的筛选或登录草稿。此处使用接口测试数据，不宣称后台生产部署已完成。

上线前仍需安装许可证适用的真实模型，配置模型进程的资源和队列上限，并用真实剧库评测相关度、延迟与容量。数据库槽位约束在途 HTTP 尝试，不能代替模型进程的 GPU／CPU 资源限制。
