feat: protocol generation — LLM integration, prompt templates, Celery task

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-03 22:24:53 +05:00
parent 849eb0ff48
commit 5c009bc368
7 changed files with 323 additions and 0 deletions
View File
+101
View File
@@ -0,0 +1,101 @@
DEFAULT_TEMPLATES = [
{
"name": "Обследование процессов клиента",
"description": "Протокол встречи по обследованию бизнес-процессов клиента",
"type": "client_survey",
"system_prompt": (
"Ты — опытный бизнес-аналитик. Твоя задача — составить формальный протокол встречи "
"по обследованию бизнес-процессов клиента на основе транскрипции записи встречи. "
"Протокол должен быть структурированным, точным и содержать все ключевые детали. "
"Не придумывай информацию, которой нет в транскрипции. "
"Если какой-то раздел не удаётся заполнить по транскрипции, укажи 'Не обсуждалось'."
),
"user_prompt": (
"Составь протокол встречи по следующей транскрипции. "
"Ответ должен быть в формате JSON с ключами:\n"
"- date_participants_topic: дата, участники и тема встречи\n"
"- process_description: описание обследуемого процесса (задачи бизнеса, подпроцесс)\n"
"- current_state: текущее состояние (as-is)\n"
"- problems: выявленные проблемы и узкие места\n"
"- agreements: договорённости и решения\n"
"- open_questions: открытые вопросы (о которых не договорились)\n"
"- tasks: задачи с ответственными и сроками (массив объектов с полями: task, responsible, deadline)\n"
"- next_steps: следующие шаги\n\n"
"Транскрипция:\n{transcription}"
),
"output_schema": {
"sections": [
"date_participants_topic", "process_description", "current_state",
"problems", "agreements", "open_questions", "tasks", "next_steps",
]
},
"is_default": True,
},
{
"name": "Вводная встреча-знакомство с клиентом",
"description": "Протокол первой встречи с клиентом — выявление целей, параметров проекта, ЛПР",
"type": "client_intro",
"system_prompt": (
"Ты — опытный бизнес-аналитик. Твоя задача — составить формальный протокол вводной "
"встречи-знакомства с клиентом на основе транскрипции. "
"Фокус на выявлении целей клиента, параметров проекта, ограничений и ключевых лиц. "
"Не придумывай информацию, которой нет в транскрипции. "
"Если какой-то раздел не удаётся заполнить, укажи 'Не обсуждалось'."
),
"user_prompt": (
"Составь протокол вводной встречи-знакомства с клиентом по следующей транскрипции. "
"Ответ должен быть в формате JSON с ключами:\n"
"- date_participants_topic: дата, участники и тема встречи\n"
"- client_goals: верхнеуровневые цели клиента\n"
"- project_parameters: параметры будущего проекта\n"
"- budget_constraints: бюджетные ограничения\n"
"- time_constraints: ограничения по срокам\n"
"- decision_makers: лица, принимающие решения (ЛПР)\n"
"- beneficiaries: бенефициары\n"
"- influencers: лица, влияющие на принятие решения\n"
"- agreements: договорённости и решения\n"
"- open_questions: открытые вопросы\n"
"- next_steps: следующие шаги\n\n"
"Транскрипция:\n{transcription}"
),
"output_schema": {
"sections": [
"date_participants_topic", "client_goals", "project_parameters",
"budget_constraints", "time_constraints", "decision_makers",
"beneficiaries", "influencers", "agreements", "open_questions", "next_steps",
]
},
"is_default": False,
},
{
"name": "Внутренняя рабочая встреча",
"description": "Протокол внутренней рабочей встречи команды",
"type": "internal",
"system_prompt": (
"Ты — опытный менеджер проектов. Твоя задача — составить формальный протокол "
"внутренней рабочей встречи на основе транскрипции. "
"Протокол должен быть кратким, структурированным и фокусироваться на решениях и задачах. "
"Не придумывай информацию, которой нет в транскрипции. "
"Если какой-то раздел не удаётся заполнить, укажи 'Не обсуждалось'."
),
"user_prompt": (
"Составь протокол внутренней рабочей встречи по следующей транскрипции. "
"Ответ должен быть в формате JSON с ключами:\n"
"- date_participants_topic: дата, участники и тема\n"
"- discussed_topics: обсуждённые вопросы\n"
"- problems: выявленные проблемы\n"
"- decisions: принятые решения\n"
"- open_questions: открытые вопросы\n"
"- tasks: задачи с ответственными и сроками (массив объектов с полями: task, responsible, deadline)\n"
"- next_steps: следующие шаги\n\n"
"Транскрипция:\n{transcription}"
),
"output_schema": {
"sections": [
"date_participants_topic", "discussed_topics", "problems",
"decisions", "open_questions", "tasks", "next_steps",
]
},
"is_default": False,
},
]