Files
smartsoltech_site/CONTRIBUTING.md
Andrew K. Choi d9adac609b chore: reorganize project structure and prepare for deployment
- 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
2025-11-24 07:12:04 +09:00

7.2 KiB
Raw Blame History

Contributing to SmartSolTech

Спасибо за интерес к проекту SmartSolTech! Это руководство поможет вам начать работу.

🚀 Начало работы

Требования для разработки

  • Python 3.10+
  • Docker & Docker Compose
  • Git
  • Базовые знания Django

Настройка окружения для разработки

  1. Клонируйте репозиторий

    git clone <repository-url>
    cd smartsoltech.kr-master
    
  2. Создайте .env файл

    cp .env.example .env
    # Отредактируйте .env с вашими настройками
    
  3. Запустите проект

    docker-compose up -d
    
  4. Примените миграции

    docker-compose exec web python smartsoltech/manage.py migrate
    
  5. Создайте суперпользователя

    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! 🎉