234 lines
9.4 KiB
Python
234 lines
9.4 KiB
Python
"""
|
|
===============================================================================
|
|
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": (
|
|
"Управление элементами системного промпта (добавление, изменение, удаление). "
|
|
"Если пользователь пишет 'удали 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", "EDIT", "DELETE"],
|
|
"description": "Действие: ADD (добавить), EDIT (изменить), DELETE (удалить)"
|
|
},
|
|
"section_id": {
|
|
"type": "integer",
|
|
"description": "Номер раздела из точки (например, 2 из 2.9)"
|
|
},
|
|
"item_id": {
|
|
"type": "integer",
|
|
"description": "Номер пункта из точки (например, 9 из 2.9)"
|
|
},
|
|
"content": {
|
|
"type": "string",
|
|
"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": "Просмотр реестра задач и бэклога текущего пользователя.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["ALL", "IN_PROGRESS", "PLANNED", "COMPLETED"],
|
|
"description": "Опциональный фильтр статуса задач"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "db_tasks_edit",
|
|
"description": "Единый инструмент управления задачами: создание (ADD), изменение статуса/дедлайна (UPDATE), удаление (DELETE) и экспорт задач в Markdown-файл (EXPORT).",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"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": ["action"]
|
|
}
|
|
}
|
|
},
|
|
# ANCHOR[SCHEMA_SNAPSHOTS]
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "db_get_snapshots",
|
|
"description": "Получение списка снапшотов и срезов логов СКУД из базы данных за конкретную дату.",
|
|
"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": "Дата всех снапшотов за день"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"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": "Категория справки"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
] |