浅念
|
24902c3c43
|
feat: breach_rate随迁(多租户--tenant适配)
从 ai-kefu-jc/scripts/breach_rate.py 拷入并适配多租户: CLI 改为
--tenant <slug> 必填, 经 platform.db 门禁(租户须已 bootstrap 注册,
同 import_legacy/archive 纪律)后只读打开 tenants/<slug>.db; 新增
--platform-db/--tenants-dir 覆盖参数(默认 repo 根约定路径)。
其余逻辑与 jc 原版一致: PATTERNS 锚定式匹配(美元符/货币单位多语言/
价格名词前置/交期承诺/号码回显≥10位/邮箱回显), 逐 assistant 轮次
首模式命中即计, 汇总破防率(>10% 启动方案B 输出过滤)。观察漏放侧
偏差——误杀侧不在本脚本口径(人工复核)。
冒烟: 临时库验证 happy path(5 轮 3 中 60%, user 行排除/NULL 内容
守卫/中文标签)与四类门禁拒绝(未注册/库缺文件/platform.db 缺/
schema 未就位), 临时文件已清。全量 pytest 630 passed 2 skipped。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-14 10:27:41 +08:00 |
|
浅念
|
78755d491b
|
fix: 归档脚本微审修复(fsync/文件名防覆盖/VACUUM容错/导出删除对账)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-14 09:34:19 +08:00 |
|
浅念
|
3a3292c239
|
feat: 数据归档脚本(导出/清理/VACUUM/dry-run)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-14 09:23:42 +08:00 |
|
浅念
|
ac9a4da51d
|
feat: 存量导入脚本(保ID/session/status、pending→failed、幂等、对账报告)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-14 09:00:39 +08:00 |
|
浅念
|
6100b4eb15
|
fix: P4T1审查修复(platform.db入data卷/tzdata注释/corepack钉版/compose版本注记)
- main.py: PLATFORM_DB 挪到 <repo>/data/platform.db——data/ 是 compose
bind mount,容器/镜像重建不再丢租户注册表;lifespan 对父目录兜底
mkdir(冷机 data/ 不存在,sqlite 不建父目录)。bootstrap 脚本 --db
默认值同步锚定 data/。
- 新测试 test_platform_db_defaults_into_data_dir: 常量形状钉死(回退
仓库根即红)+ 冷机形态下 lifespan 建库于 data/ 内(全量 603)。
- Dockerfile: corepack 钉实测通过的具体版本 0.36.0(不追 latest,构建
可复现);tzdata 注释照实改写(trixie slim 实测已自带,安装留作基
镜像漂移保险)。
- docker-compose: 头注释改准确(tenants/=租户库,data/=platform.db+
uploads);env_file 注记对象式写法需 Docker Compose >= 2.24。
- 实证: compose down/up 重建容器后宿主 ./data/platform.db 仍在,
healthcheck healthy,/admin/ 200;docker compose build 复验通过。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-14 08:42:50 +08:00 |
|
浅念
|
7d16ae6318
|
feat: 生产装配切换DbTenantSource + bootstrap脚本(超管/两租户幂等导入)
- app/main.py: lifespan registry 装配按 env TENANT_SOURCE 切换(db|file,
默认 db)——db 走 TenantRegistry(DbTenantSource(platform_engine)) +
schema 就绪后 async load_all;file 回退旧 load_from_dir。空 platform.db
冷启动不炸:显式预检 tenants 表(非捕 ValueError——坏数据同样抛
ValueError,一揽子吞会把数据损坏静默成空平台),空表保持空注册表
(域名全 404 直到 bootstrap 导入),清扫循环对空 runtimes() 安全。
非法值在创建任何 engine 前显性炸。conftest 预置缝优先于 env 装配,
既有 558 测试零改动全绿。
- scripts/bootstrap_platform.py: init(schema+超管,env/.env 凭据,空表
才建)+ 出厂档案幂等导入(已存在 slug 跳过;FileTenantSource.read_tenant
同构快照 → Tenant+sites+domains+版本1,版本走 write_config_version 单一
路径;域名 _normalize_host 归一)。不建租户管理员——导入是存量迁移
形态,租户管理员按需走后台创建向导补。CLI 照 extract_config.py 的
argparse 风格(--db/--profiles/--seed)。
- tests/test_bootstrap_script.py: 幂等两遍零变化(行数/版本数逐项断言)、
超管 env 凭据、未知档案显性炸、bootstrap→DbTenantSource→registry 两租户
resolve 冒烟(jc 蓝/17 条/ai-kefu-jc,auto 橙/13 条/ai-kefu,es 覆盖层)、
TENANT_SOURCE 三态装配(db 空/库冷启动、file 回退、非法值炸)。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 12:05:42 +08:00 |
|
浅念
|
f5f54383fc
|
fix: 词表墙的四项审查修复(es 池降级/占位符白名单校验/键 allowlist/提取自检+防呆测试)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-12 18:05:55 +08:00 |
|
浅念
|
bc903a273e
|
feat: 词表数据化——AST 提取脚本 + wall.json + 编译器 + boundary/conversation 数据源切换(等价回归全绿)
- scripts/extract_config.py: AST 解析两老项目源码取常量(不 import 源模块),
生成 seed_profiles/<slug>/{wall.json, brand_values.json, prompts/};幂等可重跑
- app/engine/wall_schema.py: compile_wall(json)→CompiledWall,坏结构/坏 regex
编译期显性失败(WallConfigError 含字段路径)
- boundary_filter/conversation: 墙词表/话术数据源切换为 DEFAULT_WALL
(jiancai 出厂 seed),函数逻辑不动、常量名保留为 wall 视图(既有测试零修改);
wall 数据化新增 pivots/pivots_contact/zero_number/reask_patterns 字段
- 脆锚点迁移: test_inline_prohibitions 断言对象从 conversation.py 源码改为
wall.json 数据文件,语义等价(唯一允许的测试修改)
- 回归: 322 既有全绿 + 10 新增 wall_schema 测试 = 332;提取脚本两遍无 diff
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-12 17:31:57 +08:00 |
|