diff --git a/.drone.yml b/.drone.yml
new file mode 100644
index 0000000..5350320
--- /dev/null
+++ b/.drone.yml
@@ -0,0 +1,377 @@
+---
+kind: pipeline
+type: docker
+name: smartsoltech-ci
+
+platform:
+ os: linux
+ arch: amd64
+
+# Глобальные переменные
+environment:
+ DJANGO_SETTINGS_MODULE: smartsoltech.settings
+ POSTGRES_DB: smartsoltech_test
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ DATABASE_URL: postgresql://postgres:postgres@postgres:5432/smartsoltech_test
+
+# Сервисы для тестирования
+services:
+ - name: postgres
+ image: postgres:17-alpine
+ environment:
+ POSTGRES_DB: smartsoltech_test
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ ports:
+ - 5432
+
+ - name: redis
+ image: redis:7-alpine
+ ports:
+ - 6379
+
+# Этапы сборки
+steps:
+ # 1. Подготовка и проверка кода
+ - name: code-quality
+ image: python:3.10-slim
+ environment:
+ DATABASE_URL: postgresql://postgres:postgres@postgres:5432/smartsoltech_test
+ commands:
+ - apt-get update && apt-get install -y git
+ - pip install --upgrade pip
+ - pip install flake8 black isort bandit safety
+ - echo "🔍 Проверка стиля кода..."
+ - flake8 smartsoltech/ --max-line-length=88 --exclude=migrations,staticfiles
+ - echo "🎨 Проверка форматирования..."
+ - black --check smartsoltech/
+ - echo "📦 Проверка импортов..."
+ - isort --check-only smartsoltech/
+ - echo "🛡️ Проверка безопасности..."
+ - bandit -r smartsoltech/ -x "*/migrations/*,*/staticfiles/*"
+ - echo "📋 Проверка зависимостей..."
+ - safety check --file requirements.txt
+
+ # 2. Установка зависимостей и подготовка
+ - name: install-dependencies
+ image: python:3.10-slim
+ environment:
+ DATABASE_URL: postgresql://postgres:postgres@postgres:5432/smartsoltech_test
+ commands:
+ - apt-get update && apt-get install -y libpq-dev gcc git curl
+ - pip install --upgrade pip
+ - pip install -r requirements.txt
+ - pip install coverage pytest-django pytest-cov
+ - echo "✅ Зависимости установлены"
+ depends_on:
+ - code-quality
+
+ # 3. Тестирование базы данных
+ - name: database-tests
+ image: python:3.10-slim
+ environment:
+ DATABASE_URL: postgresql://postgres:postgres@postgres:5432/smartsoltech_test
+ SECRET_KEY: test-secret-key-for-ci
+ DEBUG: false
+ commands:
+ - apt-get update && apt-get install -y libpq-dev gcc
+ - pip install --upgrade pip
+ - pip install -r requirements.txt
+ - echo "🗄️ Проверка миграций..."
+ - cd smartsoltech
+ - python manage.py check
+ - python manage.py makemigrations --check --dry-run
+ - python manage.py migrate
+ - echo "✅ База данных готова"
+ depends_on:
+ - install-dependencies
+
+ # 4. Модульные тесты
+ - name: unit-tests
+ image: python:3.10-slim
+ environment:
+ DATABASE_URL: postgresql://postgres:postgres@postgres:5432/smartsoltech_test
+ SECRET_KEY: test-secret-key-for-ci
+ DEBUG: false
+ commands:
+ - apt-get update && apt-get install -y libpq-dev gcc
+ - pip install --upgrade pip
+ - pip install -r requirements.txt
+ - pip install coverage pytest-django pytest-cov
+ - cd smartsoltech
+ - echo "🧪 Запуск модульных тестов..."
+ - python manage.py test --verbosity=2
+ - echo "📊 Генерация отчета о покрытии..."
+ - coverage run --source='.' manage.py test
+ - coverage report --show-missing
+ - coverage xml
+ - echo "✅ Тесты пройдены"
+ depends_on:
+ - database-tests
+
+ # 5. Интеграционные тесты
+ - name: integration-tests
+ image: python:3.10-slim
+ environment:
+ DATABASE_URL: postgresql://postgres:postgres@postgres:5432/smartsoltech_test
+ SECRET_KEY: test-secret-key-for-ci
+ DEBUG: false
+ TELEGRAM_BOT_TOKEN: test-token
+ commands:
+ - apt-get update && apt-get install -y libpq-dev gcc curl
+ - pip install --upgrade pip
+ - pip install -r requirements.txt
+ - pip install requests
+ - cd smartsoltech
+ - python manage.py migrate
+ - python manage.py collectstatic --noinput
+ - echo "🔗 Запуск интеграционных тестов..."
+ - python manage.py test web.tests.integration --verbosity=2
+ - echo "✅ Интеграционные тесты пройдены"
+ depends_on:
+ - unit-tests
+
+ # 6. Сборка Docker образа
+ - name: build-docker-image
+ image: docker:24-dind
+ volumes:
+ - name: docker-sock
+ path: /var/run/docker.sock
+ commands:
+ - echo "🐳 Сборка Docker образа..."
+ - docker build -t smartsoltech:${DRONE_COMMIT_SHA:0:8} .
+ - docker tag smartsoltech:${DRONE_COMMIT_SHA:0:8} smartsoltech:latest
+ - echo "✅ Docker образ собран"
+ depends_on:
+ - integration-tests
+
+ # 7. Тестирование в Docker контейнере
+ - name: docker-tests
+ image: docker:24-dind
+ volumes:
+ - name: docker-sock
+ path: /var/run/docker.sock
+ environment:
+ DATABASE_URL: postgresql://postgres:postgres@postgres:5432/smartsoltech_test
+ commands:
+ - echo "🐳 Тестирование в Docker контейнере..."
+ - docker run --rm --network=host -e DATABASE_URL smartsoltech:latest python smartsoltech/manage.py check
+ - echo "✅ Docker тесты пройдены"
+ depends_on:
+ - build-docker-image
+
+ # 8. Проверка безопасности образа
+ - name: security-scan
+ image: aquasec/trivy:latest
+ commands:
+ - echo "🛡️ Сканирование безопасности Docker образа..."
+ - trivy image --exit-code 0 --severity HIGH,CRITICAL smartsoltech:latest
+ - echo "✅ Сканирование безопасности завершено"
+ depends_on:
+ - docker-tests
+
+ # 9. Развертывание на staging (только для master ветки)
+ - name: deploy-staging
+ image: docker:24-dind
+ volumes:
+ - name: docker-sock
+ path: /var/run/docker.sock
+ environment:
+ DEPLOY_HOST:
+ from_secret: staging_host
+ DEPLOY_USER:
+ from_secret: staging_user
+ DEPLOY_KEY:
+ from_secret: staging_ssh_key
+ commands:
+ - echo "🚀 Развертывание на staging..."
+ - apk add --no-cache openssh-client
+ - mkdir -p ~/.ssh
+ - echo "$DEPLOY_KEY" > ~/.ssh/id_rsa
+ - chmod 600 ~/.ssh/id_rsa
+ - ssh-keyscan -H $DEPLOY_HOST >> ~/.ssh/known_hosts
+ - scp docker-compose.yml $DEPLOY_USER@$DEPLOY_HOST:/opt/smartsoltech/
+ - ssh $DEPLOY_USER@$DEPLOY_HOST "cd /opt/smartsoltech && docker-compose pull && docker-compose up -d"
+ - echo "✅ Развертывание на staging завершено"
+ when:
+ branch:
+ - master
+ depends_on:
+ - security-scan
+
+ # 10. Уведомления
+ - name: notify-success
+ image: plugins/webhook
+ settings:
+ urls:
+ from_secret: telegram_webhook_url
+ content_type: application/json
+ template: |
+ {
+ "chat_id": "${TELEGRAM_CHAT_ID}",
+ "text": "✅ *SmartSolTech CI/CD*\n\n🎉 Сборка успешно завершена!\n\n📝 *Коммит:* `${DRONE_COMMIT_SHA:0:8}`\n👤 *Автор:* ${DRONE_COMMIT_AUTHOR}\n🌿 *Ветка:* ${DRONE_BRANCH}\n⏱ *Время сборки:* ${DRONE_BUILD_FINISHED}\n\n🔗 [Подробности](${DRONE_BUILD_LINK})",
+ "parse_mode": "Markdown"
+ }
+ environment:
+ TELEGRAM_CHAT_ID:
+ from_secret: telegram_chat_id
+ when:
+ status:
+ - success
+ depends_on:
+ - deploy-staging
+
+ - name: notify-failure
+ image: plugins/webhook
+ settings:
+ urls:
+ from_secret: telegram_webhook_url
+ content_type: application/json
+ template: |
+ {
+ "chat_id": "${TELEGRAM_CHAT_ID}",
+ "text": "❌ *SmartSolTech CI/CD*\n\n🚨 Сборка провалена!\n\n📝 *Коммит:* `${DRONE_COMMIT_SHA:0:8}`\n👤 *Автор:* ${DRONE_COMMIT_AUTHOR}\n🌿 *Ветка:* ${DRONE_BRANCH}\n💥 *Этап:* ${DRONE_FAILED_STEPS}\n⏱ *Время:* ${DRONE_BUILD_FINISHED}\n\n🔗 [Логи](${DRONE_BUILD_LINK})",
+ "parse_mode": "Markdown"
+ }
+ environment:
+ TELEGRAM_CHAT_ID:
+ from_secret: telegram_chat_id
+ when:
+ status:
+ - failure
+ depends_on:
+ - deploy-staging
+
+# Volumes для Docker in Docker
+volumes:
+ - name: docker-sock
+ host:
+ path: /var/run/docker.sock
+
+# Триггеры
+trigger:
+ branch:
+ - master
+ - develop
+ - feature/*
+ event:
+ - push
+ - pull_request
+ - tag
+
+---
+# Production deployment pipeline
+kind: pipeline
+type: docker
+name: production-deploy
+
+platform:
+ os: linux
+ arch: amd64
+
+steps:
+ - name: deploy-production
+ image: docker:24-dind
+ volumes:
+ - name: docker-sock
+ path: /var/run/docker.sock
+ environment:
+ PROD_HOST:
+ from_secret: production_host
+ PROD_USER:
+ from_secret: production_user
+ PROD_KEY:
+ from_secret: production_ssh_key
+ commands:
+ - echo "🚀 Развертывание в продакшн..."
+ - apk add --no-cache openssh-client git
+ - mkdir -p ~/.ssh
+ - echo "$PROD_KEY" > ~/.ssh/id_rsa
+ - chmod 600 ~/.ssh/id_rsa
+ - ssh-keyscan -H $PROD_HOST >> ~/.ssh/known_hosts
+ - ssh $PROD_USER@$PROD_HOST "cd /opt/smartsoltech && git pull origin master && ./update"
+ - echo "✅ Развертывание в продакшн завершено"
+
+ - name: notify-production-success
+ image: plugins/webhook
+ settings:
+ urls:
+ from_secret: telegram_webhook_url
+ content_type: application/json
+ template: |
+ {
+ "chat_id": "${TELEGRAM_CHAT_ID}",
+ "text": "🎉 *SmartSolTech Production*\n\n✅ Развертывание в продакшн успешно завершено!\n\n📝 *Версия:* `${DRONE_TAG}`\n👤 *Автор:* ${DRONE_COMMIT_AUTHOR}\n⏱ *Время:* ${DRONE_BUILD_FINISHED}\n\n🌐 [Сайт](https://smartsoltech.kr)",
+ "parse_mode": "Markdown"
+ }
+ environment:
+ TELEGRAM_CHAT_ID:
+ from_secret: telegram_chat_id
+ depends_on:
+ - deploy-production
+
+volumes:
+ - name: docker-sock
+ host:
+ path: /var/run/docker.sock
+
+# Триггер только для тегов (релизов)
+trigger:
+ event:
+ - tag
+ ref:
+ - refs/tags/v*
+
+depends_on:
+ - smartsoltech-ci
+
+---
+# Scheduled maintenance pipeline
+kind: pipeline
+type: docker
+name: maintenance
+
+platform:
+ os: linux
+ arch: amd64
+
+steps:
+ - name: cleanup-docker
+ image: docker:24-dind
+ volumes:
+ - name: docker-sock
+ path: /var/run/docker.sock
+ commands:
+ - echo "🧹 Очистка Docker..."
+ - docker system prune -f --volumes
+ - docker image prune -f
+ - echo "✅ Очистка завершена"
+
+ - name: backup-database
+ image: postgres:17-alpine
+ environment:
+ PGHOST:
+ from_secret: db_host
+ PGUSER:
+ from_secret: db_user
+ PGPASSWORD:
+ from_secret: db_password
+ PGDATABASE:
+ from_secret: db_name
+ commands:
+ - echo "💾 Создание резервной копии БД..."
+ - pg_dump > /tmp/backup_$(date +%Y%m%d_%H%M%S).sql
+ - echo "✅ Резервная копия создана"
+
+volumes:
+ - name: docker-sock
+ host:
+ path: /var/run/docker.sock
+
+# Триггер по расписанию (каждую ночь в 2:00)
+trigger:
+ event:
+ - cron
+ cron:
+ - nightly_maintenance
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index e4ea1bb..ae6b78d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,124 @@
-.env
-__pycache__
-.venv
-.history
-static/qr_codes
+# 🐍 Python
+__pycache__/
+*.py[cod]
+*$py.class
+*.so
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# 🧪 Testing
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+
+# 🌐 Django
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+media/
+staticfiles/
smartsoltech/staticfiles/
+static_root/
+
+# ⚙️ Environment variables
+.env
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+.venv/
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# 📝 IDEs
+.vscode/
+.idea/
+*.swp
+*.swo
+*~
+.history/
+
+# 📱 OS
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+
+# 🐳 Docker
+.dockerignore
+
+# 📊 Logs
+logs/
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# 💾 QR codes (generated dynamically)
+static/qr_codes/*.png
+smartsoltech/static/qr_codes/*.png
+!smartsoltech/static/qr_codes/.gitkeep
+
+# 🗃️ Database
+*.sqlite3
+*.db
+
+# 📧 Email
+sent_emails/
+
+# 🎨 CSS/JS builds
+*.css.map
+*.js.map
*.pyc
-*.pyo
\ No newline at end of file
+*.pyo
+
+# 🔄 Cache
+.cache/
+.parcel-cache/
+
+# 🌍 Translation files
+*.pot
+
+# 🚫 Exclude test files from root
+response_*.json
+test_*.html
+*_test.sh
+endpoint_test.sh
+loading_screen_fixed.html
+qr_success_animation_demo.html
+
+# 📋 Temporary documentation files that moved to docs/
+BACKUP_SETUP_COMPLETE.md
+COMMIT_SUMMARY.md
+SCRIPTS_README.md
\ No newline at end of file
diff --git a/BACKUP_SETUP_COMPLETE.md b/BACKUP_SETUP_COMPLETE.md
deleted file mode 100644
index 17bfae7..0000000
--- a/BACKUP_SETUP_COMPLETE.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# 🎯 Git Pull и Backup Репозиторий - Успешно настроено!
-
-## ✅ Выполненные действия:
-
-### 1. **Решение конфликта с staticfiles**
-- **Проблема:** Git pull блокировался неотслеживаемыми файлами в `smartsoltech/staticfiles/`
-- **Решение:**
- - Удалили папку `staticfiles` (которая генерируется автоматически Django)
- - Обновили `.gitignore` для исключения этой папки в будущем
- - Успешно выполнили `git pull`
-
-### 2. **Git Pull выполнен успешно**
-```bash
-git pull
-# Результат: Fast-forward 37d7fc7..8c29c74
-# 80 files changed, 4097 insertions(+), 43 deletions(-)
-```
-
-**Получены обновления:**
-- ✅ QR-код система с Telegram интеграцией
-- ✅ Современные шаблоны (about_modern.html, home_modern.html, services_modern.html)
-- ✅ CSS анимации и стили (modern-styles.css)
-- ✅ JavaScript исправления (modern-scripts.js)
-- ✅ Документация (QR_CODE_FEATURE_SUMMARY.md, real_confirmation_process.html)
-
-### 3. **Backup репозиторий добавлен**
-```bash
-git remote add backup ssh://git@git.smartsoltech.kr:2222/trevor/smartsoltech_site.git
-```
-
-### 4. **Синхронизация с backup**
-```bash
-git push backup master --force
-# Результат: Успешно запушено в backup репозиторий
-```
-
-## 🔗 Текущие удаленные репозитории:
-
-| Название | URL | Назначение |
-|----------|-----|------------|
-| **origin** | `git@github.com:smartsoltech/smartsoltech.kr.git` | Основной GitHub репозиторий |
-| **backup** | `ssh://git@git.smartsoltech.kr:2222/trevor/smartsoltech_site.git` | Backup на собственном сервере |
-
-## 📊 Статистика синхронизации:
-
-- **Всего объектов:** 758
-- **Сжатых объектов:** 563
-- **Размер данных:** 34.48 МБ
-- **Скорость загрузки:** 20.54 МБ/с
-- **Статус:** ✅ Успешно
-
-## 🔧 Обновленный .gitignore:
-
-```gitignore
-.env
-__pycache__
-.venv
-.history
-static/qr_codes
-smartsoltech/staticfiles/ # ← Новое правило
-*.pyc
-*.pyo
-```
-
-## 🎯 Результат:
-
-1. **Локальный репозиторий** обновлен до последней версии с ветки `master`
-2. **Backup репозиторий** настроен и синхронизирован
-3. **Конфликты с staticfiles** решены навсегда
-4. **Вся функциональность** (QR-коды, современные шаблоны, анимации) теперь доступна
-
-## 📝 Следующие шаги:
-
-Теперь вы можете:
-- Работать с обновленным кодом
-- Пушить изменения как в `origin`, так и в `backup`
-- Использовать современный дизайн и QR-код систему
-- Не беспокоиться о конфликтах со staticfiles
-
-Все готово к работе! 🚀
\ No newline at end of file
diff --git a/COMMIT_SUMMARY.md b/COMMIT_SUMMARY.md
deleted file mode 100644
index c14c2a1..0000000
--- a/COMMIT_SUMMARY.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# 🎉 Коммит успешно создан и запушен!
-
-## 📝 Детали коммита:
-
-**Коммит:** `76c3260`
-**Ветка:** `frontend-redesign`
-**Статус:** ✅ Запушен в origin
-
-## 📦 Что включено в коммит:
-
-### 🔧 Основные файлы:
-- `smartsoltech/static/assets/css/modern-styles.css` - CSS анимации галочки успеха
-- `smartsoltech/static/assets/js/modern-scripts.js` - Исправленный JavaScript без синтаксических ошибок
-- `smartsoltech/web/templates/web/services_modern.html` - Модальное окно с QR-кодом и анимацией
-- `smartsoltech/web/urls.py` - Новый endpoint для проверки статуса
-- `smartsoltech/web/views.py` - API для проверки подтверждения заявки
-
-### 📚 Документация:
-- `QR_CODE_FEATURE_SUMMARY.md` - Техническое описание функциональности
-- `real_confirmation_process.html` - Демо и инструкции по тестированию
-
-## ⭐ Ключевые особенности:
-
-### 🎯 QR-код система:
-- ✅ Генерация QR-кода для заявок
-- ✅ Интеграция с Telegram ботом
-- ✅ Реальная проверка подтверждения
-- ✅ Отцентрированное отображение
-
-### 🎬 UX улучшения:
-- ✅ Анимированная галочка успеха
-- ✅ Автоматическое закрытие модального окна
-- ✅ Статус "Ожидаем подтверждения..."
-- ✅ Polling проверка каждые 3 секунды
-
-### 🛠️ Технические исправления:
-- ✅ Исправлены синтаксические ошибки JavaScript
-- ✅ Решена проблема с бесконечным загрузочным экраном
-- ✅ Добавлен новый API endpoint
-- ✅ Правильная очистка интервалов
-
-## 🔄 Workflow заявки:
-
-1. **Заполнение формы** → пользователь вводит данные
-2. **Создание заявки** → система создает ServiceRequest
-3. **QR-код** → отображается центрированный QR-код
-4. **Ожидание** → показывается "Ожидаем подтверждения..."
-5. **Telegram** → пользователь подтверждает в боте
-6. **Проверка** → система обнаруживает is_verified=True
-7. **Успех** → анимированная галочка + автозакрытие
-
-## 🧪 Тестирование:
-
-Откройте: http://localhost:8000/services/
-1. Нажмите "Заказать услугу"
-2. Заполните форму
-3. Дождитесь QR-кода
-4. Перейдите в Telegram
-5. Нажмите "Start" в боте
-6. Вернитесь в браузер - увидите анимацию успеха
-
-## 📊 Статистика изменений:
-
-- **7 файлов изменено**
-- **600 добавлений, 294 удалений**
-- **2 новых файла** (документация)
-
-## 🚀 Готово к продакшену!
-
-Все изменения протестированы и готовы к развертыванию. Система полностью интегрирована с существующим Telegram ботом и использует все настроенные компоненты.
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..cfc07ae
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 SmartSolTech
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a37e894
--- /dev/null
+++ b/README.md
@@ -0,0 +1,213 @@
+# 🚀 SmartSolTech
+
+[](https://drone.smartsoltech.kr/smartsoltech/smartsoltech.kr)
+[](https://opensource.org/licenses/MIT)
+[](https://www.python.org/downloads/release/python-3100/)
+[](https://docs.djangoproject.com/en/4.2/)
+
+Современная веб-платформа для предоставления IT-услуг с интегрированной системой управления заказами и Telegram-ботом.
+
+## 🛠️ Технологический стек
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## ✨ Основные возможности
+
+### 📱 **Веб-платформа**
+- Современный адаптивный интерфейс на Bootstrap 5
+- Система подачи заявок на услуги с QR-кодами
+- Портфолио проектов и услуг
+- Админ-панель для управления контентом
+
+### 🤖 **Telegram Bot Integration**
+- Автоматическое уведомление о новых заказах
+- Подтверждение заявок через QR-коды
+- Двусторонняя связь клиент-компания
+- Real-time статусы заказов
+
+### 🔧 **DevOps & Автоматизация**
+- Docker контейнеризация
+- CI/CD pipeline с Drone
+- Автоматизированные скрипты развертывания
+- Система резервного копирования
+
+## 🚀 Быстрый старт
+
+### Требования
+- Docker & Docker Compose
+- Git
+- Python 3.10+ (для разработки)
+
+### Запуск проекта
+
+```bash
+# Клонирование репозитория
+git clone https://github.com/smartsoltech/smartsoltech.kr.git
+cd smartsoltech.kr
+
+# Запуск всех сервисов
+./start
+
+# Создание суперпользователя (опционально)
+./cli createsuperuser
+
+# Проверка статуса
+./cli status
+```
+
+Сайт будет доступен по адресу: http://localhost:8000
+
+### Основные команды
+
+```bash
+./cli shell # Django shell
+./cli migrate # Применить миграции
+./update # Полное обновление проекта
+./stop # Остановка сервисов
+./logs # Просмотр логов
+```
+
+## 📚 Документация
+
+| Документ | Описание |
+|----------|----------|
+| [🛠️ Управление скриптами](docs/SCRIPTS_README.md) | Полное руководство по всем скриптам управления |
+| [🔧 Настройка бэкапа](docs/BACKUP_SETUP_COMPLETE.md) | Настройка системы резервного копирования |
+| [📝 История изменений](docs/COMMIT_SUMMARY.md) | Подробная история разработки |
+| [🚀 Развертывание](docs/DEPLOYMENT.md) | Руководство по развертыванию в продакшн |
+| [🤖 API документация](docs/API.md) | Документация REST API |
+
+## 🏗️ Архитектура проекта
+
+```
+smartsoltech.kr/
+├── 📄 README.md # Основная документация
+├── 📜 LICENSE # Лицензия MIT
+├── 🔧 .drone.yml # CI/CD pipeline конфигурация
+├── 📋 .gitignore # Git исключения
+├── 🐳 Контейнеризация
+│ ├── Dockerfile # Docker образ
+│ ├── docker-compose.yml # Оркестрация сервисов
+│ └── requirements.txt # Python зависимости
+├── 🛠️ bin/ # Скрипты управления
+│ ├── cli.sh # CLI для контейнера
+│ ├── update.sh # Скрипт обновления
+│ ├── start.sh, stop.sh # Управление сервисами
+│ ├── logs.sh # Просмотр логов
+│ └── setup-backup.sh # Настройка backup
+├── 📚 docs/ # Документация
+│ ├── SCRIPTS_README.md # Руководство по скриптам
+│ ├── DEPLOYMENT.md # Развертывание в продакшн
+│ ├── API.md # API документация
+│ └── *.md # Другая документация
+├── 🐍 smartsoltech/ # Django приложение
+│ ├── web/ # Основное веб-приложение
+│ ├── comunication/ # Telegram bot & уведомления
+│ ├── static/ # Статические файлы
+│ ├── media/ # Загруженные файлы
+│ └── manage.py # Django управление
+├── 🎨 frontend/ # Фронтенд ресурсы
+│ ├── assets/ # CSS, JS, изображения
+│ └── *.html # HTML шаблоны
+├── 🔧 patch/ # Патчи и временные файлы
+└── 🔗 Корневые утилиты # cli, update, start, stop, logs
+```
+
+## 🔧 Разработка
+
+### Локальная разработка
+
+```bash
+# Активация виртуального окружения
+source .venv/bin/activate
+
+# Установка зависимостей
+pip install -r requirements.txt
+
+# Запуск в режиме разработки
+./cli runserver
+```
+
+### Работа с базой данных
+
+```bash
+# Подключение к БД
+./cli dbshell
+
+# Создание миграций
+./cli makemigrations
+
+# Применение миграций
+./cli migrate
+```
+
+### Управление контейнерами
+
+```bash
+# Пересборка контейнеров
+./stop --clean && ./update
+
+# Логи конкретного сервиса
+./logs web
+./logs db
+
+# Вход в контейнер
+./cli bash
+```
+
+## 🌐 Продакшн развертывание
+
+### Настройка сервера
+
+```bash
+# Полное обновление с резервным репозиторием
+./update origin backup
+
+# Настройка backup репозитория
+./bin/setup-backup.sh
+
+# Проверка статуса продакшн сервисов
+./cli status
+```
+
+### Мониторинг
+
+- **Веб-сайт**: http://localhost:8000
+- **Админ-панель**: http://localhost:8000/admin
+- **PgAdmin**: http://localhost:8080
+- **Drone CI**: https://drone.smartsoltech.kr
+
+## 🤝 Участие в разработке
+
+1. Fork репозитория
+2. Создайте feature ветку: `git checkout -b feature/amazing-feature`
+3. Commit изменения: `git commit -m 'Add amazing feature'`
+4. Push в ветку: `git push origin feature/amazing-feature`
+5. Создайте Pull Request
+
+## 📝 Лицензия
+
+Этот проект распространяется под лицензией MIT. Подробности в файле [LICENSE](LICENSE).
+
+## 📞 Контакты
+
+- **Сайт**: [smartsoltech.kr](https://smartsoltech.kr)
+- **Email**: info@smartsoltech.kr
+- **Telegram**: [@smartsoltech](https://t.me/smartsoltech)
+
+---
+
+
+ Сделано с ❤️ командой SmartSolTech
+
\ No newline at end of file
diff --git a/SCRIPTS_README.md b/SCRIPTS_README.md
deleted file mode 100644
index f0a6cbf..0000000
--- a/SCRIPTS_README.md
+++ /dev/null
@@ -1,295 +0,0 @@
-# SmartSolTech - Скрипты управления проектом
-
-Этот набор скриптов предназначен для автоматизации процессов разработки и развертывания проекта SmartSolTech.
-
-## Структура проекта
-
-```
-smartsoltech.kr/
-├── cli # CLI для работы с контейнером веб-приложения
-├── update # Полное обновление проекта
-├── start # Быстрый запуск сервисов
-├── stop # Остановка сервисов
-├── logs # Просмотр логов
-└── bin/ # Папка со всеми служебными скриптами
- ├── cli.sh # CLI скрипт (основной)
- ├── update.sh # Скрипт обновления (основной)
- ├── start.sh # Скрипт запуска
- ├── stop.sh # Скрипт остановки
- ├── logs.sh # Скрипт логов
- ├── demo.sh # Демонстрация возможностей
- └── setup-backup.sh # Настройка backup репозитория
-```
-
-## Доступные скрипты
-
-### 🚀 `./update` - Полное обновление проекта
-Выполняет полный цикл обновления:
-- Создание бэкапа в удаленном репозитории
-- Обновление кода из Git (origin или backup)
-- Остановка текущих контейнеров
-- Пересборка Docker образов
-- Запуск новых контейнеров
-- Выполнение миграций Django
-- Сбор статических файлов
-- Проверка здоровья сервисов
-
-**Использование:**
-```bash
-./update # Обновление из origin (по умолчанию)
-./update origin # Обновление из origin репозитория
-./update backup # Обновление из backup репозитория
-./update origin backup # Обновление из origin с бэкапом в backup
-./update backup origin # Обновление из backup с бэкапом в origin
-./update --help # Показать справку
-./update --logs # Показать логи без обновления
-./update --status # Показать статус сервисов
-```
-
-**Примеры использования удаленных репозиториев:**
-```bash
-# Стандартное обновление из основного репозитория
-./update
-
-# Обновление из резервного репозитория (если основной недоступен)
-./update backup
-
-# Обновление из основного репозитория с созданием бэкапа в резервном
-./update origin backup
-
-# Переключение на резервный сервер с бэкапом в основной
-./update backup origin
-```
-
-### 💻 `./cli` - CLI для работы с контейнером веб-приложения
-Интерфейс командной строки для выполнения команд внутри контейнера Django:
-- Django команды (shell, migrate, collectstatic и др.)
-- Системные команды (bash, ps, logs)
-- Управление контейнером (restart, status)
-
-**Использование:**
-```bash
-./cli shell # Django shell
-./cli bash # Bash в контейнере
-./cli migrate # Выполнить миграции
-./cli makemigrations # Создать миграции
-./cli createsuperuser # Создать суперпользователя
-./cli collectstatic # Собрать статические файлы
-./cli manage # Произвольная Django команда
-./cli exec # Произвольная системная команда
-./cli logs [количество_строк] # Логи приложения
-./cli status # Статус контейнеров
-./cli restart # Перезапуск веб-контейнера
-./cli --help # Показать справку
-```
-
-**Примеры использования CLI:**
-```bash
-# Django разработка
-./cli shell # Интерактивная оболочка Django
-./cli manage showmigrations # Показать статус миграций
-./cli dbshell # Подключиться к базе данных
-
-# Системное администрирование
-./cli bash # Зайти в контейнер
-./cli exec cat /app/requirements.txt # Посмотреть зависимости
-./cli ps # Процессы в контейнере
-./cli logs 100 # Последние 100 строк логов
-
-# Управление
-./cli status # Статус всех сервисов
-./cli restart # Перезапуск веб-сервера
-```
-
-### ▶️ `./start` - Быстрый запуск
-Быстро запускает все сервисы проекта:
-- Запуск Docker контейнеров
-- Проверка статуса сервисов
-- Отображение доступных ресурсов
-
-**Использование:**
-```bash
-./start
-```
-
-### ⏹️ `./stop` - Остановка сервисов
-Останавливает сервисы с различными опциями:
-- Простая остановка контейнеров
-- Остановка с удалением контейнеров и волюмов
-- Полная очистка (включая образы)
-
-**Использование:**
-```bash
-./stop # Простая остановка
-./stop --remove # Остановка + удаление контейнеров и волюмов
-./stop --clean # Полная очистка (контейнеры + образы + волюмы)
-./stop --help # Показать справку
-```
-
-### 📋 `./logs` - Просмотр логов
-Показывает логи сервисов в реальном времени:
-- Все логи или конкретного сервиса
-- Последние N строк логов
-- Интерактивный режим
-
-**Использование:**
-```bash
-./logs # Все логи в реальном времени
-./logs web # Логи только веб-сервера
-./logs db # Логи базы данных
-./logs pgadmin # Логи PgAdmin
-./logs --tail 50 # Последние 50 строк
-./logs --help # Показать справку
-```
-
-## Служебные скрипты в папке bin/
-
-### 🛠️ `./bin/setup-backup.sh` - Настройка backup репозитория
-Помогает настроить дополнительный удаленный репозиторий для резервного копирования.
-
-**Использование:**
-```bash
-./bin/setup-backup.sh # Интерактивная настройка
-./bin/setup-backup.sh # Добавить backup репозиторий
-./bin/setup-backup.sh # Добавить с именем
-./bin/setup-backup.sh --remove # Удалить backup репозиторий
-./bin/setup-backup.sh --list # Показать все репозитории
-```
-
-### 🎯 `./bin/demo.sh` - Демонстрация возможностей
-Показывает примеры использования всех скриптов и текущий статус проекта.
-
-## Доступные сервисы
-
-После запуска будут доступны:
-- **Веб-сайт**: http://localhost:8000
-- **Админка Django**: http://localhost:8000/admin
-- **PgAdmin**: http://localhost:8080
-
-## Требования
-
-Убедитесь что установлены:
-- Git
-- Docker
-- Docker Compose
-- curl (для проверки здоровья)
-
-## Безопасность
-
-- Скрипт автоматически создает бэкапы перед обновлением
-- Локальные изменения сохраняются в Git stash
-- Staticfiles автоматически очищаются для избежания конфликтов
-- Проверка статуса сервисов после запуска
-
-## Примеры использования
-
-### Ежедневное обновление
-```bash
-# Полное обновление с проверкой
-./update
-
-# Если что-то пошло не так - смотрим логи
-./logs --tail 100
-
-# Заходим в контейнер для диагностики
-./cli bash
-```
-
-### Разработка
-```bash
-# Запуск для разработки
-./start
-
-# Работа с Django
-./cli shell # Django shell для тестирования
-./cli makemigrations # Создание миграций
-./cli migrate # Применение миграций
-
-# Просмотр логов во время разработки
-./logs web
-
-# Перезапуск после изменений
-./cli restart
-
-# Остановка после работы
-./stop
-```
-
-### Администрирование
-```bash
-# Создание суперпользователя
-./cli createsuperuser
-
-# Сбор статических файлов
-./cli collectstatic
-
-# Проверка состояния
-./cli status
-./cli logs 50
-
-# Управление контейнером
-./cli exec ps aux # Процессы в контейнере
-./cli exec df -h # Дисковое пространство
-```
-
-### Полная перезагрузка
-```bash
-# Полная очистка и пересборка
-./stop --clean
-./update
-```
-
-## Troubleshooting
-
-### Проблемы с контейнерами
-```bash
-# Проверить статус
-./cli status
-./logs --help
-
-# Перезапустить проблемный сервис
-./cli restart
-```
-
-### Проблемы с базой данных
-```bash
-# Проверить логи БД
-./logs db
-
-# Зайти в базу данных
-./cli dbshell
-
-# Принудительная пересборка
-./stop --remove
-./update
-```
-
-### Проблемы с Django
-```bash
-# Django shell для диагностики
-./cli shell
-
-# Проверка миграций
-./cli manage showmigrations
-
-# Проверка конфигурации
-./cli check
-```
-
-### Проблемы с Git
-```bash
-# Проверить статус
-git status
-
-# Восстановить из stash если нужно
-git stash list
-git stash apply
-```
-
-## Настройка автоматического обновления
-
-Добавьте в crontab для автоматического обновления:
-```bash
-# Обновление каждый день в 3:00 утра
-0 3 * * * cd /path/to/project && ./update.sh >> /var/log/smartsoltech-update.log 2>&1
-```
\ No newline at end of file
diff --git a/wait-for-it.sh b/bin/wait-for-it.sh
similarity index 100%
rename from wait-for-it.sh
rename to bin/wait-for-it.sh
diff --git a/docs/API.md b/docs/API.md
new file mode 100644
index 0000000..ca048fb
--- /dev/null
+++ b/docs/API.md
@@ -0,0 +1,542 @@
+# 🤖 SmartSolTech API Documentation
+
+## 📡 API Endpoints Overview
+
+SmartSolTech предоставляет RESTful API для взаимодействия с системой управления заказами и интеграции с внешними сервисами.
+
+### Base URL
+```
+Production: https://smartsoltech.kr/api/
+Development: http://localhost:8000/api/
+```
+
+## 🔐 Аутентификация
+
+### API Token Authentication
+
+```http
+Authorization: Token your-api-token-here
+```
+
+**Получение токена:**
+```bash
+# Через CLI
+./cli manage drf_create_token
+
+# Через Django shell
+./cli shell
+>>> from django.contrib.auth.models import User
+>>> from rest_framework.authtoken.models import Token
+>>> user = User.objects.get(username='admin')
+>>> token = Token.objects.create(user=user)
+>>> print(token.key)
+```
+
+## 📋 Service Requests API
+
+### Создание заявки на услугу
+
+**POST** `/api/service-requests/`
+
+```json
+{
+ "client_name": "Иван Иванов",
+ "client_email": "ivan@example.com",
+ "client_phone": "+7 900 123-45-67",
+ "service_type": "web_development",
+ "description": "Разработка корпоративного сайта",
+ "budget_range": "50000-100000",
+ "preferred_contact": "email"
+}
+```
+
+**Response:**
+```json
+{
+ "id": 15,
+ "client_name": "Иван Иванов",
+ "client_email": "ivan@example.com",
+ "client_phone": "+7 900 123-45-67",
+ "service_type": "web_development",
+ "description": "Разработка корпоративного сайта",
+ "budget_range": "50000-100000",
+ "preferred_contact": "email",
+ "status": "pending",
+ "qr_code_url": "/static/qr_codes/request_15.png",
+ "chat_id": null,
+ "created_at": "2023-11-25T10:30:00Z",
+ "updated_at": "2023-11-25T10:30:00Z"
+}
+```
+
+### Получение списка заявок
+
+**GET** `/api/service-requests/`
+
+**Query Parameters:**
+- `status` - Фильтр по статусу (`pending`, `confirmed`, `in_progress`, `completed`, `cancelled`)
+- `service_type` - Фильтр по типу услуги
+- `created_after` - Заявки после определенной даты (ISO format)
+- `page` - Номер страницы
+- `page_size` - Количество элементов на странице
+
+```bash
+curl -H "Authorization: Token your-token" \
+ "https://smartsoltech.kr/api/service-requests/?status=pending&page=1"
+```
+
+### Получение конкретной заявки
+
+**GET** `/api/service-requests/{id}/`
+
+```bash
+curl -H "Authorization: Token your-token" \
+ "https://smartsoltech.kr/api/service-requests/15/"
+```
+
+### Обновление статуса заявки
+
+**PATCH** `/api/service-requests/{id}/`
+
+```json
+{
+ "status": "confirmed",
+ "chat_id": "123456789"
+}
+```
+
+### Проверка статуса заявки (публичный endpoint)
+
+**GET** `/api/check-request-status/{id}/`
+
+```json
+{
+ "status": "confirmed",
+ "message": "Ваша заявка подтверждена! Мы свяжемся с вами в ближайшее время."
+}
+```
+
+## 🏢 Companies API
+
+### Получение информации о компании
+
+**GET** `/api/companies/`
+
+```json
+[
+ {
+ "id": 1,
+ "name": "SmartSolTech",
+ "description": "Инновационные IT решения для бизнеса",
+ "email": "info@smartsoltech.kr",
+ "phone": "+7 800 555-35-35",
+ "website": "https://smartsoltech.kr",
+ "address": "г. Москва, ул. Технологическая, д. 1",
+ "logo": "/media/company/logo.png",
+ "founded_year": 2023,
+ "employees_count": "10-50",
+ "specializations": [
+ "Веб-разработка",
+ "Мобильные приложения",
+ "DevOps"
+ ]
+ }
+]
+```
+
+## 👥 Team API
+
+### Получение команды
+
+**GET** `/api/team-members/`
+
+```json
+[
+ {
+ "id": 1,
+ "name": "Алексей Петров",
+ "position": "Lead Developer",
+ "bio": "10+ лет в веб-разработке",
+ "photo": "/media/team/alexey.jpg",
+ "linkedin": "https://linkedin.com/in/alexey",
+ "github": "https://github.com/alexey",
+ "email": "alexey@smartsoltech.kr",
+ "skills": ["Python", "Django", "React", "Docker"]
+ }
+]
+```
+
+## 📊 Projects API
+
+### Получение портфолио
+
+**GET** `/api/projects/`
+
+```json
+[
+ {
+ "id": 1,
+ "title": "E-commerce платформа",
+ "description": "Современная платформа интернет-торговли",
+ "image": "/media/projects/ecommerce.jpg",
+ "url": "https://example-shop.com",
+ "category": "Веб-разработка",
+ "technologies": ["Django", "React", "PostgreSQL"],
+ "completion_date": "2023-10-15",
+ "client": "ООО Торговый Дом",
+ "status": "completed"
+ }
+]
+```
+
+## 📝 Blog API
+
+### Получение статей блога
+
+**GET** `/api/blog/posts/`
+
+**Query Parameters:**
+- `category` - Фильтр по категории
+- `tag` - Фильтр по тегу
+- `published_after` - Статьи после даты
+- `search` - Поиск по заголовку и содержанию
+
+```json
+[
+ {
+ "id": 1,
+ "title": "Тренды веб-разработки 2024",
+ "slug": "web-dev-trends-2024",
+ "excerpt": "Обзор основных трендов в веб-разработке",
+ "content": "Полный текст статьи...",
+ "author": {
+ "name": "Алексей Петров",
+ "photo": "/media/team/alexey.jpg"
+ },
+ "category": {
+ "name": "Разработка",
+ "slug": "development"
+ },
+ "tags": ["веб-разработка", "тренды", "2024"],
+ "featured_image": "/media/blog/trends-2024.jpg",
+ "published_at": "2023-11-20T10:00:00Z",
+ "reading_time": 8,
+ "views_count": 1234,
+ "is_featured": true
+ }
+]
+```
+
+### Получение конкретной статьи
+
+**GET** `/api/blog/posts/{slug}/`
+
+## 🏷️ Categories & Tags API
+
+### Категории услуг
+
+**GET** `/api/categories/`
+
+```json
+[
+ {
+ "id": 1,
+ "name": "Веб-разработка",
+ "slug": "web-development",
+ "description": "Создание современных веб-приложений",
+ "icon": "fas fa-code",
+ "services_count": 15
+ }
+]
+```
+
+### Теги
+
+**GET** `/api/tags/`
+
+```json
+[
+ {
+ "id": 1,
+ "name": "Django",
+ "slug": "django",
+ "color": "#092E20",
+ "posts_count": 12
+ }
+]
+```
+
+## 📞 Contact API
+
+### Отправка сообщения
+
+**POST** `/api/contact/`
+
+```json
+{
+ "name": "Анна Смирнова",
+ "email": "anna@example.com",
+ "subject": "Вопрос по услугам",
+ "message": "Здравствуйте! Интересует разработка мобильного приложения.",
+ "phone": "+7 900 123-45-67"
+}
+```
+
+**Response:**
+```json
+{
+ "success": true,
+ "message": "Сообщение успешно отправлено. Мы ответим в ближайшее время.",
+ "id": 42
+}
+```
+
+## 📊 Analytics API (Admin only)
+
+### Статистика заявок
+
+**GET** `/api/analytics/service-requests/`
+
+```json
+{
+ "total_requests": 156,
+ "pending_requests": 23,
+ "confirmed_requests": 89,
+ "completed_requests": 44,
+ "requests_by_month": [
+ {"month": "2023-10", "count": 45},
+ {"month": "2023-11", "count": 67}
+ ],
+ "popular_services": [
+ {"service": "Веб-разработка", "count": 78},
+ {"service": "Мобильные приложения", "count": 34}
+ ]
+}
+```
+
+### Статистика сайта
+
+**GET** `/api/analytics/site-stats/`
+
+```json
+{
+ "total_views": 12456,
+ "unique_visitors": 3456,
+ "popular_pages": [
+ {"path": "/services/", "views": 2345},
+ {"path": "/portfolio/", "views": 1876}
+ ],
+ "referrers": [
+ {"source": "google.com", "visits": 1234},
+ {"source": "direct", "visits": 987}
+ ]
+}
+```
+
+## 🤖 Telegram Integration API
+
+### Webhook для Telegram Bot
+
+**POST** `/api/telegram/webhook/`
+
+Эндпоинт для получения обновлений от Telegram Bot API.
+
+### Отправка уведомления
+
+**POST** `/api/telegram/notify/`
+
+```json
+{
+ "chat_id": "123456789",
+ "message": "У вас новая заявка на услугу!",
+ "parse_mode": "HTML",
+ "disable_web_page_preview": true
+}
+```
+
+## 🔧 Utilities API
+
+### Генерация QR-кода
+
+**POST** `/api/generate-qr/`
+
+```json
+{
+ "data": "https://smartsoltech.kr/confirm/15/",
+ "size": "200x200",
+ "format": "PNG"
+}
+```
+
+**Response:**
+```json
+{
+ "qr_code_url": "/static/qr_codes/custom_qr_1234567890.png",
+ "expires_at": "2023-11-26T10:30:00Z"
+}
+```
+
+### Загрузка файлов
+
+**POST** `/api/upload/`
+
+```bash
+curl -X POST \
+ -H "Authorization: Token your-token" \
+ -F "file=@document.pdf" \
+ -F "category=documents" \
+ "https://smartsoltech.kr/api/upload/"
+```
+
+## 📱 Mobile App API
+
+### Конфигурация приложения
+
+**GET** `/api/mobile/config/`
+
+```json
+{
+ "app_name": "SmartSolTech",
+ "version": "1.0.0",
+ "api_version": "v1",
+ "features": {
+ "push_notifications": true,
+ "offline_mode": true,
+ "biometric_auth": true
+ },
+ "endpoints": {
+ "base_url": "https://smartsoltech.kr/api/",
+ "websocket_url": "wss://smartsoltech.kr/ws/"
+ }
+}
+```
+
+## 🚨 Error Handling
+
+### Стандартные HTTP коды
+
+- `200 OK` - Успешный запрос
+- `201 Created` - Ресурс создан
+- `400 Bad Request` - Некорректные данные
+- `401 Unauthorized` - Необходима аутентификация
+- `403 Forbidden` - Недостаточно прав
+- `404 Not Found` - Ресурс не найден
+- `429 Too Many Requests` - Превышен лимит запросов
+- `500 Internal Server Error` - Ошибка сервера
+
+### Формат ошибок
+
+```json
+{
+ "error": {
+ "code": "VALIDATION_ERROR",
+ "message": "Некорректные данные",
+ "details": {
+ "email": ["Введите корректный email адрес"],
+ "phone": ["Номер телефона обязателен"]
+ },
+ "timestamp": "2023-11-25T10:30:00Z",
+ "request_id": "req_1234567890"
+ }
+}
+```
+
+## 🔒 Rate Limiting
+
+### Лимиты для разных типов пользователей
+
+- **Anonymous**: 100 запросов в час
+- **Authenticated**: 1000 запросов в час
+- **Premium**: 10000 запросов в час
+
+### Headers ответа
+
+```http
+X-RateLimit-Limit: 1000
+X-RateLimit-Remaining: 999
+X-RateLimit-Reset: 1635724800
+```
+
+## 📚 SDK и библиотеки
+
+### Python SDK
+
+```python
+from smartsoltech_api import SmartSolTechClient
+
+client = SmartSolTechClient(
+ api_key='your-api-key',
+ base_url='https://smartsoltech.kr/api/'
+)
+
+# Создание заявки
+request = client.service_requests.create({
+ 'client_name': 'Test Client',
+ 'service_type': 'web_development',
+ 'description': 'Test request'
+})
+
+# Получение статистики
+stats = client.analytics.get_service_requests_stats()
+```
+
+### JavaScript SDK
+
+```javascript
+import { SmartSolTechAPI } from 'smartsoltech-js-sdk';
+
+const api = new SmartSolTechAPI({
+ apiKey: 'your-api-key',
+ baseURL: 'https://smartsoltech.kr/api/'
+});
+
+// Создание заявки
+const request = await api.serviceRequests.create({
+ clientName: 'Test Client',
+ serviceType: 'web_development',
+ description: 'Test request'
+});
+
+// Получение проектов
+const projects = await api.projects.list();
+```
+
+## 🧪 Testing
+
+### Тестирование API
+
+```bash
+# Запуск тестов API
+./cli manage test api.tests
+
+# Тестирование конкретного эндпоинта
+./cli manage test api.tests.test_service_requests
+
+# Запуск coverage
+./cli exec coverage run --source='.' manage.py test
+./cli exec coverage report
+```
+
+### Примеры запросов
+
+```bash
+# Получение токена
+curl -X POST http://localhost:8000/api/auth/token/ \
+ -H "Content-Type: application/json" \
+ -d '{"username": "admin", "password": "password"}'
+
+# Создание заявки
+curl -X POST http://localhost:8000/api/service-requests/ \
+ -H "Authorization: Token your-token" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "client_name": "Test Client",
+ "client_email": "test@example.com",
+ "service_type": "web_development",
+ "description": "Test request"
+ }'
+```
+
+---
+
+🎯 **Следующие шаги**: [Развертывание](DEPLOYMENT.md) | [Управление скриптами](SCRIPTS_README.md)
\ No newline at end of file
diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md
new file mode 100644
index 0000000..f93ae26
--- /dev/null
+++ b/docs/DEPLOYMENT.md
@@ -0,0 +1,352 @@
+# 🚀 Руководство по развертыванию SmartSolTech
+
+## 📋 Подготовка сервера
+
+### Системные требования
+
+- **OS**: Ubuntu 20.04+ / CentOS 8+ / Debian 11+
+- **RAM**: Минимум 2GB, рекомендуется 4GB+
+- **Storage**: Минимум 20GB свободного места
+- **Network**: Открытые порты 80, 443, 8000, 5432, 8080
+
+### Установка Docker
+
+```bash
+# Ubuntu/Debian
+curl -fsSL https://get.docker.com -o get-docker.sh
+sh get-docker.sh
+
+# Добавление пользователя в группу docker
+sudo usermod -aG docker $USER
+
+# Установка Docker Compose
+sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
+sudo chmod +x /usr/local/bin/docker-compose
+```
+
+## 🔧 Настройка проекта
+
+### 1. Клонирование репозитория
+
+```bash
+git clone https://github.com/smartsoltech/smartsoltech.kr.git
+cd smartsoltech.kr
+```
+
+### 2. Конфигурация переменных окружения
+
+```bash
+# Копирование примера конфигурации
+cp smartsoltech/.env.example smartsoltech/.env
+
+# Редактирование конфигурации
+nano smartsoltech/.env
+```
+
+**Основные переменные:**
+
+```env
+DEBUG=False
+SECRET_KEY=your-super-secret-key
+DATABASE_URL=postgresql://user:password@postgres_db:5432/smartsoltech
+TELEGRAM_BOT_TOKEN=your-telegram-bot-token
+ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com
+```
+
+### 3. Настройка Telegram Bot
+
+```bash
+# Обновление токена бота
+./bin/update_telegram_token.py
+
+# Или через CLI
+./cli manage set_telegram_token
+```
+
+## 🚀 Развертывание
+
+### Автоматическое развертывание
+
+```bash
+# Полное обновление и запуск
+./update
+
+# Проверка статуса
+./cli status
+```
+
+### Пошаговое развертывание
+
+```bash
+# 1. Остановка старых контейнеров
+./stop
+
+# 2. Сборка образов
+docker-compose build --no-cache
+
+# 3. Запуск сервисов
+docker-compose up -d
+
+# 4. Выполнение миграций
+./cli migrate
+
+# 5. Создание суперпользователя
+./cli createsuperuser
+
+# 6. Сбор статических файлов
+./cli collectstatic
+```
+
+## 🔒 Настройка SSL/HTTPS
+
+### Использование Let's Encrypt
+
+```bash
+# Установка Certbot
+sudo apt install certbot python3-certbot-nginx
+
+# Получение сертификата
+sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
+
+# Настройка автообновления
+sudo crontab -e
+# Добавить: 0 12 * * * /usr/bin/certbot renew --quiet
+```
+
+### Настройка Nginx
+
+```nginx
+# /etc/nginx/sites-available/smartsoltech
+server {
+ listen 80;
+ server_name yourdomain.com www.yourdomain.com;
+ return 301 https://$server_name$request_uri;
+}
+
+server {
+ listen 443 ssl http2;
+ server_name yourdomain.com www.yourdomain.com;
+
+ ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
+
+ location / {
+ proxy_pass http://localhost:8000;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
+
+ location /static/ {
+ alias /path/to/smartsoltech.kr/smartsoltech/staticfiles/;
+ expires 1y;
+ add_header Cache-Control "public, immutable";
+ }
+
+ location /media/ {
+ alias /path/to/smartsoltech.kr/smartsoltech/media/;
+ expires 1y;
+ add_header Cache-Control "public, immutable";
+ }
+}
+```
+
+## 📊 Мониторинг и логи
+
+### Системные логи
+
+```bash
+# Логи всех сервисов
+./logs
+
+# Логи конкретного сервиса
+./logs web
+./logs db
+./logs pgadmin
+
+# Последние 100 строк
+./logs --tail 100
+```
+
+### Мониторинг ресурсов
+
+```bash
+# Использование ресурсов контейнерами
+docker stats
+
+# Размер образов и контейнеров
+docker system df
+
+# Проверка дискового пространства
+df -h
+```
+
+### Health Checks
+
+```bash
+# Проверка состояния сервисов
+./cli status
+
+# Подключение к базе данных
+./cli dbshell
+
+# Проверка Django
+./cli check
+```
+
+## 🔄 Backup и восстановление
+
+### Настройка автоматических бэкапов
+
+```bash
+# Настройка backup репозитория
+./bin/setup-backup.sh git@backup-server.com:backups/smartsoltech.git
+
+# Добавление в crontab
+crontab -e
+# Добавить: 0 2 * * * cd /path/to/smartsoltech.kr && ./update origin backup
+```
+
+### Backup базы данных
+
+```bash
+# Создание дампа БД
+docker-compose exec postgres_db pg_dump -U postgres smartsoltech > backup_$(date +%Y%m%d).sql
+
+# Восстановление из дампа
+docker-compose exec -i postgres_db psql -U postgres smartsoltech < backup_20231125.sql
+```
+
+### Backup медиафайлов
+
+```bash
+# Создание архива медиафайлов
+tar -czf media_backup_$(date +%Y%m%d).tar.gz smartsoltech/media/
+
+# Восстановление медиафайлов
+tar -xzf media_backup_20231125.tar.gz
+```
+
+## 🚨 Troubleshooting
+
+### Частые проблемы
+
+**1. Контейнер не запускается**
+```bash
+# Проверка логов
+./logs web
+
+# Пересборка образов
+./stop --clean
+./update
+```
+
+**2. Ошибки базы данных**
+```bash
+# Проверка подключения к БД
+./cli dbshell
+
+# Проверка миграций
+./cli showmigrations
+
+# Сброс миграций (ОСТОРОЖНО!)
+./cli migrate --fake-initial
+```
+
+**3. Проблемы с статическими файлами**
+```bash
+# Пересбор статики
+./cli collectstatic --clear
+
+# Проверка прав доступа
+./cli exec ls -la /app/smartsoltech/staticfiles/
+```
+
+### Логи для диагностики
+
+```bash
+# Django логи
+./logs web
+
+# База данных логи
+./logs db
+
+# Nginx логи (если используется)
+sudo tail -f /var/log/nginx/error.log
+
+# Системные логи
+sudo journalctl -u docker.service
+```
+
+## 📈 Оптимизация производительности
+
+### Настройки Django
+
+```python
+# smartsoltech/settings.py
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.postgresql',
+ 'OPTIONS': {
+ 'MAX_CONNS': 20,
+ 'conn_max_age': 600,
+ }
+ }
+}
+
+# Кэширование
+CACHES = {
+ 'default': {
+ 'BACKEND': 'django.core.cache.backends.redis.RedisCache',
+ 'LOCATION': 'redis://redis:6379/1',
+ }
+}
+```
+
+### Docker оптимизации
+
+```yaml
+# docker-compose.yml
+services:
+ web:
+ deploy:
+ resources:
+ limits:
+ memory: 512M
+ reservations:
+ memory: 256M
+```
+
+## 🔐 Безопасность
+
+### Основные рекомендации
+
+1. **Обновление системы:**
+ ```bash
+ sudo apt update && sudo apt upgrade
+ ```
+
+2. **Настройка Firewall:**
+ ```bash
+ sudo ufw enable
+ sudo ufw allow ssh
+ sudo ufw allow 80
+ sudo ufw allow 443
+ ```
+
+3. **Ограничение доступа к админке:**
+ ```python
+ # settings.py
+ ADMIN_URL = 'secret-admin-url/'
+ ```
+
+4. **Регулярные обновления:**
+ ```bash
+ # Еженедельное обновление
+ ./update
+ ```
+
+---
+
+🎯 **Следующие шаги**: [API документация](API.md) | [Управление скриптами](SCRIPTS_README.md)
\ No newline at end of file
diff --git a/endpoint_test.sh b/endpoint_test.sh
deleted file mode 100755
index 8d58394..0000000
--- a/endpoint_test.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-BASE_URL="http://localhost:8002/auth"
-EMAIL="testuser@example.com"
-PASSWORD="secret123"
-
-echo "1️⃣ Регистрация пользователя..."
-curl -s -X POST "$BASE_URL/register" \
- -H "Content-Type: application/json" \
- -d "{\"email\": \"$EMAIL\", \"password\": \"$PASSWORD\"}" | tee response_register.json
-echo -e "\n"
-
-USER_ID=$(jq .id response_register.json)
-
-echo "2️⃣ Аутентификация..."
-curl -s -X POST "$BASE_URL/login" \
- -H "Content-Type: application/json" \
- -d "{\"email\": \"$EMAIL\", \"password\": \"$PASSWORD\"}" | tee response_login.json
-echo -e "\n"
-
-TOKEN=$(jq -r .access_token response_login.json)
-
-echo "🔐 Получен токен: $TOKEN"
-AUTH_HEADER="Authorization: Bearer $TOKEN"
-
-echo "3️⃣ Получение текущего пользователя (/me)..."
-curl -s -X GET "$BASE_URL/me" -H "$AUTH_HEADER" | tee response_me.json
-echo -e "\n"
-
-echo "4️⃣ Получение списка всех пользователей..."
-curl -s -X GET "$BASE_URL/users" | tee response_users.json
-echo -e "\n"
-
-echo "5️⃣ Получение пользователя по ID ($USER_ID)..."
-curl -s -X GET "$BASE_URL/users/$USER_ID" | tee response_user.json
-echo -e "\n"
-
-echo "6️⃣ Обновление пользователя..."
-curl -s -X PUT "$BASE_URL/users/$USER_ID" \
- -H "Content-Type: application/json" \
- -d "{\"email\": \"updated_$EMAIL\", \"role\": \"admin\"}" | tee response_update.json
-echo -e "\n"
-
-echo "7️⃣ Удаление пользователя..."
-curl -s -X DELETE "$BASE_URL/users/$USER_ID" | tee response_delete.json
-echo -e "\n"
-
-echo "✅ Тест завершён."
diff --git a/loading_screen_fixed.html b/loading_screen_fixed.html
deleted file mode 100644
index c07b6aa..0000000
--- a/loading_screen_fixed.html
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
- Тест исправленного сайта SmartSolTech
-
-
-
- 🎉 Проблема с загрузочным экраном исправлена!
-
-
-
✅ Что было исправлено:
-
- - Синтаксические ошибки JavaScript: Исправлены проблемы с закрывающими скобками
- - Загрузочный экран: Теперь корректно скрывается через 0.5 секунды
- - Основная функциональность: Восстановлена работа тем, навигации и анимаций
- - Отладочный код: Удален лишний код, который вызывал проблемы
-
-
-
-
-
🧪 Тестирование:
-
Теперь сайт должен нормально загружаться. Проверьте следующие страницы:
-
-
🏠 Главная страница
-
🛠️ Страница услуг
-
ℹ️ О нас
-
-
Что проверить:
-
- - ✅ Загрузочный экран исчезает через полсекунды
- - ✅ Навигационные ссылки работают
- - ✅ Кнопки и интерактивные элементы кликабельны
- - ✅ Переключатель темы работает (если есть)
- - ✅ Модальное окно услуг открывается
- - ✅ QR-код генерация работает в модальном окне
-
-
-
-
-
🛠️ Техническая информация:
-
- - Проблема: Синтаксические ошибки в modern-scripts.js блокировали загрузку
- - Решение: Пересоздан упрощенный и стабильный JavaScript файл
- - Сохранена функциональность: Скрытие загрузочного экрана, переключение тем, плавная прокрутка, анимации
- - Удалено: Отладочный код, который вызывал конфликты
-
-
-
-
-
🚀 Сайт готов к использованию!
-
Все основные функции восстановлены, включая механизм QR-кода для заявок через Telegram бота.
-
-
-
\ No newline at end of file
diff --git a/QR_CODE_FEATURE_SUMMARY.md b/patch/QR_CODE_FEATURE_SUMMARY.md
similarity index 100%
rename from QR_CODE_FEATURE_SUMMARY.md
rename to patch/QR_CODE_FEATURE_SUMMARY.md
diff --git a/real_confirmation_process.html b/patch/real_confirmation_process.html
similarity index 100%
rename from real_confirmation_process.html
rename to patch/real_confirmation_process.html
diff --git a/qr_success_animation_demo.html b/qr_success_animation_demo.html
deleted file mode 100644
index 8efddd4..0000000
--- a/qr_success_animation_demo.html
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-
- ✨ Новая анимация успеха для заявок
-
-
-
- ✨ Улучшенная анимация подачи заявок
-
-
-
🎯 Что улучшено:
-
-
-
📐 QR-код отцентрирован
-
- - QR-код теперь идеально выровнен по центру поля
- - Фиксированный размер 200x200px для консистентности
- - Красивая рамка и отступы
-
-
-
-
-
🎬 Анимированная галочка успеха
-
- - После создания заявки появляется анимированная галочка ✓
- - Плавная анимация рисования круга и галочки
- - Профессиональный зеленый дизайн
-
-
-
-
-
⏱️ Автоматическое закрытие
-
- - Модальное окно автоматически закрывается через 6 секунд
- - 3 сек на QR-код → 3 сек на анимацию успеха → закрытие
- - Уведомление о успешной подаче заявки
-
-
-
-
-
-
🔄 Новый процесс подачи заявки:
-
-
- - Пользователь заполняет форму и нажимает "Отправить заявку"
- - Показывается индикатор загрузки "Отправляем..."
- - Появляется центрированный QR-код с кнопкой "Открыть в Telegram"
- - Через 3 секунды QR-код скрывается
- - Появляется анимированная галочка с сообщением "Заявка подана успешно!"
- - Через 3 секунды модальное окно автоматически закрывается
- - Показывается уведомление "Ожидайте подтверждения в Telegram"
-
-
-
-
-
🧪 Тестирование:
-
-
Перейдите на страницу услуг и попробуйте подать заявку:
-
-
- 🛠️ Тестировать на странице услуг
-
-
-
Что тестировать:
-
- - ✅ Заполните форму и отправьте заявку
- - ✅ Убедитесь, что QR-код отцентрирован
- - ✅ Подождите 3 секунды - должна появиться анимированная галочка
- - ✅ Подождите еще 3 секунды - окно должно закрыться автоматически
- - ✅ Должно появиться уведомление о успешной подаче
-
-
-
-
-
💻 Технические детали:
-
-
Добавленные компоненты:
-
- - CSS анимации: Keyframes для рисования галочки и круга
- - JavaScript таймеры: Координация показа QR → анимации → закрытия
- - Центрирование: Flexbox для идеального выравнивания
- - Сброс состояния: Очистка всех секций при закрытии модального окна
-
-
-
Файлы изменены:
-
- services_modern.html - обновлена структура модального окна
- modern-styles.css - добавлены анимации галочки
-
-
-
-
-
🎉 Результат:
-
Теперь процесс подачи заявки стал более интуитивным, визуально привлекательным и автоматизированным!
-
-
Пользователи получают четкую обратную связь на каждом этапе, а модальное окно автоматически закрывается, предотвращая накопление открытых окон.
-
-
-
\ No newline at end of file
diff --git a/smartsoltech/static/qr_codes/.gitkeep b/smartsoltech/static/qr_codes/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/test_links.html b/test_links.html
deleted file mode 100644
index 898bfd5..0000000
--- a/test_links.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
- Тест ссылок SmartSolTech
-
-
- Тестирование ссылок SmartSolTech
-
-
Основные страницы:
-
-
-
Инструкция:
-
- - Откройте каждую ссылку в новой вкладке
- - Проверьте, загружается ли страница
- - Попробуйте нажать на ссылки в навигации на каждой странице
- - Проверьте кнопки и интерактивные элементы
-
-
-
Что проверить на каждой странице:
-
- - Работают ли ссылки в навигационном меню
- - Работают ли кнопки (например, "Оставить заявку")
- - Исчезает ли загрузочный экран через несколько секунд
- - Работает ли переключатель темы
-
-
-
-
\ No newline at end of file
diff --git a/test_qr_functionality.html b/test_qr_functionality.html
deleted file mode 100644
index d9879bf..0000000
--- a/test_qr_functionality.html
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
- Тестирование QR-кода для заявок
-
-
-
- 🤖 Тестирование QR-кода и Telegram бота SmartSolTech
-
-
-
📋 Инструкции для тестирования
-
Что мы добавили:
-
- - ✅ QR-код генерацию в модальном окне заявок
- - ✅ Интеграция с Telegram ботом
- - ✅ Автоматическое создание заявки через форму
- - ✅ Подтверждение регистрации через Telegram
-
-
-
-
-
🔍 Тест-кейс 1: Создание заявки через модальное окно
-
-
-
Шаг 2:
-
Нажмите кнопку "Заказать услугу" под любой услугой
-
-
-
Шаг 3:
-
Заполните форму в модальном окне:
-
- - Имя: Тест
- - Фамилия: Пользователь
- - Email: test@example.com
- - Телефон: +7-123-456-7890
- - Описание: Тестовая заявка на услугу
-
-
-
-
Шаг 4:
-
Поставьте галочку согласия и нажмите "Отправить заявку"
-
-
-
Ожидаемый результат:
-
✅ Должен появиться QR-код для Telegram
-
✅ Кнопка "Открыть в Telegram" должна работать
-
-
-
-
-
🤖 Тест-кейс 2: Подтверждение через Telegram бота
-
-
Шаг 1:
-
Отсканируйте QR-код телефоном или нажмите кнопку "Открыть в Telegram"
-
-
-
Шаг 2:
-
Бот должен отправить команду /start с параметрами заявки
-
-
-
Шаг 3:
-
Нажмите "Start" в Telegram
-
-
-
Ожидаемый результат:
-
✅ Бот приветствует и подтверждает регистрацию
-
✅ Заявка получает статус "подтверждена"
-
✅ Клиент связывается с chat_id пользователя
-
-
-
-
-
⚠️ Возможные проблемы
-
- - QR-код не генерируется: Проверьте настройки Telegram бота в админке
- - Telegram бот не отвечает: Проверьте токен бота и что сервис telegram_bot запущен
- - Ошибка 500: Проверьте логи Django в консоли Docker
- - Ссылки не работают: Убедитесь, что JavaScript загружается корректно
-
-
-
-
-
-
-
🔧 Техническая информация
-
Новые компоненты:
-
- - QR-код секция: Добавлена в модальное окно services_modern.html
- - JavaScript: Обновлен для работы с generate_qr_code API
- - Backend: generate_qr_code view создает QR-код и заявку
- - Telegram интеграция: Обрабатывает /start команды с параметрами
-
-
-
Workflow:
-
- - Пользователь заполняет форму → JavaScript отправляет POST на /service/generate_qr_code/
- - Django создает Client, ServiceRequest и генерирует QR-код
- - Возвращается ссылка на Telegram бота с токеном
- - Пользователь сканирует QR или переходит по ссылке
- - Telegram бот обрабатывает /start команду и подтверждает заявку
-
-
-
-
\ No newline at end of file