Учет материально-технических средств водолазной службы
Find a file
2026-06-10 08:41:06 +03:00
inventory Initial commit Depth 2026-06-10 08:41:06 +03:00
logs Initial commit Depth 2026-06-10 08:41:06 +03:00
notifications Initial commit Depth 2026-06-10 08:41:06 +03:00
organizations Initial commit Depth 2026-06-10 08:41:06 +03:00
spo_project Initial commit Depth 2026-06-10 08:41:06 +03:00
static Initial commit Depth 2026-06-10 08:41:06 +03:00
templates Initial commit Depth 2026-06-10 08:41:06 +03:00
users Initial commit Depth 2026-06-10 08:41:06 +03:00
.gitignore Initial commit Depth 2026-06-10 08:41:06 +03:00
manage.py Initial commit Depth 2026-06-10 08:41:06 +03:00
README.md Initial commit Depth 2026-06-10 08:41:06 +03:00
requirements.txt Initial commit Depth 2026-06-10 08:41:06 +03:00
spo_db Initial commit Depth 2026-06-10 08:41:06 +03:00

СПО - Система учета материально-технических средств водолазной службы

Веб-приложение для оперативного учета технического состояния водолазного имущества, комплектующих изделий водолазного снаряжения, оборудования и имущества для обеспечения водолазных работ.

Технологический стек

  • Python 3.11
  • Django 5.2.10
  • PostgreSQL (СУБД)
  • Celery (для фоновых задач)
  • Bootstrap 5 (для интерфейса)
  • Apache (веб-сервер, для production)

Структура проекта

Проект состоит из следующих приложений Django:

  • organizations - Организационная структура (округа, соединения, подразделения)
  • inventory - Учет имущества (АРМ П - Подразделение)
  • users - Пользователи и контактные лица
  • notifications - Система уведомлений по email
  • logs - Логирование действий пользователей

Функциональные модули

АРМ П (Подразделение)

  • Ведение перечня имущества
  • Добавление, редактирование, списание имущества
  • Прием и передача имущества между подразделениями
  • Приложение документов (PDF)
  • Формирование комплектов имущества
  • Ежемесячное подтверждение проверки данных
  • Внесение данных о нормах и табелях положенности
  • Печать списков имущества
  • Управление контактными данными сотрудников

АРМ Р (Руководство)

  • Формирование сводных данных об имуществе за соединение
  • Просмотр перечня имущества подчиненных подразделений
  • Просмотр норм положенности
  • Ежеквартальное подтверждение проверки данных
  • Печать списков имущества
  • Управление контактными данными соединения

АРМ М (Мониторинг)

  • Формирование сводных данных об имуществе за все подразделения
  • Просмотр перечня имущества всех подразделений
  • Печать списков имущества
  • Управление контактными данными

Администрирование

  • Настройка прав пользователей
  • Управление организационной структурой (округа, соединения, подразделения)
  • Наполнение классификатора типов и элементов имущества
  • Управление шаблонами уведомлений

Установка и настройка

1. Клонирование репозитория

cd /home/service/VCS/SPO

2. Создание виртуального окружения

python3.11 -m venv venv
source venv/bin/activate

3. Установка зависимостей

pip install -r requirements.txt

4. Настройка базы данных

Создайте базу данных PostgreSQL:

CREATE DATABASE spo_db;
CREATE USER spo_user WITH PASSWORD 'spo_password';
GRANT ALL PRIVILEGES ON DATABASE spo_db TO spo_user;

5. Настройка переменных окружения

Создайте файл .env на основе .env.example:

cp .env.example .env

Отредактируйте .env с вашими настройками.

6. Применение миграций

python manage.py makemigrations
python manage.py migrate

7. Создание суперпользователя

python manage.py createsuperuser

8. Загрузка начальных данных (опционально)

python manage.py loaddata initial_data.json

9. Сбор статических файлов

python manage.py collectstatic --noinput

Запуск приложения

Разработка

# Запуск Django сервера разработки
python manage.py runserver

# Запуск Celery worker (в отдельном терминале)
celery -A spo_project worker -l info

# Запуск Celery beat (для периодических задач, в отдельном терминале)
celery -A spo_project beat -l info

Production

Для production используйте Apache с mod_wsgi или другой WSGI-сервер.

Настройте периодические задачи Celery через systemd или supervisor.

Настройка периодических задач

В админ-панели Django перейдите в "Периодические задачи" (Periodic Tasks) и создайте задачи:

  1. Ежемесячное напоминание об актуализации (АРМ П)

    • Задача: notifications.tasks.send_monthly_update_notifications
    • Расписание: Ежемесячно, 1-го числа в 9:00
  2. Ежемесячное напоминание о контроле (АРМ Р)

    • Задача: notifications.tasks.send_monthly_control_notifications
    • Расписание: Ежемесячно, 1-го числа в 10:00
  3. Ежемесячное напоминание о просмотре (АРМ М)

    • Задача: notifications.tasks.send_monthly_review_notifications
    • Расписание: Ежемесячно, 28-го числа в 9:00

Роли пользователей

  • admin - Системный администратор (полные права)
  • monitoring - АРМ М (Мониторинг) - просмотр всех данных
  • management - АРМ Р (Руководство) - управление соединением
  • department - АРМ П (Подразделение) - управление имуществом подразделения

Логирование

Все ключевые действия пользователей логируются в модель UserActionLog. Логи доступны в админ-панели.

Уведомления

Система поддерживает автоматическую отправку уведомлений по email:

  • Ежемесячные напоминания об актуализации данных
  • Ежемесячные напоминания о контроле актуализации
  • Ежемесячные напоминания о просмотре данных

Шаблоны уведомлений настраиваются в админ-панели.

Документация кода

Весь программный код содержит подробную внутреннюю документацию. Каждая функция и класс содержат документационные строки (docstring).

Лицензия

Проект разработан в соответствии с техническим заданием.

Контакты

Для вопросов и поддержки обращайтесь к администратору системы.