| inventory | ||
| logs | ||
| notifications | ||
| organizations | ||
| spo_project | ||
| static | ||
| templates | ||
| users | ||
| .gitignore | ||
| manage.py | ||
| README.md | ||
| requirements.txt | ||
| spo_db | ||
СПО - Система учета материально-технических средств водолазной службы
Веб-приложение для оперативного учета технического состояния водолазного имущества, комплектующих изделий водолазного снаряжения, оборудования и имущества для обеспечения водолазных работ.
Технологический стек
- 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) и создайте задачи:
-
Ежемесячное напоминание об актуализации (АРМ П)
- Задача:
notifications.tasks.send_monthly_update_notifications - Расписание: Ежемесячно, 1-го числа в 9:00
- Задача:
-
Ежемесячное напоминание о контроле (АРМ Р)
- Задача:
notifications.tasks.send_monthly_control_notifications - Расписание: Ежемесячно, 1-го числа в 10:00
- Задача:
-
Ежемесячное напоминание о просмотре (АРМ М)
- Задача:
notifications.tasks.send_monthly_review_notifications - Расписание: Ежемесячно, 28-го числа в 9:00
- Задача:
Роли пользователей
- admin - Системный администратор (полные права)
- monitoring - АРМ М (Мониторинг) - просмотр всех данных
- management - АРМ Р (Руководство) - управление соединением
- department - АРМ П (Подразделение) - управление имуществом подразделения
Логирование
Все ключевые действия пользователей логируются в модель UserActionLog. Логи доступны в админ-панели.
Уведомления
Система поддерживает автоматическую отправку уведомлений по email:
- Ежемесячные напоминания об актуализации данных
- Ежемесячные напоминания о контроле актуализации
- Ежемесячные напоминания о просмотре данных
Шаблоны уведомлений настраиваются в админ-панели.
Документация кода
Весь программный код содержит подробную внутреннюю документацию. Каждая функция и класс содержат документационные строки (docstring).
Лицензия
Проект разработан в соответствии с техническим заданием.
Контакты
Для вопросов и поддержки обращайтесь к администратору системы.