""" =============================================================================== FILE: services/prompts/service.py PROJECT: SCUD Orion AI (Unified Architecture) MODULE: services / prompts ROLE: Единый доменный сервис управления системным промптом. =============================================================================== """ from typing import Tuple, Dict, Any, List, Optional from .repository import repo_get_active_prompt, repo_apply_prompt_action, repo_save_full_prompt from .diff_engine import build_prompt_diff def get_active_system_prompt() -> str: """Получить текущий активный системный промпт.""" return repo_get_active_prompt() def apply_prompt_action(action: str, section_id: int, item_id: int, content: str = "") -> None: """Применить точечное изменение к узлу промпта.""" repo_apply_prompt_action(action, section_id, item_id, content) def save_full_prompt_draft(draft_text: str, prompt_name: str = "main_agent") -> None: """Сохранить полный черновик промпта.""" repo_save_full_prompt(draft_text, prompt_name=prompt_name) def create_prompt_preview( action: str, section_id: Optional[int] = None, item_id: Optional[int] = None, content: str = "", delete_nodes: Optional[List[Tuple[int, int]]] = None ) -> Tuple[str, str, str]: """ Формирует черновик и diff. Возвращает (merged_draft, diff_html, baseline_prompt). """ baseline = repo_get_active_prompt() draft, diff_html = build_prompt_diff( action=action, section_id=section_id, item_id=item_id, content=content, delete_nodes=delete_nodes ) return draft, diff_html, baseline