Полный отказ от LLM: детерминированный rules-анализ
Решение Виктора: ИИ убран из проекта — карточки детей (ПД) не должны покиать контур. Анализ полностью локальный и детерминированный. - services/rules_analysis.py: правила вместо Claude (бывший analyze_with_fallback + rule_based_urgency из closed_cases): urgency по возрасту/профилям, зоны через geo+scoring, behavioral_prediction/immediate_actions/key_locations — справочники. - search_engine: анализатор инъекцией (CaseAnalyzer, Protocol), импорт claude_service удалён; рантайм — rules_analyze. - УДАЛЕНЫ: services/claude_service.py, backend/services/claude_service.py (устаревшая копия), test_claude_service.py; ключевые правила-кейсы перенесены в test_rules_analysis.py (+тест отсутствия LLM-упоминаний). - docker-compose/.env.example: ANTHROPIC_API_KEY удалён. - Фронт: бейдж 'ИИ-анализ' -> 'Локальный расчёт'. - Доки: DEPLOY/SERVICES_README/ANALYZE_API переписаны, FIXES_REPORT помечен историческим, vector_tasks B20: zones/probability — из движка. pytest: 187 passed (было 214; -27 удалённых LLM-тестов, +тест rules). Контракт /analyze не изменён (фронт совместим).
This commit is contained in:
@@ -9,13 +9,10 @@ from pydantic import BaseModel, Field
|
||||
|
||||
from backend.database import db
|
||||
from backend.routers.auth import require_roles
|
||||
from services.claude_service import analyze_case as claude_analyze
|
||||
from services.rules_analysis import rules_analyze
|
||||
from services.search_engine import (
|
||||
SearchInput,
|
||||
build_search_model,
|
||||
derive_profiles,
|
||||
derive_time_of_day,
|
||||
unmodeled_profiles,
|
||||
)
|
||||
|
||||
router = APIRouter(prefix='/api/v1/analyze', tags=['analyze'])
|
||||
@@ -98,7 +95,7 @@ async def analyze_case(payload: AnalysisRequest) -> dict[str, Any]:
|
||||
time_of_day=case_data.get('time_of_day'),
|
||||
)
|
||||
|
||||
model = await build_search_model(search_input, analyzer=claude_analyze)
|
||||
model = await build_search_model(search_input, analyzer=rules_analyze)
|
||||
result = model.model_dump()
|
||||
|
||||
result['case_id'] = str(payload.case_id) if payload.case_id else None
|
||||
|
||||
Reference in New Issue
Block a user