fix: 数据源审查小修(from_config 类型守卫/PROMPTS_KEYS 消重/契约措辞)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@ import pytest
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.engine.services.ai_service import PromptProvider
|
||||
from app.engine.services.ai_service import PROMPTS_KEYS, PromptProvider
|
||||
from app.platform.db import (
|
||||
Site,
|
||||
SiteDomain,
|
||||
@@ -36,8 +36,6 @@ REPO_ROOT = Path(__file__).resolve().parents[1]
|
||||
SEED_DIR = REPO_ROOT / "seed_profiles"
|
||||
JC_DOMAIN = "db.jc.example.com" # DB 源测试专属域名(不与文件源种子撞)
|
||||
|
||||
_PROMPTS_KEYS = ("system", "company_facts", "extractor", "evaluator")
|
||||
|
||||
|
||||
def _jiancai_snapshot(prefix="ai-kefu-jc"):
|
||||
"""版本 config_json 构造助手:seed jiancai 的 config 组 + wall.json +
|
||||
@@ -51,7 +49,7 @@ def _jiancai_snapshot(prefix="ai-kefu-jc"):
|
||||
(SEED_DIR / "jiancai" / "wall.json").read_text(encoding="utf-8"))
|
||||
snapshot["prompts"] = {
|
||||
name: (prompts_dir / f"{name}.md").read_text(encoding="utf-8")
|
||||
for name in _PROMPTS_KEYS
|
||||
for name in PROMPTS_KEYS
|
||||
}
|
||||
return snapshot
|
||||
|
||||
|
||||
@@ -153,6 +153,14 @@ def test_from_config_non_string_key_raises():
|
||||
"extractor": "e", "evaluator": "v"})
|
||||
|
||||
|
||||
def test_from_config_non_dict_raises():
|
||||
# 入口类型守卫: Task 6 的 PUT prompts 会把请求体直传这里——字符串/
|
||||
# 列表进来必须是 ValueError,不能让 .get 的 AttributeError 漏成 500
|
||||
for bad in ("system=...", ["system", "company_facts"], 42, None):
|
||||
with pytest.raises(ValueError, match="dict"):
|
||||
PromptProvider.from_config(bad)
|
||||
|
||||
|
||||
def test_from_config_equals_from_dir():
|
||||
d = JC_PROMPTS
|
||||
cfg = {name: (d / f"{name}.md").read_text(encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user