# Описание функциональных характеристик программного обеспечения «Диспетчер заявок»

Документ подготовлен в объёме, предусмотренном требованиями к сведениям,
представляемым для включения программного обеспечения в единый реестр российских
программ для электронных вычислительных машин и баз данных.

## 1. Общие сведения

| Параметр | Значение |
|---|---|
| Наименование ПО | «Диспетчер заявок» |
| Версия | 1.0.0 |
| Тип ПО | Прикладное программное обеспечение, веб-приложение |
| Класс ПО (предлагаемый) | Системы управления процессами организации; системы технической поддержки пользователей (Service Desk) |
| Правообладатель | ООО «КорЛаб», ИНН 1655468497 |
| Язык интерфейса | русский |
| Способ распространения | поставка дистрибутива для установки на технические средства заказчика |

## 2. Назначение

ПО предназначено для автоматизации процесса приёма и обработки обращений
(заявок) пользователей в организации: регистрации обращений, распределения их
между исполнителями, контроля соблюдения сроков обработки, ведения переписки с
заявителем, фиксации всех действий в журнале и формирования отчётности.

Типовые области применения: служба технической поддержки, служба эксплуатации
зданий и оборудования, административно-хозяйственные подразделения, обработка
внутренних заявок сотрудников.

## 3. Функциональные характеристики

### 3.1. Управление доступом
- Аутентификация пользователя по адресу электронной почты и паролю.
- Пароли хранятся в виде необратимого хеша (алгоритм PBKDF2 на основе SHA-256,
  240 000 итераций, индивидуальная соль для каждой учётной записи).
- Выдача токена доступа ограниченного срока действия (по умолчанию 12 часов),
  подписанного по алгоритму HMAC-SHA256.
- Разграничение прав по трём ролям:
  - **администратор** — полный доступ, управление учётными записями и
    справочником статусов;
  - **сотрудник поддержки** — обработка всех заявок, доступ к журналу и отчётам;
  - **заявитель** — работа только с собственными заявками.
- Блокировка учётной записи администратором с немедленным прекращением доступа.

### 3.2. Регистрация и ведение заявок
- Регистрация заявки с указанием темы, описания, категории и приоритета.
- Автоматическое присвоение регистрационного номера и даты регистрации.
- Автоматический расчёт контрольного срока обработки (SLA) в зависимости от
  приоритета: критический — 4 часа, высокий — 8 часов, обычный — 24 часа,
  низкий — 72 часа.
- Назначение исполнителя из числа сотрудников поддержки.
- Изменение приоритета с пересчётом контрольного срока.

### 3.3. Справочник статусов и жизненный цикл заявки
Жизненный цикл заявки определяется справочником статусов, который ведёт
администратор организации; изменение исходного кода при этом не требуется.

- Состав статусов настраивается: для каждого статуса задаются код, отображаемое
  наименование, порядок вывода и признак активности.
- Допустимые переходы между статусами задаются в виде графа: недопустимый
  переход отклоняется с сообщением об ошибке.
- Признаки статуса определяют поведение системы: «статус по умолчанию»
  присваивается вновь зарегистрированной заявке; «фиксирует срок решения»
  останавливает отсчёт контрольного срока и проставляет дату закрытия;
  «заявка завершена» запрещает добавление сообщений и вложений.
- При первичной установке справочник наполняется типовым набором статусов
  («новая», «в работе», «ожидание», «решена», «закрыта») и переходами между
  ними; такие статусы помечаются как системные, защищены от удаления и от
  изменения кода.
- Статус, в котором находятся зарегистрированные заявки, не удаляется и не
  отключается; вместо удаления предусмотрено отключение статуса, при котором
  ранее зарегистрированные заявки сохраняют своё значение.
- Отбор заявок, сводные показатели и выгрузка используют состав статусов из
  справочника.

### 3.4. Переписка по заявке
- Обмен сообщениями между заявителем и сотрудником поддержки.
- Внутренние (служебные) комментарии, недоступные для просмотра заявителю.
- Запрет на добавление сообщений в закрытую заявку.

### 3.5. Вложения к заявке
- Прикрепление файлов к заявке: фотографии, снимки экрана, акты, документы.
- Предельный размер одного файла задаётся параметром настройки (по умолчанию
  10 МБ); превышение отклоняется с кодом 413.
