Files
SSAUGenerator/content/03-design.md
2026-10-03 23:45:19 +04:00

127 lines
7.8 KiB
Markdown
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.
# ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ
В разделе описаны архитектура, модель данных и пользовательские сценарии разрабатываемой
информационной системы.
## Архитектура системы
Система построена по трёхуровневой архитектуре. Взаимодействие компонентов показано на
рисунке @fig:data-flow.
::: figure "Схема информационных потоков" id=data-flow file=images/data-flow.png
а) направление передачи данных;
б) компоненты системы.
:::
Состав программных модулей приведён в таблице @tbl:modules.
::: table "Состав программных модулей" id=modules
| Модуль | Назначение | Технология |
|---|---|---|
| Веб-интерфейс | Отображение рабочих экранов оператора | React |
| API-шлюз | Обработка HTTP-запросов клиентов | Node.js |
| Модуль заявок | Жизненный цикл обращения | Node.js |
| Модуль уведомлений | Рассылка оповещений исполнителям | Node.js |
| Модуль отчётности | Формирование отчётов за период | Node.js |
| Служба аутентификации | Проверка учётных данных | JWT |
| Хранилище данных | Хранение заявок и справочников | PostgreSQL |
| Кэш | Ускорение чтения справочников | Redis |
| Очередь сообщений | Асинхронная обработка событий | RabbitMQ |
| Сборщик журналов | Централизованное логирование | ELK |
| Планировщик | Периодические задачи и отчёты | Cron |
| Модуль интеграции | Обмен данными с внешними системами | REST |
:::
## Модель данных
Основные сущности предметной области и их атрибуты приведены в таблице @tbl:entities.
::: table "Основные сущности и атрибуты" id=entities
| Сущность | Атрибут | Тип | Обяз. | Описание |
|---|---|---|---|---|
| Заявка | id | Целое | Да | Уникальный идентификатор |
| Заявка | subject | Строка | Да | Тема обращения |
| Заявка | description | Текст | Да | Описание проблемы |
| Заявка | category_id | Целое | Да | Ссылка на категорию |
| Заявка | priority_id | Целое | Да | Ссылка на приоритет |
| Заявка | assignee_id | Целое | Нет | Ссылка на исполнителя |
| Заявка | created_at | Дата/время | Да | Момент регистрации |
| Заявка | closed_at | Дата/время | Нет | Момент закрытия |
| Категория | id | Целое | Да | Уникальный идентификатор |
| Категория | name | Строка | Да | Наименование категории |
| Приоритет | id | Целое | Да | Уникальный идентификатор |
| Приоритет | name | Строка | Да | Наименование приоритета |
| Приоритет | reaction_min | Целое | Да | Норматив реакции, мин |
| Пользователь | id | Целое | Да | Уникальный идентификатор |
| Пользователь | full_name | Строка | Да | Фамилия, имя, отчество |
:::
Связи между сущностями описаны в таблице @tbl:relations.
::: table "Связи между сущностями" id=relations
| Связь | Тип | Описание |
|---|---|---|
| Заявка — Категория | Многие к одному | Заявка относится к одной категории |
| Заявка — Приоритет | Многие к одному | Заявка имеет один приоритет |
| Заявка — Пользователь | Многие к одному | Заявка назначена одному исполнителю |
| Заявка — Комментарий | Один ко многим | Заявка содержит комментарии |
| Пользователь — Роль | Многие ко многим | Пользователь может иметь роли |
| Категория — Подкатегория | Один ко многим | Категория содержит подкатегории |
:::
## Пользовательские сценарии
Интерфейс списка заявок приведён на рисунке @fig:interface.
::: figure "Интерфейс списка заявок" id=interface file=images/interface.png
а) область навигации;
б) табличное представление данных.
:::
Зависимость трудозатрат от выбранной стратегии обработки показана на рисунке @fig:chart.
::: figure "Зависимость трудозатрат от стратегии обработки" id=chart file=images/chart.png
Оценка получена по результатам пилотной эксплуатации.
:::
Экономия времени за месяц вычисляется по формуле @eq:gain.
::: formula id=gain
G = (T_base - T_new)*N
:::
::: where
G — экономия времени за месяц, мин;
N — число обращений в месяц.
:::
К системе предъявляются следующие требования:
- функциональные:
1. регистрация и классификация заявок;
2. назначение исполнителя и контроль сроков;
3. формирование отчётов за период.
- нефункциональные:
1. время отклика не более двух секунд;
2. одновременная работа не менее ста пользователей.
## Особенности реализации
При проектировании учтены ограничения, перечисленные в таблице @tbl:constraints.
::: table "Ограничения и меры" id=constraints
| Ограничение | Влияние | Мера |
|---|---|---|
| Ограниченный бюджет | Сужение выбора технологий | Применение открытых библиотек |
| Сжатые сроки | Риск неполной реализации | Итеративная разработка |
| Нагрузка до 100 пользователей | Требования к производительности | Кэширование и индексы |
| Устаревшее оборудование | Ограничение ресурсов | Облегчённый веб-интерфейс |
| Разрозненные данные | Сложность интеграции | Единая модель данных |
| Требования безопасности | Дополнительные проверки | Аутентификация и журналирование |
:::
::: notes
Оценка выполнена для среднего месяца пилотной эксплуатации.
Отклонение фактических значений не превышает десяти процентов.
:::