chore: save working baseline before v3.0 architecture refactoring
This commit is contained in:
+113
-87
@@ -1,50 +1,77 @@
|
||||
"""
|
||||
===============================================================================
|
||||
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": (
|
||||
"ЕДИНСТВЕННЫЙ инструмент для добавления, изменения или УДАЛЕНИЯ пунктов системного промпта. "
|
||||
"Вызывай ВСЕГДА при фразах 'удали X.Y', 'удалить пункт X.Y', 'добавь X.Y', 'измени X.Y'. "
|
||||
"При удалении: action='DELETE', section_id=X, item_id=Y, content=''. "
|
||||
"Запрещено отвечать текстовым подтверждением без вызова этой функции!"
|
||||
"Управление элементами системного промпта (добавление, изменение, удаление). "
|
||||
"Если пользователь пишет 'удали 2.9' или 'удали пункт 2.9', вызывай action='DELETE', section_id=2, item_id=9. "
|
||||
"Действие action может быть ADD, EDIT или DELETE."
|
||||
),
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"action": {
|
||||
"type": "string",
|
||||
"enum": ["ADD", "UPDATE", "DELETE"],
|
||||
"description": "ADD (добавить), UPDATE (изменить), DELETE (удалить)"
|
||||
"enum": ["ADD", "EDIT", "DELETE"],
|
||||
"description": "Действие: ADD (добавить), EDIT (изменить), DELETE (удалить)"
|
||||
},
|
||||
"section_id": {
|
||||
"type": "integer",
|
||||
"description": "Номер раздела (например: 1, 2, 3)"
|
||||
"description": "Номер раздела из точки (например, 2 из 2.9)"
|
||||
},
|
||||
"item_id": {
|
||||
"type": "integer",
|
||||
"description": "Номер пункта (например: 4, 8, 9)"
|
||||
"description": "Номер пункта из точки (например, 9 из 2.9)"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Текст пункта (для DELETE передается пустая строка)"
|
||||
"description": "Текст пункта (для DELETE пустая строка)"
|
||||
}
|
||||
},
|
||||
"required": ["action", "section_id", "item_id"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "ПОЛУЧИТЬ СПИСОК ЗАДАЧ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ. Вызывай СРАЗУ при запросе 'покажи мои задачи' или 'список задач'. ВАЖНОЕ ПРАВИЛО ВЫВОДА: Выводи задачи ЕДИНЫМ плоским списком (нумерованным или маркированным) по порядку ID. КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО группировать задачи по статусам (В процессе, Бэклог, Завершены) или создавать подзаголовки, если оператор явно не попросил о группировке!",
|
||||
"description": "Просмотр реестра задач и бэклога текущего пользователя.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "Фильтр статуса: BACKLOG, IN_PROGRESS или COMPLETED."
|
||||
"enum": ["ALL", "IN_PROGRESS", "PLANNED", "COMPLETED"],
|
||||
"description": "Опциональный фильтр статуса задач"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -53,64 +80,63 @@ TOOLS_SCHEMA = [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_rules",
|
||||
"description": "ПОЛУЧИТЬ БАЗУ ЗНАНИЙ ИИ И ПРАВИЛА АРБИТРАЖА (ai_knowledge_base). Вызывай когда пользователь просит показать базу знаний, правила, инструкции или промпты.",
|
||||
"parameters": {"type": "object", "properties": {}}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_system_prompt",
|
||||
"description": "ВЫЗЫВАЙ ВСЕГДА при наличии в сообщении фраз: 'покажи системный промпт', 'покажи промпт', 'выведи промпт', 'системный промпт'. Запрещено отвечать текстом без вызова этого инструмента.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_update_task_status",
|
||||
"description": "Изменить статус и/или срок выполнения задачи в реестре.",
|
||||
"name": "db_tasks_edit",
|
||||
"description": "Единый инструмент управления задачами: создание (ADD), изменение статуса/дедлайна (UPDATE), удаление (DELETE) и экспорт задач в Markdown-файл (EXPORT).",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {"type": "string", "description": "Идентификатор задачи, например TASK-17"},
|
||||
"status": {"type": "string", "description": "Новый статус: COMPLETED, IN_PROGRESS или BACKLOG"},
|
||||
"due_date": {"type": "string", "description": "Срок выполнения задачи"}
|
||||
"action": {
|
||||
"type": "string",
|
||||
"enum": ["ADD", "UPDATE", "DELETE", "EXPORT"],
|
||||
"description": "Тип действия: ADD, UPDATE, DELETE или EXPORT"
|
||||
},
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"description": "Номер задачи (для UPDATE и DELETE, например: '35')"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Описание или текст задачи"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["IN_PROGRESS", "COMPLETED", "PLANNED"],
|
||||
"description": "Статус задачи"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"enum": ["LOW", "MEDIUM", "HIGH", "CRITICAL"],
|
||||
"description": "Приоритет задачи"
|
||||
},
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "Модуль проекта"
|
||||
},
|
||||
"due_date": {
|
||||
"type": "string",
|
||||
"description": "Срок в формате ГГГГ-ММ-ДД"
|
||||
},
|
||||
"filename": {
|
||||
"type": "string",
|
||||
"description": "Имя файла для экспорта"
|
||||
}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_delete_task",
|
||||
"description": "Удалить задачу из реестра по её task_id (например, TASK-18).",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {"type": "string", "description": "Идентификатор задачи для удаления, например TASK-18"}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
"required": ["action"]
|
||||
}
|
||||
}
|
||||
},
|
||||
# ANCHOR[SCHEMA_SNAPSHOTS]
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_snapshots",
|
||||
"description": "ПОЛУЧИТЬ АКТУАЛЬНЫЙ СПИСОК СНАПШОТОВ ИЗ БАЗЫ SQLITE. Вызывай ЭТУ ФУНКЦИЮ ВСЕГДА, даже если список снапшотов уже есть в истории чата или пользователь просит 'обновить', 'повторить запрос', 'проверить снова'. ЗАПРЕЩЕНО беречь контекст и выводить старые данные из истории!",
|
||||
"description": "Получение списка снапшотов и срезов логов СКУД из базы данных за конкретную дату.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"date_str": {
|
||||
"type": "string",
|
||||
"description": "Точная дата в формате ДД.ММ.ГГГГ (например, '12.08.2026'), взятая из [СИСТЕМНОГО КАЛЕНДАРЯ СЕРВЕРА]."
|
||||
"description": "Дата в формате ДД.ММ.ГГГГ или относительное слово"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -120,12 +146,18 @@ TOOLS_SCHEMA = [
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_delete_snapshots",
|
||||
"description": "УДАЛИТЬ СНАПШОТ(Ы) ИЗ БАЗЫ ДАННЫХ. Вызывай, когда пользователь явно просит удалить конкретный снапшот по ID или все снапшоты за выбранный день.",
|
||||
"description": "Удаление снапшотов СКУД по идентификатору или дате.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"snapshot_id": {"type": "string", "description": "Идентификатор снапшота для удаления, например Y20260805-007"},
|
||||
"day_str": {"type": "string", "description": "Дата в формате ДД.ММ.ГГГГ для удаления всех снапшотов за день"}
|
||||
"snapshot_id": {
|
||||
"type": "string",
|
||||
"description": "Идентификатор конкретного снапшота"
|
||||
},
|
||||
"day_str": {
|
||||
"type": "string",
|
||||
"description": "Дата всех снапшотов за день"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -133,29 +165,31 @@ TOOLS_SCHEMA = [
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_current_server_time",
|
||||
"description": "ПОЛУЧИТЬ ТЕКУЩУЮ ДАТУ, ВРЕМЯ И ДЕНЬ НЕДЕЛИ СЕРВЕРА. Вызывай МГНОВЕННО при любых вопросах пользователя про точное текущее время или текущую дату.",
|
||||
"name": "db_get_anomalies",
|
||||
"description": "Просмотр истории аномалий и расхождений между СКУД и 1С.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": []
|
||||
"properties": {
|
||||
"date_str": {
|
||||
"type": "string",
|
||||
"description": "Опциональная дата в формате ДД.ММ.ГГГГ"
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"description": "Лимит записей"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_add_task",
|
||||
"description": "Добавить новую задачу в бэклог проекта.",
|
||||
"name": "db_get_rules",
|
||||
"description": "Просмотр базы знаний и правил кадрового арбитража компании.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {"type": "string", "description": "Краткое описание задачи"},
|
||||
"priority": {"type": "string", "description": "Приоритет: HIGH, MEDIUM, LOW"},
|
||||
"module": {"type": "string", "description": "Модуль проекта, например general или services/scud_export"},
|
||||
"due_date": {"type": "string", "description": "Срок выполнения задачи, например '2026-08-07 12:00'"}
|
||||
},
|
||||
"required": ["title"]
|
||||
"properties": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -163,43 +197,35 @@ TOOLS_SCHEMA = [
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_stats",
|
||||
"description": "ПОЛУЧИТЬ ОБЩУЮ СТАТИСТИКУ БАЗЫ ДАННЫХ. Вызывай, когда пользователь просит показать общую статистику БД, количество записей в таблицах или размер базы.",
|
||||
"parameters": {"type": "object", "properties": {}}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_anomalies",
|
||||
"description": "ПОЛУЧИТЬ ИСТОРИЮ АНОМАЛИЙ СКУД ⟷ 1С. Вызывай при запросах на просмотр аномалий или расхождений. Передавай date_str если пользователь просит аномалии за конкретный день, или увеличенный limit (например 100) если просит все.",
|
||||
"description": "Получение статистики количества записей в таблицах базы данных.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"limit": {"type": "integer", "description": "Максимальное количество записей (по умолчанию 100)"},
|
||||
"date_str": {"type": "string", "description": "Опциональная дата в формате ДД.ММ.ГГГГ"}
|
||||
}
|
||||
"properties": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_session_states",
|
||||
"description": "ПОЛУЧИТЬ АКТИВНЫЕ СЕССИИ И ПРЕВЬЮ (session_states). Вызывай, когда пользователь просит показать текущие сессии или статус превью.",
|
||||
"parameters": {"type": "object", "properties": {}}
|
||||
"name": "db_get_current_server_time",
|
||||
"description": "Получение текущего точного времени сервера.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "db_get_reference",
|
||||
"description": "ПОЛУЧИТЬ СИСТЕМНЫЙ СПРАВОЧНИК И ПРИМЕРЫ КОМАНД ДЛЯ ОПЕРАТОРА (system_reference). Вызывай ВСЕГДА, когда пользователь спрашивает про возможности ассистента, список команд, примерах промптов или справе по работе с системой.",
|
||||
"description": "Справка о возможностях ассистента и примеры доступных команд.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"category": {
|
||||
"type": "string",
|
||||
"description": "Фильтр категории: scud, tasks, calendar или system. Если просят всё — не передавай параметр."
|
||||
"description": "Категория справки"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user