Фиксация изменений

This commit is contained in:
2026-03-05 11:03:17 +03:00
parent 1ef0b4d68c
commit 417b8b6f72
261 changed files with 8215 additions and 332 deletions
@@ -0,0 +1,29 @@
from __future__ import annotations
from app.modules.rag.intent_router_v2.models import LayerQuery, RepoContext
class LayerQueryBuilder:
def build(self, intent: str, repo_context: RepoContext, *, domains: list[str], layers_map: dict[str, list[tuple[str, int]]]) -> list[LayerQuery]:
available = set(repo_context.available_layers or [])
result: list[LayerQuery] = []
for layer_id, top_k in layers_map[intent]:
if not self._layer_matches_domains(layer_id, domains):
continue
if available and layer_id not in available:
continue
result.append(LayerQuery(layer_id=layer_id, top_k=top_k))
if result:
return result
return [
LayerQuery(layer_id=layer_id, top_k=top_k)
for layer_id, top_k in layers_map[intent]
if self._layer_matches_domains(layer_id, domains)
]
def _layer_matches_domains(self, layer_id: str, domains: list[str]) -> bool:
if domains == ["CODE"]:
return layer_id.startswith("C")
if domains == ["DOCS"]:
return layer_id.startswith("D")
return layer_id.startswith("C") or layer_id.startswith("D")