Initial commit: VKUS vitrina MVP (frontend + backend).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,396 @@
|
||||
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]
|
||||
@@ -0,0 +1,179 @@
|
||||
from app.models import Appeal, AppealComment, ServiceItem
|
||||
|
||||
MOCK_APPEALS: list[dict] = [
|
||||
{
|
||||
"id": "1",
|
||||
"number": "INC-2026-004521",
|
||||
"title": "Не открывается модуль отчётов Meridium 4",
|
||||
"system": "Meridium 4",
|
||||
"status": "in_progress",
|
||||
"status_label": "В работе у поддержки",
|
||||
"next_step": "Ожидайте ответа специалиста — запрошены логи с сервера отчётов",
|
||||
"priority": "high",
|
||||
"priority_label": "Высокий",
|
||||
"created_at": "2026-06-27T09:15:00",
|
||||
"updated_at": "2026-06-28T14:30:00",
|
||||
"assignee": "Иванов А.С.",
|
||||
"description": (
|
||||
"При попытке открыть отчёт «Статус оборудования» появляется ошибка доступа. "
|
||||
"Основной модуль Meridium работает."
|
||||
),
|
||||
"comments": [
|
||||
{
|
||||
"id": "c1",
|
||||
"author": "Иванов А.С.",
|
||||
"text": (
|
||||
"Добрый день! Проверьте, пожалуйста, доступ к серверу отчётов "
|
||||
"s001as-apmrep.sibur.local. Запросите логи из браузера (F12 → Console)."
|
||||
),
|
||||
"date": "2026-06-28T11:00:00",
|
||||
"is_support": True,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"number": "INC-2026-004398",
|
||||
"title": "Сброс пароля ЕСУИД",
|
||||
"system": "ЕСУИД",
|
||||
"status": "resolved",
|
||||
"status_label": "Решено",
|
||||
"next_step": "Проверьте вход в систему. Если проблема повторится — переоткройте обращение",
|
||||
"priority": "medium",
|
||||
"priority_label": "Средний",
|
||||
"created_at": "2026-06-20T16:45:00",
|
||||
"updated_at": "2026-06-21T10:20:00",
|
||||
"assignee": "Петрова М.В.",
|
||||
"description": "Не могу войти в Meridium — забыл пароль ЕСУИД.",
|
||||
"resolution": (
|
||||
"Пароль сброшен. Новый временный пароль отправлен на корпоративную почту. "
|
||||
"При первом входе потребуется сменить пароль."
|
||||
),
|
||||
"comments": [
|
||||
{
|
||||
"id": "c2",
|
||||
"author": "Петрова М.В.",
|
||||
"text": "Пароль сброшен, инструкция отправлена на почту.",
|
||||
"date": "2026-06-21T10:20:00",
|
||||
"is_support": True,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"number": "INC-2026-004612",
|
||||
"title": "Медленная загрузка 1С:Управление предприятием",
|
||||
"system": "1С",
|
||||
"status": "waiting",
|
||||
"status_label": "Ожидает вашего ответа",
|
||||
"next_step": "Уточните, в какое время проблема проявляется чаще всего",
|
||||
"priority": "medium",
|
||||
"priority_label": "Средний",
|
||||
"created_at": "2026-06-28T08:00:00",
|
||||
"updated_at": "2026-06-29T09:00:00",
|
||||
"assignee": "Сидоров К.П.",
|
||||
"description": "1С открывается более 5 минут, особенно утром.",
|
||||
"comments": [
|
||||
{
|
||||
"id": "c3",
|
||||
"author": "Сидоров К.П.",
|
||||
"text": (
|
||||
"Уточните, пожалуйста: проблема возникает только утром или в течение всего дня? "
|
||||
"Сколько пользователей затронуто?"
|
||||
),
|
||||
"date": "2026-06-29T09:00:00",
|
||||
"is_support": True,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"number": "INC-2026-004701",
|
||||
"title": "Запрос доступа к StarLims",
|
||||
"system": "StarLims",
|
||||
"status": "new",
|
||||
"status_label": "Новое обращение",
|
||||
"next_step": "Обращение в очереди на назначение исполнителя",
|
||||
"priority": "low",
|
||||
"priority_label": "Низкий",
|
||||
"created_at": "2026-06-29T11:30:00",
|
||||
"updated_at": "2026-06-29T11:30:00",
|
||||
"description": "Необходим доступ к модулю лабораторных исследований для нового сотрудника.",
|
||||
"comments": [],
|
||||
},
|
||||
]
|
||||
|
||||
MOCK_SERVICES: list[dict] = [
|
||||
{
|
||||
"id": "s1",
|
||||
"title": "Сброс пароля ЕСУИД",
|
||||
"category": "Доступ и учётные записи",
|
||||
"system": "ЕСУИД",
|
||||
"description": "Сброс или разблокировка учётной записи в единой системе идентификации",
|
||||
"sla": "4 часа",
|
||||
},
|
||||
{
|
||||
"id": "s2",
|
||||
"title": "Предоставление доступа к Meridium 4",
|
||||
"category": "Доступ и учётные записи",
|
||||
"system": "Meridium 4",
|
||||
"description": "Запрос роли и прав доступа к системе управления активами",
|
||||
"sla": "2 рабочих дня",
|
||||
},
|
||||
{
|
||||
"id": "s3",
|
||||
"title": "Ошибка при формировании отчёта",
|
||||
"category": "Инцидент",
|
||||
"system": "Meridium 4",
|
||||
"description": "Сообщение об ошибке при работе с отчётами на сервере отчётов",
|
||||
"sla": "8 часов",
|
||||
},
|
||||
{
|
||||
"id": "s4",
|
||||
"title": "Проблема с входом в 1С",
|
||||
"category": "Инцидент",
|
||||
"system": "1С",
|
||||
"description": "Невозможность авторизации или ошибки при запуске клиента 1С",
|
||||
"sla": "4 часа",
|
||||
},
|
||||
{
|
||||
"id": "s5",
|
||||
"title": "Запрос доступа к StarLims",
|
||||
"category": "Доступ и учётные записи",
|
||||
"system": "StarLims",
|
||||
"description": "Предоставление доступа к лабораторной информационной системе",
|
||||
"sla": "3 рабочих дня",
|
||||
},
|
||||
{
|
||||
"id": "s6",
|
||||
"title": "Медленная работа системы",
|
||||
"category": "Инцидент",
|
||||
"system": "Общее",
|
||||
"description": "Замедление работы корпоративных приложений",
|
||||
"sla": "8 часов",
|
||||
},
|
||||
{
|
||||
"id": "s7",
|
||||
"title": "Установка ПО на рабочее место",
|
||||
"category": "Запрос на обслуживание",
|
||||
"system": "ПРМ",
|
||||
"description": "Установка разрешённого программного обеспечения на АРМ",
|
||||
"sla": "2 рабочих дня",
|
||||
},
|
||||
{
|
||||
"id": "s8",
|
||||
"title": "Консультация по ЛИМС",
|
||||
"category": "Консультация",
|
||||
"system": "ЛИМС",
|
||||
"description": "Вопросы по работе с лабораторной информационной системой",
|
||||
"sla": "1 рабочий день",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def seed_appeals() -> list[Appeal]:
|
||||
return [Appeal.model_validate(item) for item in MOCK_APPEALS]
|
||||
|
||||
|
||||
def get_services() -> list[ServiceItem]:
|
||||
return [ServiceItem.model_validate(item) for item in MOCK_SERVICES]
|
||||
Reference in New Issue
Block a user