refactor: config_views 单入口 + 0语义统一 + FakeAI 收敛(清理单#1#2#3)
- #3 六个消费视图 resolver 收拢 app/platform/config_views(单一定义点): resolve_email/push/ai_settings ← 各服务文件, resolve_contact_flags/ context_seed_map ← conversation, name_to_region_extras ← manager __init__ 内联取值(or None 语义原样)——函数体逐字搬入,服务层 import 之, 旧定义删;Phase 3 编辑器/试金石与该模块对接 - #2 限流 0 语义统一: conn_limiter.try_acquire 的 limit 与 chat_rest 的 rate_limit_per_hour 取值同款——0 或负 = 回退出厂默认(与姊妹键一致), 原 conn_limiter 0=全拒改为回退;chat_rest 取值抽 _resolve_rate_limit 纯函数供锚定 - #1 FakeAI 收敛进 conftest(超集: extract/evaluate/eval_calls),四份拷贝 删(test_lead_email_trigger/test_cc_integration/test_channel_hygiene/ test_lead_push_wiring——计划记三份,grep 实有四份;push_wiring 经 evaluate 参数注入原本地固定返回值,断言零改动) 全量 558 passed(554 + 新增 4: 单入口/内联等价/两处 0 语义) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,12 @@ from app.engine.services.contact_pipeline import (
|
||||
normalize_contacts, resolve_by_recency, scan_user_messages, split_validate,
|
||||
)
|
||||
from app.engine.wall_schema import CompiledWall
|
||||
# Task 10: contact 开关/种子映射/国名扩表三个消费视图收拢至 config_views
|
||||
# (单一定义点;原 resolve_contact_flags/context_seed_map 定义于本模块,
|
||||
# name_to_region_extras 为 __init__ 内联取值)
|
||||
from app.platform.config_views import (
|
||||
context_seed_map, name_to_region_extras, resolve_contact_flags,
|
||||
)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from app.platform.registry import TenantRuntime
|
||||
@@ -33,35 +39,6 @@ if TYPE_CHECKING:
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# ---- Task 9: contact 行为开关 / context 种子白名单(config → 引擎消费口) ----
|
||||
|
||||
def resolve_contact_flags(config_data: dict | None) -> dict:
|
||||
"""租户 config.contact → 联系方式行为开关。
|
||||
|
||||
cc_completion: 号码区号补全(判定树/确认状态机/CC 强制墙总闸);
|
||||
email_light_ask: 邮箱轻补(缺失渠道一次性追问)。False = 该行为整体
|
||||
跳过(引擎级门控: 不建状态/不注入/不写计数键)。
|
||||
(template_languages 暂无运行期消费方, 不在此解析——Phase 2 后台批次
|
||||
再接。)
|
||||
"""
|
||||
contact = ((config_data or {}).get("contact")) or {}
|
||||
return {
|
||||
"cc_completion": bool(contact.get("cc_completion", True)),
|
||||
"email_light_ask": bool(contact.get("email_light_ask", True)),
|
||||
}
|
||||
|
||||
|
||||
def context_seed_map(config_data: dict | None) -> dict:
|
||||
"""context 种子映射 = config.engine.context_seed_keys(ctx_key → raw_key)。
|
||||
|
||||
Task 9 前白名单(product_name/product_id)硬编码在本模块——两租户差异
|
||||
(auto 是 vehicle_*)由此配置化;create_conversation 是唯一消费口(按
|
||||
映射值写 raw_info,白名单 = 本映射的键集合——审查 Minor-4: 单一取值
|
||||
路径,不留第二条内联读法)。
|
||||
"""
|
||||
engine = ((config_data or {}).get("engine")) or {}
|
||||
return dict(engine.get("context_seed_keys") or {})
|
||||
|
||||
# 职能边界触发词(Task 13.2, 评审#1/#4 修订): 命中即注入红线提醒。精修说明:
|
||||
# - 裸 "how long"/"多久" 不收(规格参数类问题常用),英文要求 take/arrive/deliver/ship 邻接,
|
||||
# 中文只收 到货/多久能到/交货 等明确交付语境
|
||||
@@ -409,8 +386,7 @@ class ConversationManager:
|
||||
# 生效时机: WS 长连接内冻结至断连,REST 路径下一请求生效——Phase 2
|
||||
# 联调改配置后按此预期,勿误判"没生效")
|
||||
self._contact_flags = resolve_contact_flags(runtime.config.data)
|
||||
self._region_extras = (((runtime.config.data.get("misc")) or {})
|
||||
.get("name_to_region_extras") or None)
|
||||
self._region_extras = name_to_region_extras(runtime.config.data)
|
||||
|
||||
@property
|
||||
def session_factory(self):
|
||||
|
||||
Reference in New Issue
Block a user