refactor(search): /ask 핸들러 오케스트레이션을 _run_ask 로 분리 (라우터=deps 해소만)
api 리뷰: ask() 529줄에 검색→evidence/classifier→refusal→synthesis→grounding/verifier→7-tier 재게이트→telemetry 가 인라인. body 를 _run_ask(plain params)로 분리, ask 는 FastAPI deps 해소 후 return await _run_ask(...). body verbatim(동작 무변경), 12 params 전부 전달, 다중 return/background_tasks 보존. py_compile + pyflakes undefined-name 0 으로 충실이동 검증. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -647,6 +647,39 @@ async def ask(
|
|||||||
- 일반 client 의 X-Source=eval 시도는 무시되고 source='document_server' 로 강제.
|
- 일반 client 의 X-Source=eval 시도는 무시되고 source='document_server' 로 강제.
|
||||||
- source != 'eval' 이면 eval_case_id 항상 None.
|
- source != 'eval' 이면 eval_case_id 항상 None.
|
||||||
"""
|
"""
|
||||||
|
# 오케스트레이션은 _run_ask 로 분리(라우터=입력+deps 해소만). 동작 무변경 (refactor: ask-orchestrator).
|
||||||
|
return await _run_ask(
|
||||||
|
q=q,
|
||||||
|
user=user,
|
||||||
|
session=session,
|
||||||
|
background_tasks=background_tasks,
|
||||||
|
limit=limit,
|
||||||
|
debug=debug,
|
||||||
|
backend=backend,
|
||||||
|
corpus_variant=corpus_variant,
|
||||||
|
exact_knn=exact_knn,
|
||||||
|
x_source=x_source,
|
||||||
|
x_eval_case_id=x_eval_case_id,
|
||||||
|
x_eval_token=x_eval_token,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def _run_ask(
|
||||||
|
q: str,
|
||||||
|
user: User,
|
||||||
|
session: AsyncSession,
|
||||||
|
background_tasks: BackgroundTasks,
|
||||||
|
limit: int,
|
||||||
|
debug: bool,
|
||||||
|
backend: str | None,
|
||||||
|
corpus_variant: str | None,
|
||||||
|
exact_knn: bool,
|
||||||
|
x_source: str | None,
|
||||||
|
x_eval_case_id: str | None,
|
||||||
|
x_eval_token: str | None,
|
||||||
|
) -> "AskResponse | JSONResponse":
|
||||||
|
"""/ask 오케스트레이션 — 검색→evidence/classifier→refusal→synthesis→grounding/verifier→
|
||||||
|
7-tier 재게이트→telemetry. ask() 가 FastAPI deps 해소 후 호출. 동작은 기존 핸들러와 동일."""
|
||||||
t_total = time.perf_counter()
|
t_total = time.perf_counter()
|
||||||
defense_log: dict = {} # per-layer flag snapshot
|
defense_log: dict = {} # per-layer flag snapshot
|
||||||
source, eval_case_id = _resolve_eval_identity(x_source, x_eval_case_id, x_eval_token)
|
source, eval_case_id = _resolve_eval_identity(x_source, x_eval_case_id, x_eval_token)
|
||||||
|
|||||||
Reference in New Issue
Block a user