- Organize files into logical directories (docs/, scripts/, tests/) - Add comprehensive documentation (README, CONTRIBUTING, CHANGELOG) - Create deployment automation scripts - Add Docker production configuration - Update .gitignore and add .dockerignore - Remove temporary and test files from root - Improve settings.py with DEBUG from env variable Added: - README.md with project overview - CONTRIBUTING.md for contributors - CHANGELOG.md for version tracking - PROJECT_STATUS.md with current state - docker-compose.prod.yml for production - nginx.conf for production web server - scripts/deploy.sh for automated deployment - scripts/check-config.sh for configuration validation - scripts/setup-ssl.sh for SSL certificate setup - docs/DEPLOYMENT.md with detailed deployment guide - docs/ENV_VARIABLES.md with all environment variables Moved: - Documentation to docs/ - Scripts to scripts/ - Test files to tests/ Removed: - .history/ directory - Test response JSON files from root - settings_production.py (merged into settings.py) This commit prepares the project for: - Production deployment - Team collaboration - Docker containerization - Proper documentation
7.2 KiB
7.2 KiB
Contributing to SmartSolTech
Спасибо за интерес к проекту SmartSolTech! Это руководство поможет вам начать работу.
🚀 Начало работы
Требования для разработки
- Python 3.10+
- Docker & Docker Compose
- Git
- Базовые знания Django
Настройка окружения для разработки
-
Клонируйте репозиторий
git clone <repository-url> cd smartsoltech.kr-master -
Создайте .env файл
cp .env.example .env # Отредактируйте .env с вашими настройками -
Запустите проект
docker-compose up -d -
Примените миграции
docker-compose exec web python smartsoltech/manage.py migrate -
Создайте суперпользователя
docker-compose exec web python smartsoltech/manage.py createsuperuser
📝 Соглашения о коде
Python / Django
- Следуйте PEP 8
- Используйте type hints где возможно
- Документируйте функции и классы docstrings
- Максимальная длина строки: 120 символов
Пример:
def send_telegram_notification(chat_id: str, message: str) -> bool:
"""
Отправляет уведомление в Telegram.
Args:
chat_id: ID чата Telegram
message: Текст сообщения
Returns:
True если сообщение отправлено успешно, False иначе
"""
pass
Структура коммитов
Используйте понятные сообщения коммитов:
<type>: <subject>
<body>
<footer>
Типы:
feat: Новая функцияfix: Исправление багаdocs: Изменения в документацииstyle: Форматирование кодаrefactor: Рефакторингtest: Добавление тестовchore: Рутинные задачи
Примеры:
feat: add QR code generation for service requests
- Implement QR code generation using qrcode library
- Add QR code display in frontend
- Update ServiceRequest model with token field
Closes #123
🔄 Процесс разработки
1. Создайте ветку
git checkout -b feature/your-feature-name
# или
git checkout -b fix/bug-description
2. Внесите изменения
- Пишите чистый код
- Добавляйте комментарии
- Обновляйте документацию
3. Протестируйте
# Запустите тесты (когда будут добавлены)
docker-compose exec web python smartsoltech/manage.py test
# Проверьте миграции
docker-compose exec web python smartsoltech/manage.py makemigrations --check --dry-run
4. Закоммитьте изменения
git add .
git commit -m "feat: add your feature description"
5. Создайте Pull Request
- Опишите изменения подробно
- Приложите скриншоты (если применимо)
- Упомяните связанные issue
🐛 Отчеты о багах
При создании issue о баге, пожалуйста, укажите:
- Описание: Что произошло?
- Ожидаемое поведение: Что должно было произойти?
- Шаги воспроизведения: Как воспроизвести баг?
- Окружение: OS, версия Docker, браузер
- Логи: Если доступны
Пример:
## Описание
Telegram бот не отправляет уведомления после создания заявки.
## Ожидаемое поведение
После создания заявки клиент должен получить уведомление в Telegram.
## Шаги воспроизведения
1. Создать заявку через веб-форму
2. Подождать 30 секунд
3. Проверить Telegram - уведомление не пришло
## Окружение
- OS: Ubuntu 22.04
- Docker: 20.10.21
- Browser: Chrome 120
## Логи
[ERROR] Failed to send message: Connection timeout
## 💡 Предложения новых функций
При предложении новой функции:
- **Описание**: Что вы хотите добавить?
- **Обоснование**: Зачем это нужно?
- **Примеры использования**: Как это будет работать?
- **Альтернативы**: Рассматривали ли другие варианты?
## 🧪 Тестирование
### Ручное тестирование
1. Создайте тестовые данные
2. Проверьте все измененные функции
3. Проверьте интеграции (Telegram, Email)
### Автоматическое тестирование
```bash
# Запуск тестов
docker-compose exec web python smartsoltech/manage.py test
# Запуск тестов с покрытием
docker-compose exec web coverage run --source='.' manage.py test
docker-compose exec web coverage report
📚 Структура проекта
smartsoltech/
├── web/ # Основное веб-приложение
│ ├── models.py # Модели данных
│ ├── views.py # Представления
│ ├── urls.py # URL маршруты
│ ├── forms.py # Формы
│ └── admin.py # Настройки админки
├── comunication/ # Telegram бот и коммуникации
│ ├── telegram_bot.py
│ └── models.py
└── smartsoltech/ # Настройки проекта
├── settings.py
└── urls.py
🔍 Полезные команды
# Просмотр логов
docker-compose logs -f web
docker-compose logs -f bot
# Доступ к shell
docker-compose exec web python smartsoltech/manage.py shell
# Создание миграций
docker-compose exec web python smartsoltech/manage.py makemigrations
# Применение миграций
docker-compose exec web python smartsoltech/manage.py migrate
# Сбор статики
docker-compose exec web python smartsoltech/manage.py collectstatic --noinput
# Проверка кода
docker-compose exec web python -m flake8 .
❓ Вопросы?
Если у вас есть вопросы:
- Создайте issue с меткой
question - Проверьте документацию
- Свяжитесь с командой
📄 Лицензия
Внося вклад в проект, вы соглашаетесь, что ваши изменения будут лицензированы под той же лицензией, что и проект.
Спасибо за ваш вклад в SmartSolTech! 🎉