Skip to content

Phase 7.2: KnowledgeService facade — объединить wiki_rag_service + knowledge/service.py #643

@ShaerWare

Description

@ShaerWare

Parent

Sub-issue of #641 (Phase 7: Service facade migration)

Зависит от

Цель

Создать единый KnowledgeService фасад, объединяющий поиск (wiki_rag_service.py) и управление коллекциями/документами/FAQ (modules/knowledge/service.py). Привести к Protocol из modules/knowledge/protocols.py.

Текущее состояние

Логика разделена между:

  • wiki_rag_service.py (top-level) — BM25 + embeddings search, retrieve(), retrieve_multi(), stats
  • modules/knowledge/service.py — 4 класса-синглтона:
    • FAQService — CRUD FAQ записей
    • KnowledgeDocService — CRUD документов
    • KnowledgeCollectionService — CRUD коллекций
    • GitHubRepoProjectService — GitHub репо-проекты

Потребители:

  • Оркестратор (container.wiki_rag_service.retrieve())
  • Knowledge роутеры (from modules.knowledge.service import faq_service)
  • LLM подписчик (KnowledgeUpdated → FAQ reload)

Что сделать

  1. Создать KnowledgeServiceImpl в modules/knowledge/facade.py, реализующий Protocol
  2. Методы search() и retrieve_context() делегируют к wiki_rag_service
  3. Методы get_collections(), get_documents(), sync_documents() делегируют к существующим service-классам
  4. Методы find_faq_answer(), get_faq_entries() делегируют к FAQService
  5. Возвраты типизированы через TypedDict из modules/knowledge/schemas.py
  6. Зарегистрировать в ServiceContainer как knowledge_service

Нюансы

  • wiki_rag_service инициализируется позже (требует загрузки индексов) — фасад должен это учитывать (lazy или optional)
  • wiki_rag_service.retrieve() возвращает str (форматированный markdown) — это retrieve_context() в Protocol
  • Существующие 4 синглтона (faq_service, knowledge_doc_service, etc.) остаются для backward compat
  • search() возвращает list[dict] в wiki_rag → нужна конвертация в list[SearchResult]

Критерии готовности

  • KnowledgeServiceImpl реализует Protocol
  • Возвраты используют TypedDict
  • Зарегистрирован в ServiceContainer
  • Потребители могут мигрировать с container.wiki_rag_service на container.knowledge_service
  • Тесты, CI зелёный

Оценка: M-L (1 PR)

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low priority / Backlogphase:5-techdebtPhase 5: Technical DebtrefactoringArchitectural refactoring

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions