7.8 KiB
7.8 KiB
Реорганизация проекта Whisper API Server
Обзор
Этот документ описывает реорганизацию проекта Whisper API Server с плоской структуры на архитектуру, основанную на доменах. Цель реорганизации - улучшить поддерживаемость, читаемость и масштабируемость кода.
Старая структура
app/
├── __init__.py
├── async_tasks.py
├── audio_processor.py
├── audio_sources.py
├── audio_utils.py
├── cache.py
├── context_managers.py
├── file_manager.py
├── history_logger.py
├── logging_config.py
├── request_logger.py
├── routes.py
├── transcriber_service.py
├── transcriber.py
├── utils.py
├── validators.py
└── static/
└── index.html
Новая структура
app/
├── __init__.py # Главный модуль приложения
├── api/ # Слой API
│ ├── __init__.py
│ ├── routes.py # Определения маршрутов API
│ └── middleware.py # Middleware для запросов/ответов
├── core/ # Основная бизнес-логика
│ ├── __init__.py
│ ├── transcriber.py # Основной сервис транскрибации
│ ├── transcription_service.py
│ └── config.py # Управление конфигурацией
├── audio/ # Домен обработки аудио
│ ├── __init__.py
│ ├── processor.py # Предобработка аудио
│ ├── sources.py # Обработчики источников аудио
│ └── utils.py # Утилиты для работы с аудио
├── infrastructure/ # Инфраструктурные сервисы
│ ├── __init__.py
│ ├── logging/ # Конфигурация логирования
│ │ ├── __init__.py
│ │ ├── config.py
│ │ └── request_logger.py
│ ├── storage/ # Управление файлами и кэшем
│ │ ├── __init__.py
│ │ ├── file_manager.py
│ │ └── cache.py
│ ├── async_tasks/ # Управление фоновыми задачами
│ │ ├── __init__.py
│ │ └── manager.py
│ └── validation/ # Валидация входных данных
│ ├── __init__.py
│ └── validators.py
├── shared/ # Общие утилиты
│ ├── __init__.py
│ ├── context_managers.py # Переиспользуемые контекстные менеджеры
│ ├── decorators.py # Общие декораторы
│ └── history_logger.py # Функциональность журналирования истории
└── static/ # Статические веб-ресурсы
└── index.html
Преимущества новой структуры
- Четкое разделение ответственности: Каждый модуль имеет одну, хорошо определенную зону ответственности
- Лучшая поддерживаемость: Поиск и изменение кода становится более интуитивным
- Улучшенная тестируемость: Тесты могут быть организованы по доменам
- Масштабируемость: Новые функции могут быть добавлены в соответствующие домены
- Снижение связанности: Зависимости между модулями становятся более явными
- Улучшенная читаемость: Организация кода отражает ментальную модель системы
Карта миграции файлов
| Старый файл | Новое расположение |
|---|---|
routes.py |
api/routes.py |
request_logger.py |
infrastructure/logging/request_logger.py |
transcriber.py |
core/transcriber.py |
transcriber_service.py |
core/transcription_service.py |
audio_processor.py |
audio/processor.py |
audio_sources.py |
audio/sources.py |
audio_utils.py |
audio/utils.py |
file_manager.py |
infrastructure/storage/file_manager.py |
cache.py |
infrastructure/storage/cache.py |
async_tasks.py |
infrastructure/async_tasks/manager.py |
validators.py |
infrastructure/validation/validators.py |
logging_config.py |
infrastructure/logging/config.py |
context_managers.py |
shared/context_managers.py |
utils.py |
shared/decorators.py |
history_logger.py |
shared/history_logger.py |
Процесс миграции
- Создание новой структуры: Созданы все новые директории с файлами
__init__.py - Миграция кода: Все файлы перемещены в новые расположения с обновленными импортами
- Документация: Весь код задокументирован на русском языке
- Тестирование: Убедитесь, что все функции работают корректно
Использование скрипта миграции
Для помощи в процессе миграции предоставлен скрипт migrate_to_new_structure.py:
# Запуск миграции
python migrate_to_new_structure.py
# Запуск миграции с последующим удалением старых файлов
python migrate_to_new_structure.py --cleanup
Обновление импортов
При переходе на новую структуру необходимо обновить импорты в вашем коде:
Примеры обновления импортов
# Старые импорты
from .transcriber import WhisperTranscriber
from .routes import Routes
from .validators import FileValidator
# Новые импорты
from .core.transcriber import WhisperTranscriber
from .api.routes import Routes
from .infrastructure.validation.validators import FileValidator
Тестирование
После миграции убедитесь, что:
- Приложение запускается без ошибок
- Все эндпоинты API работают корректно
- Функции транскрибации работают как ожидалось
- Логирование работает правильно
Возврат к старой структуре
Если возникнут проблемы с новой структурой, вы можете вернуться к старой:
- Восстановите файлы из директории
backup_old_structure/ - Удалите новые директории
- Проверьте, что все работает корректно
Заключение
Новая структура проекта обеспечивает лучшую организацию кода и упрощает его поддержку. Все функции сохранены, а код стал более читаемым и масштабируемым.