浅念
|
6af8c186d8
|
fix: Phase3 终审修复(env入库/通用配置组面板/锁屏通知摘除/记档修正)
- I-2: admin/.env(被根 .gitignore 误伤)删除,内容并入入库的
.env.development/.env.production(公共块两份都写,PORT 仅 dev)
- I-1: 配置中心补 contact/engine/misc 三组通用 JSON 编辑面板
(JsonGroupPane:等宽 textarea 整组编辑 + JSON.parse 预检 +
PUT 整组 + 重置出厂 + 顶部字段说明;挂进 GROUP_NAV 三入口);
修组键缺失租户的禁存 bug(父层快照加载后挂载,空组可建组)
- I-3: config_routes.py docstring 改「接线归 Phase 4」;
CLAUDE.md Phase 4 清理单补 resolver 回退链与 email/push test 限流
- M-1: 锁屏摘除入口(用户菜单项删 + 全局组件 enabled:false)
- M-2: 顶栏通知铃铛隐藏(headerBar notification.enabled:false)
- M-5/M-8: admin/README 换三行指针(删模板 README.zh-CN.md);
quickLinks 删「登录」项
- M-3/M-4 不做记档入 Phase 4 清理单
- 测试基线:后端 pytest 595 / 前端 vitest 156(+3 通用 JSON 组)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-14 00:05:40 +08:00 |
|
浅念
|
65aad53e12
|
chore: Phase 3 收尾——平台设置页+全页冒烟+文档
Task 9(Phase 3 最后任务):
- 平台设置页实装(settings/platform):推荐键表单(ai.* 三键 /
smtp.* 四键,键名为前端约定——PlatformSetting 是自由 KV 表)+
存储总览表格;保存 = 逐键 PUT 只提交脏键(与 config 组整组替换
不同);密钥键哨兵交互与凭据页同款(已设置占位 / 清除 / 恢复
保持 / 端口 1-65535 校验);页头注记 resolver 回退链未接线、
现阶段仅存储。
- api/settings.ts:fetchPlatformSettings / putPlatformSetting 实装
(GET items 列表 / PUT 单键 upsert 形态钉在 docstring)。
- vitest +14(model 10 + api 4):掩码判定后端镜像、归一/脏检测/
提交值/校验/展示全覆盖;前端基线 139 → 153。
- 全页面浏览器冒烟通过(登录→强制改密→仪表盘双视角→租户管理→
会话与线索→配置中心全组→统计分析→平台设置→退出→租户管理员
视角菜单收敛)。
- CLAUDE.md:新增 Phase 3 完成状态段(基线 595/153、本地起法、
admin 能力一览、前端约定);Phase 3 清理单结项 7/11/12(掩码
哨兵 / 站点权限 / push enabled 显式化);Phase 4 清理单增补四项
(components.dts 行尾漂移 / 推送探测 env 回退真址 / 生产反代
/api/public / VITE_TENANT_PREVIEW_HOST 单域名)。README 现状
刷新至 Phase 3。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 23:29:31 +08:00 |
|
浅念
|
6839cb94d2
|
fix: 终审修复——站点停用接线/prefix查重补创建reset/默认凭据警示+取舍补录
- I-1 站点停用全链接线: Site 数据类加 status 字段; DB 源 _load_one 与
文件源 read_tenant 均只输出 active 站点(停用站点域名不进 registry
索引 → 该域名 404;全停用=合法运营状态输出空 sites;文件源无 status
键默认 active 兼容)。E2E: PATCH 站点 disabled → 其域名 404、复启用
恢复;源级直测两源过滤。
- I-3 prefix 跨租户查重补两口: db.other_push_prefixes 共用助手
(MAX(version) 逐租户当前前缀,排除自身);创建向导(出厂档案前缀被占
→ 400 提示改 blank/改占用方)与 reset push(重置回出厂撞车 → 400 提示
走 PUT)接入;PUT 原有查重改用同一助手。rollback 维持豁免(历史不可变
语义优先,取舍清单记档)。既有测试第二租户改 blank profile 避撞。
- I-4 默认凭据警示: lifespan 启动检测 ADMIN_PASSWORD 仍为 Settings 字段
默认值(非硬编码第二份,防双源漂移)→ logger.warning 醒目提示;
CLAUDE.md Phase 4 部署记档补 ADMIN_PASSWORD 生产要求。
- I-2/M-2 取舍补录: 密钥掩码未实现(GET config/settings 明文返回
api_key/smtp 密码,Phase 3 前须定 __SET__ 哨兵方案);站点管理权限现为
仅超管(Phase 3 对接时决策放开或改 spec);取舍清单第 2 条同步刷新
(rollback 现为唯一豁免口)。
全量回归: 571 passed(基线 566 + 新增 5)。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 12:40:21 +08:00 |
|
浅念
|
6cd343e24a
|
chore: Phase 2 收尾——平台层完成(审计+安全自查+文档+清理单)
- 全量回归 566 passed(根目录与 tests/ 双跑一致),基线数字刷新(459→566)
- 零同步 IO 审计复查:app/ 无 requests/urllib/time.sleep/open,scrypt CPU 注记在案
- 安全自查全过:platform 层零 logger(凭据不进日志)、gitignore 覆盖实证
(tenants/*.db* / platform.db* / data/)、登录限流在 /api/platform 豁免
路径仍生效(豁免只跳过租户解析,测试钉位在)、上传目录不可执行
(魔数+uuid 重命名,avatar 下发防路径穿透,content-type 按扩展名映射)
- CLAUDE.md:新增 Phase 2 完成状态(基线/审计/安全/平台层能力一览/
admin API 速览)、Phase 2 沉淀取舍 10 项 + Phase 3 清理单(旧 12 项中
#1#2#3 Task 10、#10 Task 7 已完成划除)、Phase 4 部署记档、
Phase 3 计划编写注意(conftest 三坑 + db_source_app/super_client 夹具 +
config_views 单入口 + stats 口径表)
- README:现状刷新至 Phase 2 收尾时点
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 12:21:10 +08:00 |
|
浅念
|
9ad02a778f
|
fix: 终审修复——墙执行侧接租户管道(端到端回归锁)+seed补email组+措辞与死依赖清理
C-1(必须修): 墙的执行侧没接租户管道——runtime.compiled_wall 全库只有
AIService 的 $DEFLECTION_POOL 一处消费,conversation.py 执行侧全走模块级
DEFAULT_WALL(jiancai 出厂),auto 租户会话实际跑的是 jc 墙。修复:
- manager 构造时 self._wall = runtime.compiled_wall(与 AIService 同源);
- 6 处过滤调用(violates_boundary/no_contact_value/asks_contact 的句内
与 pending 尾巴两路)、CC 墙模板/替换句、no_contact 收尾选择、
pivot/deflection、兜底句、contact_ask 触发日志判定全部传 wall=self._wall;
- _build_context_reminder/_contact_completion_note/_cc_confirm_note/
_cc_script/_cc_wall_template/_lang_note_for 加 wall=None 尾参
(None = 模块级默认墙,旧测试直调语义不变;流式侧 _contact_completion_note
双胞调用同传 wall,写回与注入不漂移);
- 模块级 DEFAULT_WALL 视图常量(BOUNDARY_TRIGGER_RE/_CC_*/_EMAIL_NOTE_* 等)
保留——boundary_filter 出厂默认与旧测试锚定,boundary_filter 模块级
DEFAULT_WALL 照旧,conversation 会话流内一律租户墙;
- 端到端回归锁 tests/test_wall_execution_tenant.py(两租户真 runtime +
脚本化假 AI): jc 独有 [€£] pattern 句在 jiancai 拦截替换(收尾=jc
pivots 池)/auto 放行逐字流出;同一邮箱违规句两租户各自精确收到自己
no_contact["web"](12 hours vs replies fast!);contact_ask 提醒注入
各自墙文案互不渗漏。已验证模拟旧 DEFAULT_WALL 行为时三测全败。
I-1: 两租户 seed 补 email 组(以 brand_values.json 实际值为准:
auto=notify_email 环境值,jiancai=品牌邮箱——其 notify_email 记录是
notify@example.com 占位): auto {sender_name: XYH, notify_emails:
[18339827479@163.com]}, jiancai {sender_name: HESUPIPE, notify_emails:
[hesu@hesuu.com]};seed 存裸名,From 头渲染时外层再包【】。补测
test_seed_tenants_ship_email_group: env NOTIFY_EMAIL patch 成异值证明
seed 槽胜出。
M-1/M-2: README/CLAUDE.md "platform.db 热加载"改为"文件级 registry_reload
热加载(Phase 2 升级为 platform.db)";requirements.txt 删 alembic
(全库零引用,grep 实证唯一命中即该行)。
M-3/M-4(挂账): CLAUDE.md Phase 2 清理单补两项——/health 分级健康
(Phase 4 部署批次)、PromptProvider.from_dir FileNotFoundError 带路径上下文。
全量回归: 463 passed(459 基线 + 4 新增),根目录与 tests/ 子目录同数。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 00:18:54 +08:00 |
|
浅念
|
0bf492c1e4
|
chore: Phase 1 收尾——引擎合并租户化完成(审计+清单核对+CLAUDE.md/清理单)
- 全量回归 459 passed(根目录与 tests/ 子目录双跑一致)
- 零同步 IO 审计: requests/urllib/time.sleep 在 app/ 零命中; 唯一 HTTP
出站点 lead_push _do_post 为 httpx.AsyncClient; glm 同步路径经
executor/to_thread 下卸; 结论写入 CLAUDE.md
- spec §6.2 合并清单逐项核对全部在位(jc 六项/上游吸收/三不带),
核对明细写入 CLAUDE.md Phase 1 完成状态段
- CLAUDE.md 新增 Phase 2 清理单(10 项挂账含出处)与 Phase 2 计划
编写注意(conftest 跨循环纪律/夹具复用);修正过时的 tests 目录描述
- README.md 扩为现状能力一览 + 本地跑法指向 CLAUDE.md
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-12 23:51:26 +08:00 |
|
浅念
|
fd0f49870c
|
fix: Host中间件审查修复(本地开发文档/顺序守护测试/ws断连分支/夹具清理)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-12 20:47:01 +08:00 |
|
浅念
|
d5f6feca47
|
chore: 仓库骨架(gitignore/依赖/pytest/CLAUDE.md)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-12 16:10:18 +08:00 |
|