Files
ACORE/apps/help/seed.py
T

195 lines
8.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Стартовый контент справки портала."""
from __future__ import annotations
SEED_CATEGORIES = [
{
'slug': 'account',
'title': 'Профиль и аккаунт',
'description': 'Вход, пароль, 2FA и личные данные',
'icon': 'user',
'sort_order': 10,
},
{
'slug': 'hr',
'title': 'HR и заявки',
'description': 'Отпуск, больничный, подмена и HR-портал',
'icon': 'hr',
'sort_order': 20,
},
{
'slug': 'documents',
'title': 'Документы',
'description': 'Корпоративные файлы и разделы документов',
'icon': 'docs',
'sort_order': 30,
},
{
'slug': 'tasks',
'title': 'Задачи',
'description': 'Работа с задачами и сроками',
'icon': 'tasks',
'sort_order': 40,
},
{
'slug': 'accounting',
'title': 'Операционный учёт',
'description': 'РРО, коммуналка, энергооборудование и время',
'icon': 'book',
'sort_order': 50,
},
{
'slug': 'support',
'title': 'Техническая поддержка',
'description': 'Обращения в IT и типичные проблемы',
'icon': 'support',
'sort_order': 60,
},
]
SEED_ARTICLES = [
{
'category': 'account',
'slug': 'kak-vojti-v-portal',
'title': 'Как войти в корпоративный портал?',
'is_featured': True,
'sort_order': 10,
'body': (
'<p>Откройте адрес портала в браузере и введите логин и пароль сотрудника.</p>'
'<p>Если пароль ещё не задан (например, после найма), используйте одноразовую '
'ссылку из письма HR или обратитесь к администратору.</p>'
'<p>После входа staff-учётки могут попросить настроить двухфакторную аутентификацию (2FA).</p>'
),
},
{
'category': 'account',
'slug': 'smena-parolya-i-2fa',
'title': 'Как сменить пароль и настроить 2FA?',
'is_featured': True,
'sort_order': 20,
'body': (
'<p>Пароль и параметры безопасности управляются в разделе <strong>Настройки</strong> '
'и в профиле сотрудника.</p>'
'<p>Двухфакторная аутентификация: подключите приложение-аутентификатор, сохраните '
'резервные коды в надёжном месте. При потере телефона используйте резервный код '
'или обратитесь в IT.</p>'
),
},
{
'category': 'hr',
'slug': 'kak-podat-zayavku-na-otpusk',
'title': 'Как подать заявку на отпуск?',
'is_featured': True,
'sort_order': 10,
'body': (
'<p>Откройте <strong>HR-портал</strong> → вкладка заявок.</p>'
'<p>Выберите тип «Отпуск», укажите даты и при необходимости комментарий, затем отправьте. '
'Статус заявки отображается в блоке «Мои заявки». Утверждение выполняет HR.</p>'
),
},
{
'category': 'hr',
'slug': 'podmena-na-smene',
'title': 'Как оформить или взять подмену?',
'is_featured': True,
'sort_order': 20,
'body': (
'<p>Создайте заявку типа «Подмена» с датами смены — выбирать коллегу не нужно.</p>'
'<p>Открытый запрос виден другим сотрудникам аптек. Коллега нажимает '
'<strong>«Взять подмену»</strong> и становится заместителем; заявка переходит '
'в утверждённый статус.</p>'
),
},
{
'category': 'documents',
'slug': 'gde-najti-dokumenty',
'title': 'Где найти корпоративные документы?',
'is_featured': True,
'sort_order': 10,
'body': (
'<p>Раздел <strong>Документы</strong> в главном меню открывает доступные вам '
'папки и файлы (интеграция с корпоративным хранилищем).</p>'
'<p>Если нужного раздела нет — проверьте права у HR/IT или оформите заявку '
'в «Поддержка IT».</p>'
),
},
{
'category': 'tasks',
'slug': 'rabota-s-zadachami',
'title': 'Как работать с задачами?',
'is_featured': False,
'sort_order': 10,
'body': (
'<p>В разделе <strong>Задачи</strong> отображаются ваши и командные задачи: '
'статусы, приоритеты, чек-листы.</p>'
'<p>Обновляйте статус по мере выполнения, чтобы постановщик видел прогресс.</p>'
),
},
{
'category': 'accounting',
'slug': 'uchetnye-dannye',
'title': 'Что в разделе «Операционный учёт»?',
'is_featured': False,
'sort_order': 10,
'body': (
'<p>Раздел объединяет вкладки: РРО/ПРРО, коммунальные услуги, энергооборудование, '
'учёт рабочего времени и оплату провайдеров — в зависимости от ваших прав доступа.</p>'
'<p>Если пункта нет в меню, к нужному подразделу не выдано право. Обратитесь '
'к руководителю или администратору групп.</p>'
),
},
{
'category': 'support',
'slug': 'kak-sozdat-it-zayavku',
'title': 'Что делать, если не могу войти или нужна помощь IT?',
'is_featured': True,
'sort_order': 10,
'body': (
'<p>При технических сбоях откройте <strong>Поддержка IT</strong> и создайте заявку: '
'тема, категория, описание.</p>'
'<p>Если войти в портал невозможно — свяжитесь с IT по телефону или через коллегу. '
'Справка и предложения в базу знаний доступны после успешного входа.</p>'
),
},
]
def seed_help_content(apps, schema_editor):
HelpCategory = apps.get_model('help', 'HelpCategory')
HelpArticle = apps.get_model('help', 'HelpArticle')
cats = {}
for row in SEED_CATEGORIES:
obj, _ = HelpCategory.objects.update_or_create(
slug=row['slug'],
defaults={
'title': row['title'],
'description': row['description'],
'icon': row['icon'],
'sort_order': row['sort_order'],
'is_active': True,
},
)
cats[row['slug']] = obj
for row in SEED_ARTICLES:
category = cats[row['category']]
HelpArticle.objects.update_or_create(
slug=row['slug'],
defaults={
'category': category,
'title': row['title'],
'body': row['body'],
'is_published': True,
'is_featured': row['is_featured'],
'sort_order': row['sort_order'],
},
)
def unseed_help_content(apps, schema_editor):
HelpCategory = apps.get_model('help', 'HelpCategory')
HelpArticle = apps.get_model('help', 'HelpArticle')
slugs = [a['slug'] for a in SEED_ARTICLES]
HelpArticle.objects.filter(slug__in=slugs).delete()
HelpCategory.objects.filter(slug__in=[c['slug'] for c in SEED_CATEGORIES]).delete()