862e6b7b25
Co-authored-by: Cursor <cursoragent@cursor.com>
397 lines
21 KiB
Python
397 lines
21 KiB
Python
QUICK_PROMPTS = [
|
||
"Проект в ЛИМС не виден",
|
||
"VPN не работает",
|
||
"Восстановить файл",
|
||
"Ошибка в Meridium",
|
||
]
|
||
|
||
IT_SYSTEMS = [
|
||
"Meridium 4",
|
||
"ЕСУИД",
|
||
"1С",
|
||
"StarLims",
|
||
"ЛИМС",
|
||
"ВКУС",
|
||
]
|
||
|
||
GLOSSARY_ANSWERS = {
|
||
"есуид": (
|
||
"**ЕСУИД** (Единая система управления идентификационными данными) — "
|
||
"корпоративная система аутентификации. Через неё вы входите в Meridium, 1С "
|
||
"и другие корпоративные приложения. Портал: https://idmoam.sibur.local/identity"
|
||
),
|
||
"meridium": (
|
||
"**Meridium 4** — система управления активами и надёжностью оборудования (APM). "
|
||
"Основной URL: https://s001as-apmapp.sibur.local/Meridium/. "
|
||
"Отчёты: https://s001as-apmrep.sibur.local/ReportServer"
|
||
),
|
||
"вкус": (
|
||
"**ВКУС** (Витрина корпоративных услуг СИБУРа) — единый сервисный вход "
|
||
"для сотрудников: помощь по ИТ-вопросам, создание обращений и отслеживание их статуса."
|
||
),
|
||
"лимс": (
|
||
"**ЛИМС** (Laboratory Information Management System) — лабораторная "
|
||
"информационная система для управления образцами и результатами анализов."
|
||
),
|
||
"starlims": (
|
||
"**StarLims** — лабораторная информационная система, используемая на "
|
||
"предприятиях СИБУРа для учёта лабораторных исследований."
|
||
),
|
||
}
|
||
|
||
KNOWLEDGE_ENTRIES = [
|
||
{
|
||
"patterns": [
|
||
r"meridium.*(вход|войти|логин|парол|авториз)",
|
||
r"не могу.*meridium",
|
||
r"meridium.*не открыв",
|
||
],
|
||
"system": "Meridium 4",
|
||
"confidence": 85,
|
||
"package": {
|
||
"recommendation": (
|
||
"Для входа в Meridium 4 используется единая учётная запись ЕСУИД. "
|
||
"Если основная система не открывается, сначала проверьте доступ к порталу ЕСУИД."
|
||
),
|
||
"steps": [
|
||
"Откройте портал ЕСУИД: https://idmoam.sibur.local/identity",
|
||
"Войдите с корпоративными учётными данными",
|
||
"Перейдите в Meridium 4: https://s001as-apmapp.sibur.local/Meridium/",
|
||
"При ошибке доступа — очистите кэш браузера (Ctrl+Shift+Delete) и повторите вход",
|
||
"Если пароль не подходит — запросите сброс через ЕСУИД или создайте обращение",
|
||
],
|
||
"sources": [
|
||
{"title": "Инструкция по входу в Meridium 4", "url": "https://vkus.sibur.local/"},
|
||
{"title": "URL систем Meridium", "url": "https://s001as-apmapp.sibur.local/Meridium/"},
|
||
],
|
||
"colleague_cases": [
|
||
{
|
||
"summary": "Ошибка «доступ запрещён» после смены пароля",
|
||
"outcome": "Помог выход из всех сессий ЕСУИД и повторный вход через режим инкогнито",
|
||
},
|
||
{
|
||
"summary": "Meridium не загружается в Chrome",
|
||
"outcome": "Решилось добавлением сайта в доверенные зоны и обновлением браузера",
|
||
},
|
||
],
|
||
"ticket_draft": {
|
||
"title": "Проблема с входом в Meridium 4",
|
||
"description": "Не удаётся войти в систему Meridium 4. Проверка ЕСУИД и очистка кэша не помогли.",
|
||
"system": "Meridium 4",
|
||
"priority": "Высокий",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
"patterns": [
|
||
r"есуид.*(парол|сброс|разблок)",
|
||
r"сброс.*парол",
|
||
r"забыл.*парол",
|
||
r"разблокир.*учётн",
|
||
],
|
||
"system": "ЕСУИД",
|
||
"confidence": 90,
|
||
"package": {
|
||
"recommendation": (
|
||
"Пароль ЕСУИД можно сбросить самостоятельно через портал самообслуживания "
|
||
"или обратившись в ИТ-поддержку."
|
||
),
|
||
"steps": [
|
||
"Откройте портал ЕСУИД: https://idmoam.sibur.local/identity",
|
||
"Нажмите «Забыли пароль?» на странице входа",
|
||
"Введите корпоративный логин (формат: ivanov.as)",
|
||
"Следуйте инструкциям на экране — ссылка придёт на корпоративную почту",
|
||
"При блокировке учётной записи — создайте обращение на разблокировку",
|
||
],
|
||
"sources": [
|
||
{"title": "ЕСУИД — единая система идентификации", "url": "https://idmoam.sibur.local/identity"},
|
||
{"title": "Инструкция по сбросу пароля", "url": "https://vkus.sibur.local/"},
|
||
],
|
||
"colleague_cases": [
|
||
{
|
||
"summary": "Ссылка для сброса не приходит",
|
||
"outcome": "Проверили папку «Спам» и убедились, что почтовый ящик не переполнен",
|
||
},
|
||
],
|
||
"ticket_draft": {
|
||
"title": "Сброс / разблокировка пароля ЕСУИД",
|
||
"description": "Требуется сброс или разблокировка учётной записи ЕСУИД. Самостоятельный сброс не удался.",
|
||
"system": "ЕСУИД",
|
||
"priority": "Средний",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
"patterns": [
|
||
r"meridium.*(отчёт|отчет|report)",
|
||
r"отчёт.*meridium",
|
||
r"apmrep",
|
||
r"reportserver",
|
||
],
|
||
"system": "Meridium 4",
|
||
"confidence": 82,
|
||
"package": {
|
||
"recommendation": (
|
||
"Отчёты Meridium 4 формируются на отдельном сервере отчётов. "
|
||
"Ошибки часто связаны с правами доступа или недоступностью сервера."
|
||
),
|
||
"steps": [
|
||
"Проверьте доступность сервера отчётов: https://s001as-apmrep.sibur.local/ReportServer",
|
||
"Убедитесь, что основной Meridium 4 работает: https://s001as-apmapp.sibur.local/Meridium/",
|
||
"Откройте отчёт повторно — дождитесь полной загрузки",
|
||
"При ошибке — откройте консоль браузера (F12) и сохраните текст ошибки",
|
||
"Если проблема сохраняется — приложите скриншот к обращению",
|
||
],
|
||
"sources": [
|
||
{"title": "Сервер отчётов Meridium 4", "url": "https://s001as-apmrep.sibur.local/ReportServer"},
|
||
{"title": "Руководство по отчётам Meridium", "url": "https://vkus.sibur.local/"},
|
||
],
|
||
"colleague_cases": [
|
||
{
|
||
"summary": "Ошибка 403 при открытии отчёта",
|
||
"outcome": "Потребовалось обновление роли в группе доступа (ГД) — оформили заявку на доступ",
|
||
},
|
||
],
|
||
"warning": (
|
||
"В одном из похожих случаев коллеги решили проблему переустановкой браузера, "
|
||
"хотя официальная инструкция рекомендует сначала проверить права доступа. "
|
||
"Рекомендуем следовать регламенту."
|
||
),
|
||
"ticket_draft": {
|
||
"title": "Ошибка при формировании отчёта Meridium 4",
|
||
"description": "При открытии отчёта на сервере s001as-apmrep возникает ошибка. Основной модуль Meridium работает.",
|
||
"system": "Meridium 4",
|
||
"priority": "Высокий",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
"patterns": [
|
||
r"1[сc].*(медлен|тормоз|долго|загруз)",
|
||
r"медленн.*1[сc]",
|
||
r"1[сc].*не открыв",
|
||
],
|
||
"system": "1С",
|
||
"confidence": 78,
|
||
"package": {
|
||
"recommendation": (
|
||
"Медленная работа 1С может быть связана с нагрузкой на сервер, "
|
||
"сетевым подключением или локальным кэшем клиента."
|
||
),
|
||
"steps": [
|
||
"Перезапустите клиент 1С полностью (закройте все окна)",
|
||
"Проверьте подключение к корпоративной сети (VPN, если работаете удалённо)",
|
||
"Очистите кэш 1С: удалите папку %APPDATA%\\1C\\1Cv8\\",
|
||
"Попробуйте запустить 1С в другое время — утром нагрузка выше",
|
||
"Зафиксируйте время возникновения проблемы для обращения в поддержку",
|
||
],
|
||
"sources": [
|
||
{"title": "Рекомендации по работе с 1С", "url": "https://vkus.sibur.local/"},
|
||
],
|
||
"colleague_cases": [
|
||
{
|
||
"summary": "1С зависает при открытии базы утром",
|
||
"outcome": "Проблема была на стороне сервера — решилась после перезапуска сеансов администратором",
|
||
},
|
||
],
|
||
"ticket_draft": {
|
||
"title": "Медленная работа 1С",
|
||
"description": "Клиент 1С загружается более 5 минут. Перезапуск и очистка кэша не помогли.",
|
||
"system": "1С",
|
||
"priority": "Средний",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
"patterns": [
|
||
r"лимс.*(проект|не виден|не отображ)",
|
||
r"проект.*лимс",
|
||
r"starlims.*(проект|не виден)",
|
||
],
|
||
"system": "ЛИМС",
|
||
"confidence": 80,
|
||
"package": {
|
||
"recommendation": (
|
||
"Если проект не отображается в ЛИМС, чаще всего причина в правах доступа "
|
||
"или привязке проекта к вашему подразделению."
|
||
),
|
||
"steps": [
|
||
"Обновите страницу и проверьте фильтры в списке проектов",
|
||
"Убедитесь, что выбрано правильное предприятие / площадка",
|
||
"Проверьте, что у вас есть роль для просмотра проектов в ЛИМС",
|
||
"Уточните у коллег, виден ли проект у других пользователей",
|
||
"Если проект новый — возможно, он ещё не синхронизирован, подождите до 24 часов",
|
||
],
|
||
"sources": [
|
||
{"title": "Инструкция по работе с проектами ЛИМС", "url": "https://vkus.sibur.local/"},
|
||
],
|
||
"colleague_cases": [
|
||
{
|
||
"summary": "Проект не появился после создания",
|
||
"outcome": "Потребовалось обновление роли доступа через заявку в ИТ-поддержку",
|
||
},
|
||
],
|
||
"ticket_draft": {
|
||
"title": "Проект в ЛИМС не виден",
|
||
"description": "Проект не отображается в списке ЛИМС. Фильтры и обновление страницы не помогли.",
|
||
"system": "ЛИМС",
|
||
"priority": "Средний",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
"patterns": [
|
||
r"vpn.*(не работ|не подключ|ошибк|обрыв)",
|
||
r"не работает.*vpn",
|
||
r"впн",
|
||
],
|
||
"system": "Общее",
|
||
"confidence": 75,
|
||
"package": {
|
||
"recommendation": (
|
||
"Проблемы с VPN обычно связаны с сетевым подключением, устаревшим клиентом "
|
||
"или истёкшим сертификатом."
|
||
),
|
||
"steps": [
|
||
"Проверьте подключение к интернету",
|
||
"Перезапустите VPN-клиент и повторите подключение",
|
||
"Перезагрузите компьютер",
|
||
"Убедитесь, что используете корпоративный VPN-клиент последней версии",
|
||
"Если ошибка сохраняется — сделайте скриншот сообщения об ошибке",
|
||
],
|
||
"sources": [
|
||
{"title": "Инструкция по VPN", "url": "https://vkus.sibur.local/"},
|
||
],
|
||
"ticket_draft": {
|
||
"title": "VPN не работает",
|
||
"description": "Не удаётся подключиться к корпоративному VPN. Перезапуск клиента не помог.",
|
||
"system": "Общее",
|
||
"priority": "Высокий",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
"patterns": [
|
||
r"восстанов.*файл",
|
||
r"удалил.*файл",
|
||
r"потерял.*файл",
|
||
r"вернуть.*файл",
|
||
],
|
||
"system": "Общее",
|
||
"confidence": 72,
|
||
"package": {
|
||
"recommendation": (
|
||
"Восстановление файлов возможно из корзины, резервных копий на сетевом диске "
|
||
"или через обращение в ИТ-поддержку."
|
||
),
|
||
"steps": [
|
||
"Проверьте корзину на рабочем столе",
|
||
"Если файл был на сетевом диске — проверьте папку «Предыдущие версии» (ПКМ → Свойства)",
|
||
"Вспомните точное имя файла и расположение",
|
||
"Не сохраняйте новые файлы на диск, где был удалён файл",
|
||
"Оформите обращение с указанием пути и времени удаления",
|
||
],
|
||
"sources": [
|
||
{"title": "Политика резервного копирования", "url": "https://vkus.sibur.local/"},
|
||
],
|
||
"ticket_draft": {
|
||
"title": "Восстановление удалённого файла",
|
||
"description": "Требуется восстановление удалённого файла. Корзина и предыдущие версии не помогли.",
|
||
"system": "Общее",
|
||
"priority": "Средний",
|
||
},
|
||
},
|
||
},
|
||
{
|
||
"patterns": [
|
||
r"ошибк.*meridium",
|
||
r"ошибк.*меридиум",
|
||
r"meridium.*ошибк",
|
||
],
|
||
"system": "Meridium 4",
|
||
"confidence": 80,
|
||
"package": {
|
||
"recommendation": (
|
||
"Ошибки в Meridium 4 могут быть связаны с доступом, сессией ЕСУИД "
|
||
"или недоступностью сервера приложения."
|
||
),
|
||
"steps": [
|
||
"Зафиксируйте точный текст ошибки (скриншот)",
|
||
"Выйдите из Meridium и войдите заново через ЕСУИД",
|
||
"Проверьте доступность: https://s001as-apmapp.sibur.local/Meridium/",
|
||
"Очистите кэш браузера и повторите попытку",
|
||
"Если ошибка в отчётах — проверьте сервер отчётов отдельно",
|
||
],
|
||
"sources": [
|
||
{"title": "Meridium 4 — основная система", "url": "https://s001as-apmapp.sibur.local/Meridium/"},
|
||
{"title": "Руководство пользователя Meridium", "url": "https://vkus.sibur.local/"},
|
||
],
|
||
"ticket_draft": {
|
||
"title": "Ошибка в Meridium 4",
|
||
"description": "При работе в Meridium 4 возникает ошибка. Повторный вход не помог.",
|
||
"system": "Meridium 4",
|
||
"priority": "Высокий",
|
||
},
|
||
},
|
||
},
|
||
]
|
||
|
||
DEFAULT_PROFILE = {
|
||
"first_name": "Алексей",
|
||
"patronymic": "Петрович",
|
||
"last_name": "Смирнов",
|
||
"position": "Инженер по надёжности",
|
||
"department": "АО «Сибур-Нефтехим»",
|
||
}
|
||
|
||
|
||
def get_colleague_cases_for_system(system: str | None, limit: int = 3) -> list[dict[str, str]]:
|
||
"""Опыт коллег по системе — для блока self-service при ответах из RAG."""
|
||
if not system:
|
||
return []
|
||
|
||
seen: set[str] = set()
|
||
cases: list[dict[str, str]] = []
|
||
|
||
for entry in KNOWLEDGE_ENTRIES:
|
||
if entry.get("system") != system:
|
||
continue
|
||
for case in entry.get("package", {}).get("colleague_cases") or []:
|
||
key = case.get("summary", "")
|
||
if not key or key in seen:
|
||
continue
|
||
seen.add(key)
|
||
cases.append(case)
|
||
if len(cases) >= limit:
|
||
return cases
|
||
|
||
# Дополнительные кейсы для лабораторных систем
|
||
extra_by_system: dict[str, list[dict[str, str]]] = {
|
||
"ЛИМС": [
|
||
{
|
||
"summary": "Не удаётся провести переиспытание образца",
|
||
"outcome": "Потребовалось проверить статус образца и роль «Проведение переиспытаний»",
|
||
},
|
||
],
|
||
"StarLims": [
|
||
{
|
||
"summary": "Переиспытание недоступно в карточке образца",
|
||
"outcome": "Образец был в статусе «Завершён» — сначала выполнили отмену завершения",
|
||
},
|
||
{
|
||
"summary": "Ошибка при создании переиспытания",
|
||
"outcome": "Помогла очистка кэша браузера и повторный вход (не по регламенту)",
|
||
},
|
||
],
|
||
}
|
||
|
||
for case in extra_by_system.get(system, []):
|
||
key = case.get("summary", "")
|
||
if key and key not in seen:
|
||
seen.add(key)
|
||
cases.append(case)
|
||
if len(cases) >= limit:
|
||
break
|
||
|
||
return cases[:limit]
|