""" =============================================================================== FILE: modules/web_api/llm/schemas.py PROJECT: SCUD Orion AI (Unified Architecture) MODULE: web_api / llm ROLE: Декларативная схема нативных инструментов (Function Calling) для Ollama. AI-CONTEXT-ANCHORS: - ANCHOR[SCHEMA_PROMPT_EDIT]: Схема управления узлами системного промпта. - ANCHOR[SCHEMA_TASKS_EDIT]: Консолидированная схема управления задачами. - ANCHOR[SCHEMA_SNAPSHOTS]: Схема доступа к логам и срезам СКУД. =============================================================================== """ # ANCHOR[SCHEMA_PROMPT_EDIT] TOOLS_SCHEMA = [ { "type": "function", "function": { "name": "db_prompt_node_edit", "description": ( "Управление элементами системного промпта (добавление, изменение, удаление пунктов).\n" "Поддерживает как одиночные пункты (section_id, item_id), так и список пунктов для удаления (nodes_list=['1.8', '3.4']).\n" "При любом запросе на удаление или добавление пунктов системного промпта ТЫ ОБЯЗАН вызвать этот инструмент." ), "parameters": { "type": "object", "properties": { "action": { "type": "string", "enum": ["ADD", "EDIT", "DELETE", "BATCH_DELETE"], "description": "Тип действия" }, "section_id": { "type": "integer", "description": "Номер раздела (например 1)" }, "item_id": { "type": "integer", "description": "Номер пункта (например 8)" }, "nodes_list": { "type": "array", "items": {"type": "string"}, "description": "Список пунктов для удаления/изменения, например ['1.8', '3.4']" }, "content": { "type": "string", "description": "Текст пункта" } }, "required": ["action"] } } }, { "type": "function", "function": { "name": "db_get_system_prompt", "description": "Просмотр текущего активного системного промпта ассистента из базы данных.", "parameters": { "type": "object", "properties": {} } } }, # ANCHOR[SCHEMA_TASKS_EDIT] { "type": "function", "function": { "name": "db_get_tasks", "description": ( "Просмотр реестра задач и бэклога текущего пользователя.\n" "Вызывай этот инструмент ВСЕГДА при любых запросах просмотра задач ('покажи задачи', 'мои задачи', опечатки 'змдачи').\n" "Запрещено переспрашивать статус или параметры текстом: просто вызывай функцию с аргументами {}." ), "parameters": { "type": "object", "properties": { "status": { "type": "string", "enum": ["ALL", "IN_PROGRESS", "PLANNED", "COMPLETED"], "description": "Опциональный фильтр статуса задач (по умолчанию ALL)" } } } } }, { "type": "function", "function": { "name": "db_tasks_edit", "description": ( "Единый инструмент управления задачами: создание (ADD), изменение статуса/срока/названия (UPDATE), удаление (DELETE) и экспорт (EXPORT).\n" "СТРОГИЕ ПРАВИЛА ВЫЗОВА:\n" "- На любые фразы вида 'удали задачу N', 'удалить N', 'убери задачу N' ТЫ ОБЯЗАН СРАЗУ вызвать инструмент с action='DELETE', task_id='N'.\n" "- На фразы 'возьми в работу N' вызывай action='UPDATE', task_id='N', status='IN_PROGRESS'.\n" "- На фразы 'заверши N', 'готово N' вызывай action='UPDATE', task_id='N', status='COMPLETED'.\n" "- КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО писать текстовые вопросы или запрашивать подтверждения словами! ТЫ ОБЯЗАН СРАЗУ вызвать инструмент." ), "parameters": { "type": "object", "properties": { "action": { "type": "string", "enum": ["ADD", "UPDATE", "DELETE", "EXPORT"], "description": "Тип действия: ADD, UPDATE, DELETE или EXPORT" }, "task_id": { "type": "string", "description": "Номер задачи (например: '37')" }, "title": { "type": "string", "description": "Описание или текст задачи" }, "status": { "type": "string", "enum": ["IN_PROGRESS", "COMPLETED", "BACKLOG"], "description": "Новый статус задачи: IN_PROGRESS (В работу), COMPLETED (Завершено), BACKLOG (В планы)" }, "priority": { "type": "string", "enum": ["LOW", "MEDIUM", "HIGH", "CRITICAL"], "description": "Приоритет задачи" }, "module": { "type": "string", "description": "Модуль проекта" }, "due_date": { "type": "string", "description": "Срок в формате ГГГГ-ММ-ДД" }, "filename": { "type": "string", "description": "Имя файла для экспорта" } }, "required": ["action"] } } }, # ANCHOR[SCHEMA_SNAPSHOTS] { "type": "function", "function": { "name": "db_get_snapshots", "description": ( "Получение реестра/списка доступных снапшотов (файлов срезов) СКУД.\n" "ВЫЗЫВАТЬ ТОЛЬКО при прямом запросе на список срезов ('покажи срезы', 'какие есть снапшоты', 'срезы за дату').\n" "КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО вызывать эту функцию, если пользователь спрашивает о людях, сотрудниках, входах или выходах внутри уже открытого среза!" ), "parameters": { "type": "object", "properties": { "date_str": { "type": "string", "description": "Дата в формате ДД.ММ.ГГГГ или относительное слово" } } } } }, { "type": "function", "function": { "name": "db_delete_snapshots", "description": "Удаление дневных снапшотов СКУД по идентификатору или дате.", "parameters": { "type": "object", "properties": { "snapshot_id": { "type": "string", "description": "Идентификатор или список идентификаторов через запятую" }, "day_str": { "type": "string", "description": "Дата всех снапшотов за день" }, "confirmed": { "type": "boolean", "description": "Флаг окончательного подтверждения удаления пользователем" } } } } }, { "type": "function", "function": { "name": "db_get_anomalies", "description": "Просмотр истории аномалий и расхождений между СКУД и 1С.", "parameters": { "type": "object", "properties": { "date_str": { "type": "string", "description": "Опциональная дата в формате ДД.ММ.ГГГГ" }, "limit": { "type": "integer", "description": "Лимит записей" } } } } }, { "type": "function", "function": { "name": "db_get_rules", "description": "Просмотр базы знаний и правил кадрового арбитража компании.", "parameters": { "type": "object", "properties": {} } } }, { "type": "function", "function": { "name": "db_get_stats", "description": "Получение статистики количества записей в таблицах базы данных.", "parameters": { "type": "object", "properties": {} } } }, { "type": "function", "function": { "name": "db_get_current_server_time", "description": "Получение текущего точного времени сервера.", "parameters": { "type": "object", "properties": {} } } }, { "type": "function", "function": { "name": "db_get_reference", "description": "Справка о возможностях ассистента и примеры доступных команд.", "parameters": { "type": "object", "properties": { "category": { "type": "string", "description": "Категория справки" } } } } } ]