- Файлы размещаются в каталоге на сервере организации; внешние и облачные
  хранилища не используются.
- Имя файла, полученное от пользователя, для построения пути на диске не
  применяется: файл сохраняется под сгенерированным именем, что исключает выход
  за пределы каталога хранения.
- Файл выдаётся исключительно как вложение и не исполняется браузером.
- Доступ к вложению имеют только лица, имеющие доступ к соответствующей заявке.
- Прикрепление файлов к закрытой заявке не допускается.

### 3.6. База знаний
- Ведение статей: типовые решения, инструкции, регламенты.
- Разделение статей по категориям, полнотекстовый поиск по заголовку и тексту.
- Публикация и снятие с публикации: неопубликованные статьи (черновики) видны
  только сотрудникам поддержки, заявителю не отображаются.
- Создание, изменение и удаление статей доступно сотрудникам поддержки и
  администратору.

### 3.7. Журнал действий
Система ведёт неизменяемый журнал событий по каждой заявке: регистрация, смена
статуса, назначение исполнителя, изменение приоритета, добавление сообщения.
Для каждого события фиксируются автор и дата. Журнал доступен сотрудникам
поддержки и администратору.

### 3.8. Поиск и отбор
Отбор заявок по статусу, приоритету, исполнителю, признаку нарушения срока, а
также полнотекстовый поиск по теме и описанию. Постраничный вывод результатов.

### 3.9. Отчётность
- Сводные показатели: общее количество заявок, распределение по статусам и
  приоритетам, количество заявок с нарушением срока, среднее время решения.
- Выгрузка реестра заявок в формате CSV (кодировка UTF-8, разделитель «;»),
  совместимом с отечественными офисными пакетами.

### 3.10. Программный интерфейс
Все функции доступны через документированный интерфейс REST API. Описание
интерфейса формируется автоматически в формате OpenAPI и доступно по адресу
`/api/openapi.json`, интерактивная документация — по адресу `/api/docs`.

## 4. Технические характеристики

| Параметр | Значение |
|---|---|
| Архитектура | клиент-серверная, веб-приложение |
| Язык программирования | Python 3.11 |
| Серверная платформа | ASGI-сервер uvicorn, каркас FastAPI |
| СУБД | PostgreSQL 13 и выше; для ознакомительной установки — SQLite |
| Клиентская часть | HTML5, CSS, JavaScript (ECMAScript 2017) без внешних библиотек |
| Операционная система сервера | Astra Linux Special Edition, ALT Linux, РЕД ОС, Ubuntu 22.04 LTS и иные ОС семейства Linux |
| Способ развёртывания | нативная установка либо контейнер (Docker/Podman) |

## 5. Отсутствие зависимости от иностранных компонентов

ПО не использует программные компоненты, лицензируемые правообладателями из
иностранных государств на условиях, ограничивающих его использование на
территории Российской Федерации. Применяемые компоненты (Python, FastAPI,
SQLAlchemy, uvicorn, PostgreSQL) распространяются на условиях свободных лицензий
(PSF, MIT, BSD, PostgreSQL License), не содержащих территориальных ограничений и
не требующих отчислений правообладателям.

ПО не требует подключения к сети «Интернет» и к каким-либо внешним сервисам:
клиентская часть не загружает ресурсы со сторонних узлов, все компоненты
интерфейса поставляются в составе дистрибутива. Функционирование в закрытом
контуре обеспечивается в полном объёме.

## 6. Ограничения

- Одновременная работа: до 200 активных пользователей на один экземпляр
  приложения при рекомендуемой конфигурации технических средств.
- Интеграция с внешними системами выполняется через REST API.

## 7. Требования к техническим средствам

Минимальная конфигурация сервера: 2 виртуальных процессора, 4 ГБ оперативной
памяти, 20 ГБ дискового пространства.
Рекомендуемая конфигурация: 4 виртуальных процессора, 8 ГБ оперативной памяти,
50 ГБ дискового пространства.
Рабочее место пользователя: любой современный веб-браузер (Яндекс Браузер,
«Атом», Chromium, Firefox) версии не ниже выпуска 2022 года.

Порядок установки и эксплуатации приведён в документе
[«Инструкция по установке и эксплуатации»](02-installation.md).
