Spaces:
Running on Zero
Running on Zero
| # ===================================================== | |
| # Apckeyl Framework | |
| # Master Plan | |
| # Version 1.0 | |
| # ===================================================== | |
| # 1. МИССИЯ ПРОЕКТА | |
| Apckeyl Framework — модульная система для создания, | |
| обработки и автоматизации AI-контента. | |
| Главная задача Framework — объединить отдельные | |
| AI-инструменты и сервисы в единую управляемую систему. | |
| Framework должен использоваться для: | |
| - создания изображений; | |
| - создания видео; | |
| - улучшения изображений; | |
| - улучшения видео; | |
| - создания и сохранения персонажей; | |
| - подготовки контента для фотостоков; | |
| - подготовки контента для YouTube; | |
| - автоматизации повторяющихся операций; | |
| - управления очередями задач; | |
| - контроля доступных вычислительных ресурсов. | |
| Framework не должен зависеть от одного конкретного | |
| AI-сервиса, одной модели или одной вычислительной | |
| платформы. | |
| # 2. ОСНОВНОЙ АРХИТЕКТУРНЫЙ ПРИНЦИП | |
| Apckeyl Framework разделяется на: | |
| 1. управляющее ядро; | |
| 2. отдельные рабочие модули; | |
| 3. внешние вычислительные ресурсы; | |
| 4. интерфейсы пользователя; | |
| 5. системы хранения и управления результатами. | |
| Главный принцип: | |
| Управление отдельно. | |
| Вычисления отдельно. | |
| Orchestrator является управляющим центром. | |
| Рабочие модули выполняют конкретные задачи. | |
| # 3. ORCHESTRATOR | |
| Orchestrator — центральный управляющий компонент | |
| Apckeyl Framework. | |
| Orchestrator не обязан самостоятельно выполнять | |
| тяжёлые AI-вычисления. | |
| Его основная задача: | |
| - принимать задачи; | |
| - определять тип задачи; | |
| - выбирать подходящий рабочий модуль; | |
| - управлять очередью; | |
| - отслеживать состояние задач; | |
| - получать результаты; | |
| - передавать результаты следующим модулям; | |
| - контролировать доступные ресурсы; | |
| - вести журнал работы; | |
| - управлять подключёнными Space и другими исполнителями. | |
| Orchestrator должен оставаться максимально независимым | |
| от конкретных AI-моделей. | |
| # 4. РАБОЧИЕ МОДУЛИ | |
| Каждый рабочий модуль выполняет конкретную функцию. | |
| Модуль должен иметь возможность: | |
| - работать независимо; | |
| - тестироваться независимо; | |
| - обновляться независимо; | |
| - заменяться другим модулем; | |
| - подключаться к Orchestrator; | |
| - отключаться от Orchestrator без разрушения всей системы. | |
| Первым рабочим модулем Framework является: | |
| Apckeyl_RealESRGAN | |
| Его назначение: | |
| улучшение / увеличение изображений. | |
| # 5. MODULE 001 — APCKEYL_REALESRGAN | |
| Apckeyl_RealESRGAN является первым готовящимся | |
| рабочим модулем Apckeyl Framework. | |
| Существующий Space: | |
| Apckeyl_RealESRGAN | |
| Telegram-интерфейс: | |
| ApckeylBot | |
| Модуль не удаляется и не заменяется Orchestrator. | |
| Он сохраняется как самостоятельный рабочий компонент. | |
| В будущем Orchestrator сможет передавать ему задачи. | |
| Пример: | |
| Orchestrator | |
| ↓ | |
| Apckeyl_RealESRGAN | |
| ↓ | |
| обработанное изображение | |
| # 6. НЕЗАВИСИМОСТЬ МОДУЛЕЙ | |
| Apckeyl Framework не должен предполагать, | |
| что все модули находятся в одном Space. | |
| Разные модули могут использовать разные | |
| вычислительные ресурсы. | |
| Возможные исполнители: | |
| - Hugging Face Spaces; | |
| - Google Colab; | |
| - Kaggle; | |
| - локальный компьютер; | |
| - другие бесплатные или доступные вычислительные среды. | |
| Конкретный исполнитель выбирается архитектурой | |
| Framework в зависимости от задачи и доступных ресурсов. | |
| # 7. БЕСПЛАТНЫЕ РЕСУРСЫ | |
| При проектировании Framework приоритет отдаётся | |
| бесплатным вычислительным ресурсам. | |
| Платные сервисы не являются обязательной частью | |
| архитектуры. | |
| Если бесплатный ресурс становится недоступен, | |
| модуль должен по возможности иметь возможность | |
| перейти на другой совместимый ресурс. | |
| # 8. ПРИОРИТЕТ НАДЁЖНОСТИ | |
| Apckeyl Framework должен строиться таким образом, | |
| чтобы отказ одного рабочего модуля не приводил | |
| к отказу всей системы. | |
| Пример: | |
| Image Upscaler недоступен | |
| ↓ | |
| Orchestrator продолжает работать | |
| ↓ | |
| остальные модули остаются доступными. | |
| То же правило применяется к отдельным | |
| вычислительным платформам. | |
| # ===================================================== | |
| # END OF PART 1 | |
| # ===================================================== | |
| # ===================================================== | |
| # PART 2 | |
| # ARCHITECTURE OF APCKEYL FRAMEWORK | |
| # ===================================================== | |
| # 9. ОБЩАЯ СТРУКТУРА | |
| Apckeyl Framework состоит из управляющего ядра, | |
| рабочих модулей и вспомогательных систем. | |
| Общая концепция: | |
| Apckeyl Framework | |
| │ | |
| ├── Factory Core | |
| │ | |
| ├── Orchestrator | |
| │ | |
| ├── Image Generation | |
| │ | |
| ├── Video Generation | |
| │ | |
| ├── Story Character Studio | |
| │ | |
| ├── Image Upscaler | |
| │ | |
| ├── Video Upscaler | |
| │ | |
| ├── Stock Factory | |
| │ | |
| ├── Space Manager | |
| │ | |
| ├── Download Manager | |
| │ | |
| ├── Logger | |
| │ | |
| └── Resource Monitor | |
| # 10. FACTORY CORE | |
| Factory Core — базовая часть Framework. | |
| Она отвечает за общие правила работы системы. | |
| Factory Core не должен содержать код, | |
| относящийся только к одной конкретной AI-модели. | |
| Основные задачи: | |
| - единый формат задач; | |
| - единый формат результатов; | |
| - идентификаторы задач; | |
| - статусы задач; | |
| - передача задач между компонентами; | |
| - обработка ошибок; | |
| - базовые правила выполнения; | |
| - взаимодействие с Orchestrator. | |
| # 11. IMAGE GENERATION | |
| Модуль Image Generation предназначен | |
| для создания изображений. | |
| Возможные функции: | |
| - создание изображения по prompt; | |
| - создание серий изображений; | |
| - создание вариантов одного изображения; | |
| - использование reference images; | |
| - использование параметров стиля; | |
| - передача результата следующим модулям. | |
| Модуль не должен быть жёстко связан | |
| с одной конкретной моделью. | |
| В будущем допускается подключение | |
| разных генераторов. | |
| # 12. VIDEO GENERATION | |
| Модуль Video Generation предназначен | |
| для создания AI-видео. | |
| Возможные функции: | |
| - генерация коротких видеоклипов; | |
| - создание последовательностей; | |
| - обработка кадров; | |
| - объединение результатов; | |
| - передача видео следующим модулям. | |
| Конкретные модели и вычислительные платформы | |
| будут определяться отдельно. | |
| # 13. STORY CHARACTER STUDIO | |
| Story Character Studio — отдельная система | |
| для создания и сохранения персонажей. | |
| Основная задача: | |
| один персонаж → много сцен → единый образ. | |
| Для каждого персонажа Framework должен иметь | |
| отдельный идентификатор. | |
| Пример: | |
| Character ID: | |
| CHAR_0001 | |
| Персонаж может иметь: | |
| - имя; | |
| - описание; | |
| - reference images; | |
| - визуальные характеристики; | |
| - стиль; | |
| - одежду; | |
| - дополнительные параметры; | |
| - связанные модели или LoRA; | |
| - историю изменений. | |
| # 14. СОХРАНЕНИЕ ПЕРСОНАЖА | |
| Character Studio должен позволять использовать | |
| одного персонажа в разных генерациях. | |
| Пример: | |
| Character_0001 | |
| │ | |
| ├── Scene 001 | |
| ├── Scene 002 | |
| ├── Scene 003 | |
| ├── Scene 004 | |
| └── Scene 005 | |
| Главная цель — максимально возможная | |
| визуальная последовательность персонажа | |
| между различными изображениями и сценами. | |
| При этом Framework не должен обещать | |
| абсолютную идентичность персонажа, | |
| если используемая модель технически | |
| не обеспечивает такую возможность. | |
| # 15. IMAGE UPSCALER | |
| Image Upscaler предназначен для увеличения | |
| и улучшения изображений. | |
| Первый рабочий модуль этой категории: | |
| Apckeyl_RealESRGAN | |
| В будущем возможно подключение других | |
| upscaler-моделей. | |
| Orchestrator должен обращаться | |
| к модулю через единый интерфейс, | |
| а не зависеть от внутренней реализации | |
| конкретного upscaler. | |
| # 16. VIDEO UPSCALER | |
| Video Upscaler предназначен для: | |
| - увеличения разрешения видео; | |
| - улучшения отдельных кадров; | |
| - обработки последовательности кадров; | |
| - восстановления кадров; | |
| - подготовки видео к дальнейшему использованию. | |
| Возможная архитектура: | |
| Video | |
| ↓ | |
| Frame Extraction | |
| ↓ | |
| Frame Processing | |
| ↓ | |
| Frame Restoration | |
| ↓ | |
| Frame Interpolation | |
| ↓ | |
| Video Assembly | |
| # 17. STOCK FACTORY | |
| Stock Factory предназначен для подготовки | |
| AI-контента для коммерческого использования | |
| на стоковых площадках. | |
| Основные направления: | |
| - Adobe Stock; | |
| - Shutterstock; | |
| - Freepik; | |
| - Pond5; | |
| - другие совместимые площадки. | |
| Stock Factory может выполнять: | |
| - подготовку изображений; | |
| - подготовку видео; | |
| - проверку технических параметров; | |
| - создание названий; | |
| - создание описаний; | |
| - создание ключевых слов; | |
| - организацию файлов; | |
| - подготовку экспортных наборов. | |
| # 18. YOUTUBE FACTORY | |
| YouTube Factory предназначен для автоматизации | |
| создания видеоконтента. | |
| Планируемая цепочка: | |
| Idea | |
| ↓ | |
| Research | |
| ↓ | |
| Script | |
| ↓ | |
| Images | |
| ↓ | |
| Video Clips | |
| ↓ | |
| Voice | |
| ↓ | |
| Music | |
| ↓ | |
| Assembly | |
| ↓ | |
| Final Video | |
| YouTube Factory является отдельным направлением | |
| Framework и не должен быть жёстко связан | |
| с Telegram. | |
| # 19. SPACE MANAGER | |
| Space Manager отвечает за управление | |
| внешними вычислительными исполнителями. | |
| Возможные функции: | |
| - список доступных Spaces; | |
| - состояние Space; | |
| - доступность Space; | |
| - тип выполняемых задач; | |
| - запуск задачи; | |
| - получение результата; | |
| - обработка недоступности; | |
| - переключение на другой исполнитель. | |
| # 20. DOWNLOAD MANAGER | |
| Download Manager отвечает за получение | |
| и организацию результатов. | |
| Основные задачи: | |
| - загрузка файлов; | |
| - проверка целостности; | |
| - временное хранение; | |
| - переименование; | |
| - организация каталогов; | |
| - передача результата следующему модулю; | |
| - подготовка файлов к выдаче пользователю. | |
| # 21. LOGGER | |
| Logger является общей системой журналирования. | |
| Он должен фиксировать: | |
| - запуск Framework; | |
| - создание задачи; | |
| - изменение статуса; | |
| - запуск модуля; | |
| - завершение модуля; | |
| - ошибки; | |
| - время выполнения; | |
| - источник задачи; | |
| - результат задачи. | |
| Логи должны быть пригодны как для | |
| диагностики, так и для анализа производительности. | |
| # 22. RESOURCE MONITOR | |
| Resource Monitor отслеживает доступные | |
| вычислительные ресурсы. | |
| Возможные параметры: | |
| - CPU; | |
| - RAM; | |
| - GPU; | |
| - VRAM; | |
| - свободное место; | |
| - состояние внешнего исполнителя; | |
| - доступность API; | |
| - время ожидания. | |
| Resource Monitor не должен предполагать, | |
| что GPU всегда существует. | |
| Система должна нормально работать | |
| в CPU-only окружении. | |
| # ===================================================== | |
| # END OF PART 2 | |
| # ===================================================== | |
| # ===================================================== | |
| # PART 3 | |
| # MODULE SYSTEM AND COMMUNICATION | |
| # ===================================================== | |
| # 23. МОДУЛЬНАЯ АРХИТЕКТУРА | |
| Каждый рабочий компонент Apckeyl Framework | |
| рассматривается как отдельный модуль. | |
| Модуль должен иметь: | |
| - собственное назначение; | |
| - собственный код; | |
| - собственные зависимости; | |
| - собственную конфигурацию; | |
| - собственный жизненный цикл; | |
| - собственные тесты; | |
| - собственную версию. | |
| Модуль не должен требовать изменения | |
| всей системы при своём обновлении. | |
| # 24. НЕЗАВИСИМОСТЬ МОДУЛЕЙ | |
| Главный принцип: | |
| Module Independence | |
| Если один модуль изменяется, остальные | |
| модули должны продолжать работать. | |
| Например: | |
| Apckeyl_RealESRGAN | |
| ↓ | |
| Version 1.1 | |
| ↓ | |
| другие модули не изменяются. | |
| # 25. ИНТЕРФЕЙС МЕЖДУ МОДУЛЯМИ | |
| Orchestrator не должен зависеть от внутреннего | |
| кода рабочего модуля. | |
| Вместо этого используется единый интерфейс. | |
| Упрощённая схема: | |
| Task | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Module Interface | |
| ↓ | |
| Worker Module | |
| # 26. ЕДИНЫЙ ФОРМАТ ЗАДАЧИ | |
| В будущем Framework должен использовать | |
| единый объект задачи. | |
| Примерная структура: | |
| Task | |
| │ | |
| ├── task_id | |
| ├── task_type | |
| ├── priority | |
| ├── input | |
| ├── parameters | |
| ├── target_module | |
| ├── status | |
| └── output | |
| # 27. ИДЕНТИФИКАТОР ЗАДАЧИ | |
| Каждая задача получает уникальный идентификатор. | |
| Пример: | |
| TASK_000001 | |
| Идентификатор используется для: | |
| - отслеживания; | |
| - очереди; | |
| - логирования; | |
| - поиска результата; | |
| - диагностики ошибок. | |
| # 28. СТАТУСЫ ЗАДАЧИ | |
| Базовые состояния: | |
| CREATED | |
| QUEUED | |
| RUNNING | |
| COMPLETED | |
| FAILED | |
| CANCELLED | |
| В будущем могут добавляться | |
| дополнительные состояния. | |
| # 29. ПРИОРИТЕТЫ | |
| Задачи могут иметь приоритет. | |
| Пример: | |
| LOW | |
| NORMAL | |
| HIGH | |
| CRITICAL | |
| По умолчанию используется: | |
| NORMAL | |
| # 30. ЖИЗНЕННЫЙ ЦИКЛ ЗАДАЧИ | |
| Общий жизненный цикл: | |
| CREATED | |
| ↓ | |
| QUEUED | |
| ↓ | |
| RUNNING | |
| ↓ | |
| COMPLETED | |
| При ошибке: | |
| RUNNING | |
| ↓ | |
| FAILED | |
| При отмене: | |
| QUEUED / RUNNING | |
| ↓ | |
| CANCELLED | |
| # 31. ОЧЕРЕДЬ | |
| Очередь является общей частью Framework. | |
| Она должна позволять: | |
| - принимать множество задач; | |
| - хранить порядок выполнения; | |
| - учитывать приоритет; | |
| - ограничивать количество одновременно | |
| выполняемых задач; | |
| - отслеживать состояние каждой задачи. | |
| Очередь не должна быть жёстко связана | |
| с конкретной AI-моделью. | |
| # 32. ROUTING | |
| Orchestrator должен определять, | |
| какой модуль способен выполнить задачу. | |
| Пример: | |
| task_type = IMAGE_UPSCALE | |
| ↓ | |
| Module Router | |
| ↓ | |
| Apckeyl_RealESRGAN | |
| Другой пример: | |
| task_type = IMAGE_GENERATION | |
| ↓ | |
| Module Router | |
| ↓ | |
| Image Generation Module | |
| # 33. FALLBACK | |
| Если основной исполнитель недоступен, | |
| Framework должен по возможности использовать | |
| альтернативный исполнитель. | |
| Пример: | |
| Primary Worker | |
| ↓ | |
| unavailable | |
| ↓ | |
| Fallback Worker | |
| Fallback не должен использоваться автоматически, | |
| если альтернативный исполнитель несовместим | |
| с задачей. | |
| # 34. ВНЕШНИЕ ВЫЧИСЛИТЕЛЬНЫЕ РЕСУРСЫ | |
| Рабочий модуль может находиться | |
| на отдельной платформе. | |
| Пример: | |
| Orchestrator | |
| │ | |
| ├── Hugging Face Space | |
| │ | |
| ├── Google Colab | |
| │ | |
| ├── Kaggle | |
| │ | |
| └── Local Computer | |
| Framework не должен предполагать, | |
| что все исполнители работают одновременно. | |
| # 35. HUGGING FACE SPACE | |
| Hugging Face Space рассматривается | |
| как один из возможных исполнителей. | |
| Space не является обязательным | |
| центром всей системы. | |
| Если конкретный Space недоступен, | |
| Orchestrator должен по возможности | |
| использовать другой исполнитель. | |
| # 36. APCKEYL_REALESRGAN КАК МОДУЛЬ | |
| Существующий: | |
| Apckeyl_RealESRGAN | |
| сохраняется независимо. | |
| Он не должен быть переписан | |
| только ради подключения к Orchestrator. | |
| Сначала модуль должен оставаться | |
| самостоятельным рабочим приложением. | |
| После этого создаётся адаптер, | |
| позволяющий Orchestrator обращаться | |
| к нему. | |
| # 37. АДАПТЕРЫ | |
| Adapter используется для подключения | |
| существующего модуля к Framework. | |
| Схема: | |
| Orchestrator | |
| ↓ | |
| Adapter | |
| ↓ | |
| Worker Module | |
| Преимущество Adapter: | |
| Orchestrator не должен знать, | |
| как именно внутри работает конкретный модуль. | |
| # 38. TELEGRAM | |
| Telegram является одним из интерфейсов | |
| Apckeyl Framework. | |
| Основная схема: | |
| User | |
| ↓ | |
| Telegram | |
| ↓ | |
| ApckeylBot | |
| ↓ | |
| Telegram Controller | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Worker Module | |
| Telegram не должен содержать | |
| логику конкретной AI-модели. | |
| Telegram отвечает преимущественно | |
| за взаимодействие с пользователем. | |
| # 39. НЕЗАВИСИМОСТЬ TELEGRAM | |
| В будущем Framework должен позволять | |
| использовать Orchestrator без Telegram. | |
| Например: | |
| Web | |
| ↓ | |
| Orchestrator | |
| или: | |
| API | |
| ↓ | |
| Orchestrator | |
| или: | |
| Telegram | |
| ↓ | |
| Orchestrator | |
| Таким образом Telegram является | |
| интерфейсом, а не ядром Framework. | |
| # 40. API | |
| В будущем Orchestrator может предоставить | |
| унифицированный API. | |
| API позволит внешним приложениям | |
| создавать задачи. | |
| Пример: | |
| External Application | |
| ↓ | |
| API | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Module | |
| # 41. ХРАНЕНИЕ РЕЗУЛЬТАТОВ | |
| Результат задачи должен быть отделён | |
| от процесса выполнения. | |
| Пример: | |
| Task | |
| ↓ | |
| Worker | |
| ↓ | |
| Result | |
| ↓ | |
| Download Manager | |
| Результат должен иметь связь | |
| с идентификатором исходной задачи. | |
| # 42. ОБЩИЙ ПРИНЦИП | |
| Вся система должна строиться | |
| по следующей логике: | |
| Interface | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Queue | |
| ↓ | |
| Router | |
| ↓ | |
| Adapter | |
| ↓ | |
| Worker | |
| ↓ | |
| Result | |
| ↓ | |
| Storage | |
| ↓ | |
| User | |
| # ===================================================== | |
| # END OF PART 3 | |
| # ===================================================== | |
| # ===================================================== | |
| # PART 4 | |
| # CONTENT FACTORIES | |
| # ===================================================== | |
| # 43. CONTENT FACTORY CONCEPT | |
| Apckeyl Framework должен поддерживать | |
| не только отдельные AI-операции, | |
| но и последовательности операций. | |
| Такая последовательность называется | |
| Content Factory. | |
| Content Factory объединяет несколько | |
| рабочих модулей в один рабочий процесс. | |
| Пример: | |
| Input | |
| ↓ | |
| Generation | |
| ↓ | |
| Processing | |
| ↓ | |
| Quality Check | |
| ↓ | |
| Metadata | |
| ↓ | |
| Export | |
| # 44. STOCK FACTORY | |
| Stock Factory является специализированным | |
| рабочим процессом для подготовки контента | |
| для стоковых площадок. | |
| Основные цели: | |
| - создание коммерчески пригодного контента; | |
| - техническая подготовка; | |
| - организация файлов; | |
| - подготовка метаданных; | |
| - подготовка экспортных наборов. | |
| # 45. STOCK FACTORY — IMAGE WORKFLOW | |
| Пример рабочего процесса: | |
| Idea | |
| ↓ | |
| Prompt | |
| ↓ | |
| Image Generation | |
| ↓ | |
| Quality Check | |
| ↓ | |
| Image Upscale | |
| ↓ | |
| Technical Check | |
| ↓ | |
| Title | |
| ↓ | |
| Description | |
| ↓ | |
| Keywords | |
| ↓ | |
| Export | |
| # 46. STOCK FACTORY — VIDEO WORKFLOW | |
| Пример: | |
| Idea | |
| ↓ | |
| Prompt | |
| ↓ | |
| Video Generation | |
| ↓ | |
| Frame Processing | |
| ↓ | |
| Video Upscale | |
| ↓ | |
| Quality Check | |
| ↓ | |
| Metadata | |
| ↓ | |
| Export | |
| # 47. STOCK QUALITY CONTROL | |
| Stock Factory должна иметь отдельный | |
| этап технической проверки. | |
| Возможные проверки: | |
| - разрешение; | |
| - формат файла; | |
| - размер файла; | |
| - повреждение файла; | |
| - наличие артефактов; | |
| - соответствие заданным параметрам; | |
| - продолжительность видео; | |
| - частота кадров; | |
| - технические ограничения конкретной площадки. | |
| Конкретные требования площадок должны | |
| храниться отдельно от основного кода Framework. | |
| # 48. STOCK METADATA | |
| Metadata Factory должна уметь формировать: | |
| - Title; | |
| - Description; | |
| - Keywords; | |
| - Categories; | |
| - дополнительные поля при необходимости. | |
| Метаданные должны быть связаны | |
| с конкретным файлом или задачей. | |
| # 49. STOCK PLATFORM PROFILES | |
| Для разных площадок могут использоваться | |
| отдельные профили. | |
| Пример: | |
| Adobe Stock Profile | |
| Shutterstock Profile | |
| Freepik Profile | |
| Pond5 Profile | |
| Каждый профиль может содержать | |
| собственные технические требования. | |
| Это позволяет изменять требования | |
| одной площадки без изменения всей системы. | |
| # 50. ЛИЦЕНЗИОННАЯ ПРОВЕРКА | |
| При использовании AI-моделей и сервисов | |
| Framework должен учитывать лицензионные | |
| ограничения. | |
| Для каждого используемого AI-компонента | |
| желательно фиксировать: | |
| - название модели; | |
| - версию; | |
| - лицензию; | |
| - разрешено ли коммерческое использование; | |
| - разрешено ли использование для YouTube; | |
| - разрешена ли продажа результата; | |
| - дополнительные ограничения. | |
| Framework должен отдавать предпочтение | |
| моделям и инструментам, которые разрешают | |
| коммерческое использование, когда это возможно. | |
| # 51. LICENSE CHECK | |
| Для проекта должна существовать отдельная | |
| документация лицензионной проверки. | |
| Рекомендуемый файл: | |
| LICENSE_CHECK.md | |
| Пример записи: | |
| Model: | |
| Version: | |
| License: | |
| Commercial use allowed: | |
| YouTube allowed: | |
| Sale allowed: | |
| Notes: | |
| # 52. YOUTUBE FACTORY | |
| YouTube Factory является отдельной | |
| Content Factory. | |
| Основная задача — автоматизация | |
| создания видеоконтента. | |
| Общая схема: | |
| Topic | |
| ↓ | |
| Research | |
| ↓ | |
| Script | |
| ↓ | |
| Visual Plan | |
| ↓ | |
| Image Generation | |
| ↓ | |
| Video Generation | |
| ↓ | |
| Voice | |
| ↓ | |
| Music | |
| ↓ | |
| Assembly | |
| ↓ | |
| Quality Check | |
| ↓ | |
| Final Video | |
| # 53. YOUTUBE SCRIPT | |
| Script является отдельным объектом Framework. | |
| Он должен иметь собственный идентификатор. | |
| Пример: | |
| SCRIPT_000001 | |
| Сценарий может содержать: | |
| - title; | |
| - hook; | |
| - sections; | |
| - narration; | |
| - visual instructions; | |
| - timing; | |
| - keywords; | |
| - metadata. | |
| # 54. YOUTUBE VISUAL PIPELINE | |
| Для каждой части сценария | |
| может создаваться отдельный visual task. | |
| Пример: | |
| Scene 001 | |
| ↓ | |
| Image / Video | |
| ↓ | |
| Processing | |
| Scene 002 | |
| ↓ | |
| Image / Video | |
| ↓ | |
| Processing | |
| # 55. YOUTUBE VOICE | |
| Voice является отдельным этапом. | |
| Framework не должен быть жёстко связан | |
| с одним конкретным сервисом синтеза речи. | |
| В будущем можно подключать | |
| разных исполнителей. | |
| Схема: | |
| Script | |
| ↓ | |
| Voice Adapter | |
| ↓ | |
| TTS Worker | |
| ↓ | |
| Audio | |
| # 56. YOUTUBE ASSEMBLY | |
| Финальная сборка должна выполняться | |
| отдельным компонентом. | |
| Он может объединять: | |
| - narration; | |
| - images; | |
| - video clips; | |
| - music; | |
| - subtitles; | |
| - transitions; | |
| - timing. | |
| Сборщик не должен зависеть | |
| от конкретного генератора изображений. | |
| # 57. CHARACTER STUDIO | |
| Story Character Studio является | |
| отдельной Content Factory. | |
| Его задача — поддерживать | |
| последовательность персонажей | |
| в серии изображений и видео. | |
| # 58. CHARACTER PROFILE | |
| Каждый персонаж получает профиль. | |
| Пример: | |
| Character ID: | |
| CHAR_0001 | |
| Name: | |
| Example Character | |
| Description: | |
| ... | |
| Reference Images: | |
| ... | |
| Style: | |
| ... | |
| Clothing: | |
| ... | |
| Additional Parameters: | |
| ... | |
| # 59. CHARACTER GENERATION | |
| При создании новой сцены | |
| Framework должен использовать | |
| профиль персонажа. | |
| Пример: | |
| Character Profile | |
| + | |
| Scene Prompt | |
| + | |
| Reference | |
| ↓ | |
| Image Generation | |
| # 60. CHARACTER CONSISTENCY | |
| Character Studio должен стремиться | |
| к сохранению: | |
| - внешности; | |
| - основных черт лица; | |
| - причёски; | |
| - одежды при необходимости; | |
| - визуального стиля; | |
| - характерных особенностей. | |
| Результат зависит от возможностей | |
| конкретной модели. | |
| Framework не должен гарантировать | |
| идеальную идентичность, | |
| если модель её технически | |
| не обеспечивает. | |
| # 61. FACTORY COMPOSITION | |
| Несколько Content Factory | |
| могут использовать один и тот же модуль. | |
| Например: | |
| Image Generation | |
| ↑ | |
| │ | |
| ┌─────┴─────┐ | |
| │ │ | |
| Stock Factory YouTube Factory | |
| И: | |
| Image Upscaler | |
| ↑ | |
| │ | |
| ┌─────┴─────┐ | |
| │ │ | |
| Stock Factory YouTube Factory | |
| # 62. ПОВТОРНОЕ ИСПОЛЬЗОВАНИЕ | |
| Модули должны быть максимально | |
| многоразовыми. | |
| Один рабочий модуль может использоваться | |
| в нескольких сценариях. | |
| Например: | |
| Apckeyl_RealESRGAN | |
| может использоваться: | |
| Stock Factory | |
| + | |
| YouTube Factory | |
| + | |
| Personal Image Workflow | |
| # 63. CONTENT FACTORY PRINCIPLE | |
| Content Factory не должна владеть | |
| конкретными AI-моделями. | |
| Она описывает: | |
| что необходимо сделать. | |
| Orchestrator определяет: | |
| кто это сделает. | |
| Worker Module выполняет: | |
| конкретную операцию. | |
| # 64. ОБЩАЯ ЦЕПОЧКА | |
| Таким образом: | |
| Content Factory | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Task Queue | |
| ↓ | |
| Router | |
| ↓ | |
| Adapter | |
| ↓ | |
| Worker | |
| ↓ | |
| Result | |
| ↓ | |
| Content Factory | |
| # ===================================================== | |
| # END OF PART 4 | |
| # ===================================================== | |
| # ===================================================== | |
| # PART 5 | |
| # RESOURCE AND EXECUTION ARCHITECTURE | |
| # ===================================================== | |
| # 65. EXECUTION LAYER | |
| Execution Layer — уровень, на котором | |
| фактически выполняются рабочие задачи. | |
| Orchestrator не обязан выполнять | |
| AI-вычисления самостоятельно. | |
| Он передаёт задачу подходящему | |
| исполнителю. | |
| # 66. WORKER CONCEPT | |
| Worker — конкретный исполнитель задачи. | |
| Worker может находиться: | |
| - в Hugging Face Space; | |
| - в Google Colab; | |
| - в Kaggle; | |
| - на локальном компьютере; | |
| - на другом совместимом сервере. | |
| Worker получает задачу и возвращает результат. | |
| # 67. РАЗДЕЛЕНИЕ УПРАВЛЕНИЯ И ВЫЧИСЛЕНИЙ | |
| Основная схема: | |
| User | |
| ↓ | |
| Interface | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Execution Layer | |
| ↓ | |
| Worker | |
| ↓ | |
| Result | |
| Orchestrator отвечает за управление. | |
| Worker отвечает за выполнение. | |
| # 68. RESOURCE PROVIDER | |
| Каждый вычислительный ресурс рассматривается | |
| как Resource Provider. | |
| Пример: | |
| Hugging Face | |
| Google Colab | |
| Kaggle | |
| Local Machine | |
| Resource Provider может предоставлять: | |
| - CPU; | |
| - GPU; | |
| - RAM; | |
| - VRAM; | |
| - дисковое пространство; | |
| - сетевой доступ. | |
| # 69. RESOURCE PROFILE | |
| Для каждого исполнителя Framework должен | |
| хранить профиль. | |
| Пример: | |
| Resource ID: | |
| RESOURCE_0001 | |
| Provider: | |
| Hugging Face | |
| Type: | |
| Space | |
| Hardware: | |
| CPU / GPU | |
| Status: | |
| AVAILABLE / BUSY / OFFLINE | |
| # 70. ЗАДАЧИ И ТРЕБОВАНИЯ К РЕСУРСАМ | |
| Каждая задача может иметь требования | |
| к вычислительному ресурсу. | |
| Например: | |
| Image Upscale | |
| CPU: | |
| допустимо | |
| GPU: | |
| желательно | |
| Другой пример: | |
| AI Video Generation | |
| CPU: | |
| недостаточно | |
| GPU: | |
| требуется | |
| Orchestrator должен учитывать | |
| эти требования при выборе Worker. | |
| # 71. RESOURCE MATCHING | |
| Общий принцип: | |
| Task Requirements | |
| + | |
| Resource Profile | |
| ↓ | |
| Resource Matching | |
| ↓ | |
| Worker | |
| Orchestrator выбирает исполнителя, | |
| который соответствует требованиям задачи. | |
| # 72. RESOURCE PRIORITY | |
| Если несколько исполнителей | |
| подходят для задачи, Orchestrator | |
| может использовать приоритеты. | |
| Например: | |
| 1. Free | |
| 2. Available | |
| 3. Подходящее оборудование | |
| 4. Минимальная очередь | |
| 5. Минимальное время ожидания | |
| Конкретный алгоритм будет определён | |
| на более позднем этапе разработки. | |
| # 73. RESOURCE HEALTH | |
| Перед отправкой задачи Worker | |
| желательно проверить его состояние. | |
| Возможные состояния: | |
| AVAILABLE | |
| BUSY | |
| STARTING | |
| OFFLINE | |
| ERROR | |
| UNKNOWN | |
| # 74. RESOURCE HEALTH CHECK | |
| Health Check может проверять: | |
| - доступность Worker; | |
| - доступность API; | |
| - возможность принять задачу; | |
| - состояние процесса; | |
| - наличие свободных ресурсов; | |
| - время последнего ответа. | |
| # 75. ZEROGPU | |
| ZeroGPU рассматривается как один | |
| из вариантов вычислительной среды, | |
| а не как фундамент Framework. | |
| Ограничения конкретной платформы | |
| не должны определять архитектуру | |
| всей системы. | |
| Если конкретный ресурс недоступен | |
| или имеет неподходящий режим работы, | |
| Framework должен по возможности | |
| использовать другой Resource Provider. | |
| # 76. HUGGING FACE | |
| Hugging Face Spaces остаются | |
| одним из потенциальных исполнителей | |
| для отдельных рабочих модулей. | |
| При этом Framework не должен | |
| предполагать наличие одного | |
| определённого типа Hardware. | |
| Каждый Space рассматривается | |
| индивидуально. | |
| # 77. GOOGLE COLAB | |
| Google Colab может использоваться | |
| как временный вычислительный Worker. | |
| Подходящий сценарий: | |
| Orchestrator | |
| ↓ | |
| Colab Worker | |
| ↓ | |
| Heavy AI Task | |
| ↓ | |
| Result | |
| Конкретная реализация автоматического | |
| управления Colab будет определена | |
| отдельно. | |
| # 78. KAGGLE | |
| Kaggle может использоваться | |
| как дополнительный вычислительный | |
| ресурс для задач, требующих GPU. | |
| Kaggle не является обязательной | |
| частью Framework. | |
| Он рассматривается как один | |
| из возможных Resource Providers. | |
| # 79. LOCAL WORKER | |
| Локальный компьютер пользователя | |
| может выступать Worker. | |
| Пример: | |
| Orchestrator | |
| ↓ | |
| Local Worker | |
| ↓ | |
| CPU Processing | |
| ↓ | |
| Result | |
| Это особенно полезно для задач, | |
| которые не требуют удалённого GPU. | |
| # 80. RESOURCE FALLBACK | |
| Если основной Worker недоступен: | |
| Primary Worker | |
| ↓ | |
| ERROR | |
| ↓ | |
| Resource Manager | |
| ↓ | |
| Alternative Worker | |
| Fallback выполняется только тогда, | |
| когда альтернативный Worker | |
| совместим с задачей. | |
| # 81. RESOURCE COST | |
| Framework должен учитывать стоимость | |
| использования ресурса. | |
| На первом этапе приоритет: | |
| FREE | |
| Платные ресурсы не являются | |
| обязательными. | |
| Если в будущем появятся платные | |
| варианты, они должны быть явно | |
| отделены от бесплатных. | |
| # 82. RESOURCE LIMITS | |
| Каждый Worker может иметь ограничения: | |
| - максимальный размер файла; | |
| - максимальное количество задач; | |
| - ограничение времени; | |
| - ограничение RAM; | |
| - ограничение GPU; | |
| - ограничение VRAM; | |
| - ограничение дискового пространства; | |
| - ограничение сетевого доступа. | |
| Orchestrator должен учитывать | |
| эти ограничения. | |
| # 83. EXECUTION RETRY | |
| При временной ошибке Worker | |
| задача может быть повторена. | |
| Пример: | |
| RUNNING | |
| ↓ | |
| TEMPORARY ERROR | |
| ↓ | |
| RETRY | |
| ↓ | |
| RUNNING | |
| Количество повторов должно | |
| контролироваться настройками Framework. | |
| # 84. EXECUTION TIMEOUT | |
| Для каждой задачи может существовать | |
| максимальное время ожидания. | |
| Если Worker не отвечает | |
| в установленный срок: | |
| TIMEOUT | |
| ↓ | |
| Worker marked as ERROR | |
| ↓ | |
| Fallback / Retry | |
| # 85. РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ | |
| Worker должен возвращать | |
| структурированный результат. | |
| Пример: | |
| Result | |
| │ | |
| ├── task_id | |
| ├── status | |
| ├── output | |
| ├── metadata | |
| ├── execution_time | |
| └── error | |
| # 86. ОШИБКИ WORKER | |
| Ошибка Worker не должна | |
| автоматически приводить | |
| к остановке Orchestrator. | |
| Принцип: | |
| Worker Error | |
| ↓ | |
| Error Handler | |
| ↓ | |
| Logger | |
| ↓ | |
| Retry / Fallback / Failed | |
| # 87. РАЗДЕЛЕНИЕ РЕСУРСОВ | |
| Framework должен разделять: | |
| Management Layer | |
| │ | |
| ▼ | |
| Orchestrator | |
| │ | |
| ▼ | |
| Execution Layer | |
| │ | |
| ┌─────┼─────┐ | |
| ▼ ▼ ▼ | |
| HF Colab Kaggle | |
| │ | |
| ▼ | |
| Local Worker | |
| Это позволяет менять вычислительные | |
| ресурсы без изменения основной | |
| логики Framework. | |
| # 88. ГЛАВНЫЙ ПРИНЦИП EXECUTION LAYER | |
| Apckeyl Framework не должен зависеть | |
| от конкретного оборудования. | |
| Главное: | |
| Task | |
| ↓ | |
| Requirements | |
| ↓ | |
| Suitable Resource | |
| ↓ | |
| Worker | |
| ↓ | |
| Result | |
| # ===================================================== | |
| # END OF PART 5 | |
| # ===================================================== | |
| # ===================================================== | |
| # PART 6 | |
| # DATA, FILES AND SECURITY | |
| # ===================================================== | |
| # 89. DATA LAYER | |
| Data Layer отвечает за хранение | |
| информации, необходимой Framework. | |
| К данным относятся: | |
| - задачи; | |
| - результаты; | |
| - настройки; | |
| - персонажи; | |
| - prompts; | |
| - сценарии; | |
| - metadata; | |
| - логи; | |
| - профили ресурсов; | |
| - информация о модулях. | |
| # 90. TASK DATA | |
| Для каждой задачи желательно хранить: | |
| task_id | |
| task_type | |
| created_at | |
| started_at | |
| completed_at | |
| status | |
| priority | |
| input | |
| parameters | |
| target_module | |
| worker | |
| output | |
| error | |
| # 91. FILE MANAGEMENT | |
| Файлы должны обрабатываться | |
| через единый механизм. | |
| Framework должен уметь: | |
| - принимать файл; | |
| - определять тип; | |
| - проверять размер; | |
| - создавать временную копию; | |
| - передавать файл Worker; | |
| - получать результат; | |
| - сохранять результат; | |
| - удалять временные файлы. | |
| # 92. FILE IDENTIFICATION | |
| Каждый важный файл должен иметь | |
| связь с задачей. | |
| Пример: | |
| TASK_000001 | |
| ↓ | |
| input.jpg | |
| ↓ | |
| output.png | |
| Это позволяет восстановить | |
| историю обработки. | |
| # 93. TEMPORARY FILES | |
| Временные файлы должны храниться | |
| отдельно от постоянных результатов. | |
| Пример: | |
| /temp | |
| /output | |
| /archive | |
| После завершения задачи | |
| временные файлы могут удаляться, | |
| если они больше не нужны. | |
| # 94. OUTPUT ORGANIZATION | |
| Результаты должны организовываться | |
| по проектам и задачам. | |
| Пример: | |
| output/ | |
| project_001/ | |
| task_000001/ | |
| task_000002/ | |
| project_002/ | |
| task_000003/ | |
| Конкретная файловая структура | |
| будет определена при реализации. | |
| # 95. PROJECT | |
| Framework должен поддерживать | |
| понятие Project. | |
| Project объединяет связанные задачи. | |
| Пример: | |
| PROJECT_0001 | |
| │ | |
| ├── Images | |
| ├── Videos | |
| ├── Prompts | |
| ├── Metadata | |
| └── Results | |
| # 96. PROMPT DATA | |
| Prompts должны рассматриваться | |
| как отдельные данные. | |
| Для prompt желательно хранить: | |
| - prompt_id; | |
| - текст; | |
| - тип; | |
| - проект; | |
| - персонажа; | |
| - модель; | |
| - параметры; | |
| - дату создания; | |
| - версию. | |
| # 97. PROMPT VERSIONING | |
| Изменение важного prompt | |
| не должно автоматически уничтожать | |
| предыдущую версию. | |
| Пример: | |
| PROMPT_0001 | |
| ↓ | |
| Version 1 | |
| ↓ | |
| Version 2 | |
| ↓ | |
| Version 3 | |
| Это позволит возвращаться | |
| к удачным вариантам. | |
| # 98. CHARACTER DATA | |
| Профиль персонажа должен | |
| храниться отдельно от конкретной задачи. | |
| Пример: | |
| characters/ | |
| CHAR_0001/ | |
| profile | |
| references | |
| metadata | |
| Это позволяет использовать | |
| одного персонажа в нескольких проектах. | |
| # 99. PROJECT DATA SEPARATION | |
| Данные разных проектов | |
| не должны смешиваться. | |
| Пример: | |
| Project A | |
| ↓ | |
| Characters | |
| Prompts | |
| Results | |
| Project B | |
| ↓ | |
| Characters | |
| Prompts | |
| Results | |
| # 100. METADATA | |
| Metadata может включать: | |
| - название; | |
| - описание; | |
| - ключевые слова; | |
| - категории; | |
| - технические параметры; | |
| - источник; | |
| - модель; | |
| - версию; | |
| - дату создания. | |
| # 101. MODEL INFORMATION | |
| Для каждого AI-компонента | |
| желательно сохранять: | |
| model_name | |
| model_version | |
| provider | |
| license | |
| source | |
| parameters | |
| Это позволит отслеживать, | |
| какая модель создала конкретный результат. | |
| # 102. LICENSE DATA | |
| Лицензионная информация должна | |
| храниться отдельно. | |
| Минимальные поля: | |
| Model Name | |
| Version | |
| License | |
| Commercial Use Allowed | |
| YouTube Allowed | |
| Sale Allowed | |
| Notes | |
| При изменении версии модели | |
| лицензионная информация должна | |
| перепроверяться. | |
| # 103. SECRETS | |
| Секреты никогда не должны | |
| храниться непосредственно | |
| в исходном коде. | |
| К секретам относятся: | |
| - Telegram Bot Token; | |
| - Hugging Face Token; | |
| - API Keys; | |
| - Access Tokens; | |
| - другие приватные ключи. | |
| # 104. ENVIRONMENT VARIABLES | |
| Секреты должны передаваться | |
| через переменные окружения | |
| или защищённое хранилище секретов. | |
| Пример: | |
| BOT_TOKEN | |
| HF_TOKEN | |
| API_KEY | |
| Исходный код должен получать | |
| значение из окружения. | |
| # 105. PUBLIC REPOSITORY SAFETY | |
| Нельзя помещать секреты | |
| в публичные файлы проекта. | |
| Запрещается: | |
| - публиковать токены; | |
| - публиковать API keys; | |
| - помещать пароли в README; | |
| - сохранять секреты в Git; | |
| - вставлять секреты в исходный код. | |
| # 106. LOG SECURITY | |
| Logger не должен записывать | |
| полные секреты. | |
| Например: | |
| BOT_TOKEN loaded successfully. | |
| Допустимо. | |
| Но: | |
| BOT_TOKEN=123456789:ABC... | |
| Недопустимо. | |
| # 107. USER DATA | |
| Framework должен по возможности | |
| хранить минимальное количество | |
| персональных данных пользователя. | |
| Необязательные данные | |
| не должны сохраняться без необходимости. | |
| # 108. FILE SECURITY | |
| Загружаемые файлы должны | |
| проходить базовую проверку: | |
| - расширение; | |
| - MIME type; | |
| - размер; | |
| - возможность открытия; | |
| - допустимый формат. | |
| Файлы неизвестного или | |
| неподдерживаемого типа должны | |
| отклоняться. | |
| # 109. RESOURCE ISOLATION | |
| Worker не должен получать | |
| больше данных, чем необходимо | |
| для выполнения конкретной задачи. | |
| Пример: | |
| Task A | |
| ↓ | |
| Worker A | |
| ↓ | |
| only required files | |
| # 110. DATA RETENTION | |
| Framework должен иметь правила | |
| удаления временных данных. | |
| В будущем настройки могут | |
| определять: | |
| - время хранения; | |
| - автоматическое удаление; | |
| - архивирование; | |
| - ручное удаление. | |
| # 111. BACKUP | |
| Для важных данных должна | |
| предусматриваться возможность | |
| резервного копирования. | |
| Особенно важно сохранять: | |
| - Project data; | |
| - Character profiles; | |
| - Prompts; | |
| - Metadata; | |
| - Framework configuration. | |
| # 112. RECOVERY | |
| При сбое Framework должен | |
| по возможности восстановить: | |
| - список задач; | |
| - их состояния; | |
| - результаты; | |
| - настройки; | |
| - информацию о проектах. | |
| # 113. DATA PRINCIPLE | |
| Основной принцип: | |
| Data | |
| ≠ | |
| Worker | |
| Данные проекта не должны зависеть | |
| от конкретного Worker. | |
| Если Worker заменён, | |
| данные должны оставаться пригодными | |
| для дальнейшей обработки. | |
| # 114. SECURITY PRINCIPLE | |
| Основной принцип безопасности: | |
| Secrets → Protected Storage | |
| Project Data → Data Layer | |
| Temporary Files → Temp Storage | |
| Results → Output Storage | |
| Logs → Logger | |
| # ===================================================== | |
| # END OF PART 6 | |
| # ===================================================== | |
| # ===================================================== | |
| # PART 7 | |
| # VERSIONING, TESTING AND DEVELOPMENT | |
| # ===================================================== | |
| # 115. VERSIONING | |
| Каждый основной компонент Apckeyl Framework | |
| должен иметь собственную версию. | |
| Пример: | |
| Version 1.0 | |
| Version 1.1 | |
| Version 2.0 | |
| Версия должна отражать состояние | |
| компонента на определённый момент разработки. | |
| # 116. FRAMEWORK VERSION | |
| Сам Framework также имеет собственную версию. | |
| Пример: | |
| Apckeyl Framework | |
| Version 1.0 | |
| Изменение Framework Version происходит | |
| только после значимого изменения | |
| архитектуры или функциональности. | |
| # 117. MODULE VERSION | |
| Каждый модуль имеет собственную версию. | |
| Пример: | |
| Apckeyl_RealESRGAN | |
| Version 1.0 | |
| Обновление одного модуля | |
| не означает автоматического обновления | |
| всего Framework. | |
| # 118. DOCUMENT VERSION | |
| Архитектурные документы также | |
| должны иметь версию. | |
| Пример: | |
| ORCHESTRATOR_ARCHITECTURE.md | |
| Version 1.0 | |
| Это позволяет понимать, | |
| какая версия архитектуры | |
| использовалась при разработке. | |
| # 119. CHANGE HISTORY | |
| Для важных компонентов желательно | |
| фиксировать историю изменений. | |
| Пример: | |
| Version 1.0 | |
| Initial implementation | |
| Version 1.1 | |
| Queue improvements | |
| Version 2.0 | |
| New architecture | |
| # 120. GIT | |
| Git используется как система | |
| истории изменений проекта. | |
| Каждое важное изменение должно | |
| быть зафиксировано отдельным Commit. | |
| # 121. COMMIT PRINCIPLE | |
| Один Commit должен по возможности | |
| соответствовать одному логическому изменению. | |
| Пример: | |
| Add Telegram Controller | |
| или: | |
| Update queue handling | |
| Не следует объединять большое количество | |
| несвязанных изменений в один Commit. | |
| # 122. DEVELOPMENT ORDER | |
| Разработка должна проходить | |
| поэтапно. | |
| Рекомендуемый порядок: | |
| Architecture | |
| ↓ | |
| Documentation | |
| ↓ | |
| Configuration | |
| ↓ | |
| Core | |
| ↓ | |
| Module | |
| ↓ | |
| Adapter | |
| ↓ | |
| Integration | |
| ↓ | |
| Testing | |
| ↓ | |
| Production | |
| # 123. TEST FIRST | |
| Перед подключением нового модуля | |
| желательно сначала проверить | |
| его отдельно. | |
| Пример: | |
| Worker | |
| ↓ | |
| Independent Test | |
| ↓ | |
| Adapter | |
| ↓ | |
| Orchestrator Integration | |
| Это уменьшает количество | |
| непонятных ошибок. | |
| # 124. MODULE TESTING | |
| Каждый модуль должен по возможности | |
| иметь собственные тесты. | |
| Проверяется: | |
| - запуск; | |
| - конфигурация; | |
| - входные данные; | |
| - обработка; | |
| - результат; | |
| - ошибки; | |
| - отключение. | |
| # 125. INTEGRATION TESTING | |
| После успешного отдельного теста | |
| проверяется связь: | |
| Orchestrator | |
| ↓ | |
| Adapter | |
| ↓ | |
| Worker | |
| Только после этого модуль считается | |
| подключённым к Framework. | |
| # 126. END-TO-END TEST | |
| Полный тест проверяет | |
| весь путь задачи: | |
| User | |
| ↓ | |
| Interface | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Queue | |
| ↓ | |
| Router | |
| ↓ | |
| Adapter | |
| ↓ | |
| Worker | |
| ↓ | |
| Result | |
| ↓ | |
| User | |
| # 127. FAILURE TESTING | |
| Framework должен тестироваться | |
| не только при нормальной работе. | |
| Необходимо проверять: | |
| - Worker недоступен; | |
| - неправильный файл; | |
| - слишком большой файл; | |
| - неверные параметры; | |
| - timeout; | |
| - network error; | |
| - недостаток ресурсов; | |
| - ошибка модели; | |
| - ошибка загрузки результата. | |
| # 128. RECOVERY TESTING | |
| Необходимо проверять, | |
| может ли Framework восстановиться | |
| после: | |
| - перезапуска; | |
| - остановки Worker; | |
| - временной сетевой ошибки; | |
| - сбоя отдельной задачи; | |
| - повторного запуска. | |
| # 129. BACKWARD COMPATIBILITY | |
| При возможности новая версия | |
| модуля не должна ломать | |
| существующие задачи. | |
| Если несовместимость неизбежна, | |
| она должна быть явно указана | |
| в документации. | |
| # 130. ROLLBACK | |
| При критической ошибке должна | |
| существовать возможность | |
| вернуться к предыдущей рабочей версии. | |
| Пример: | |
| Version 2.0 | |
| ↓ | |
| ERROR | |
| ↓ | |
| Rollback | |
| ↓ | |
| Version 1.1 | |
| # 131. SAFE DEVELOPMENT | |
| Изменения должны выполняться | |
| маленькими шагами. | |
| Правило: | |
| Change | |
| ↓ | |
| Test | |
| ↓ | |
| Commit | |
| ↓ | |
| Next Change | |
| Это предпочтительнее, | |
| чем одновременное изменение | |
| многих компонентов. | |
| # 132. PRODUCTION PROTECTION | |
| Рабочий модуль не должен | |
| ломаться только ради эксперимента | |
| с другим модулем. | |
| Если новый компонент требует | |
| эксперимента, сначала создаётся | |
| отдельная тестовая среда. | |
| # 133. TEST SPACE | |
| Для серьёзных экспериментов | |
| может использоваться отдельный | |
| тестовый Space. | |
| Пример: | |
| Orchestrator_Test | |
| Тестовая среда не должна | |
| изменять рабочие модули | |
| без необходимости. | |
| # 134. WORKING MODULE PROTECTION | |
| Особенно важные рабочие модули | |
| должны сохраняться отдельно. | |
| Первый защищаемый модуль: | |
| Apckeyl_RealESRGAN | |
| Его рабочее состояние нельзя | |
| без необходимости заменять | |
| экспериментальным кодом. | |
| # 135. DOCUMENTATION BEFORE COMPLEX CODE | |
| Перед созданием сложного компонента | |
| необходимо сначала определить: | |
| - назначение; | |
| - вход; | |
| - выход; | |
| - зависимости; | |
| - ресурсы; | |
| - ошибки; | |
| - интерфейс; | |
| - место в Framework. | |
| Только после этого создаётся код. | |
| # 136. ARCHITECTURAL DECISION RECORD | |
| Важные архитектурные решения | |
| должны фиксироваться документально. | |
| Например: | |
| Decision: | |
| Orchestrator does not perform | |
| heavy AI computation. | |
| Reason: | |
| Separation of management | |
| and execution. | |
| Это позволяет не возвращаться | |
| к уже принятым решениям | |
| без необходимости. | |
| # 137. CURRENT DEVELOPMENT RULE | |
| На текущем этапе Apckeyl Framework | |
| разрабатывается постепенно. | |
| Необходимо: | |
| 1. Сначала архитектура. | |
| 2. Затем структура. | |
| 3. Затем минимальное ядро. | |
| 4. Затем один рабочий модуль. | |
| 5. Затем интеграция. | |
| 6. Затем новые модули. | |
| # 138. FIRST WORKING MODULE | |
| Первым рабочим модулем считается: | |
| Apckeyl_RealESRGAN | |
| Он используется как первый | |
| реальный пример интеграции | |
| Apckeyl Framework. | |
| # 139. DEVELOPMENT PHILOSOPHY | |
| Главный принцип разработки: | |
| Do not build everything at once. | |
| Сначала создаётся небольшой | |
| надёжный рабочий компонент. | |
| Затем он становится основой | |
| для следующего компонента. | |
| # 140. MAIN DEVELOPMENT LOOP | |
| Общий цикл: | |
| PLAN | |
| ↓ | |
| BUILD | |
| ↓ | |
| TEST | |
| ↓ | |
| COMMIT | |
| ↓ | |
| DOCUMENT | |
| ↓ | |
| NEXT | |
| # ===================================================== | |
| # END OF PART 7 | |
| # ===================================================== | |
| # ===================================================== | |
| # PART 8 | |
| # ROADMAP AND DEVELOPMENT PRIORITIES | |
| # ===================================================== | |
| # 141. ROADMAP | |
| Разработка Apckeyl Framework выполняется | |
| поэтапно. | |
| Каждый этап должен завершаться | |
| рабочим и понятным результатом. | |
| # 142. PHASE 1 — FOUNDATION | |
| Цель: | |
| создать основу Framework. | |
| Включает: | |
| - Master Plan; | |
| - Orchestrator Architecture; | |
| - базовую конфигурацию; | |
| - структуру проекта; | |
| - Logger; | |
| - базовую систему задач; | |
| - базовую очередь. | |
| # 143. PHASE 2 — ORCHESTRATOR CORE | |
| Цель: | |
| создать минимальное управляющее ядро. | |
| Основные компоненты: | |
| - Task Manager; | |
| - Queue Manager; | |
| - Router; | |
| - Module Registry; | |
| - Resource Registry; | |
| - Logger. | |
| # 144. PHASE 3 — TELEGRAM INTERFACE | |
| Цель: | |
| обеспечить управление Framework | |
| через Telegram. | |
| Схема: | |
| User | |
| ↓ | |
| Telegram | |
| ↓ | |
| ApckeylBot | |
| ↓ | |
| Orchestrator | |
| Telegram должен оставаться | |
| интерфейсом Framework, | |
| а не заменять его ядро. | |
| # 145. PHASE 4 — MODULE 001 | |
| Первый рабочий модуль: | |
| Apckeyl_RealESRGAN | |
| Цель: | |
| подключить существующий | |
| рабочий Image Upscaler | |
| к Framework. | |
| При этом существующий Space | |
| сохраняется независимо. | |
| # 146. PHASE 5 — IMAGE GENERATION | |
| После успешного подключения | |
| первого рабочего модуля | |
| может быть создан Image Generation Module. | |
| Цель: | |
| - генерация изображений; | |
| - работа с prompt; | |
| - серии изображений; | |
| - передача результатов | |
| в другие модули. | |
| # 147. PHASE 6 — CHARACTER STUDIO | |
| После появления Image Generation | |
| создаётся Story Character Studio. | |
| Цель: | |
| один персонаж | |
| ↓ | |
| множество изображений | |
| ↓ | |
| множество сцен | |
| Приоритет: | |
| - Character ID; | |
| - profile; | |
| - reference images; | |
| - visual consistency; | |
| - versioning. | |
| # 148. PHASE 7 — IMAGE PROCESSING PIPELINE | |
| Создаётся цепочка обработки: | |
| Image Generation | |
| ↓ | |
| Quality Check | |
| ↓ | |
| Image Upscaler | |
| ↓ | |
| Technical Check | |
| ↓ | |
| Output | |
| В эту цепочку может входить: | |
| Apckeyl_RealESRGAN | |
| # 149. PHASE 8 — STOCK FACTORY | |
| Создаётся полноценный | |
| Stock Factory. | |
| Основные функции: | |
| - generation; | |
| - processing; | |
| - quality control; | |
| - metadata; | |
| - keywords; | |
| - export profiles; | |
| - organization. | |
| # 150. PHASE 9 — VIDEO GENERATION | |
| После стабилизации | |
| image pipeline создаётся | |
| Video Generation Module. | |
| Цель: | |
| - создание коротких видео; | |
| - обработка; | |
| - передача в Video Upscaler; | |
| - подготовка результата. | |
| # 151. PHASE 10 — VIDEO UPSCALER | |
| Создаётся отдельный | |
| Video Upscaler Module. | |
| Он не должен зависеть | |
| от Image Upscaler. | |
| Однако может использовать | |
| общие Framework-компоненты. | |
| # 152. PHASE 11 — YOUTUBE FACTORY | |
| После стабилизации | |
| image и video pipelines | |
| создаётся YouTube Factory. | |
| Основная цепочка: | |
| Research | |
| ↓ | |
| Script | |
| ↓ | |
| Visuals | |
| ↓ | |
| Video | |
| ↓ | |
| Voice | |
| ↓ | |
| Music | |
| ↓ | |
| Assembly | |
| ↓ | |
| Quality Check | |
| ↓ | |
| Final Video | |
| # 153. PHASE 12 — RESOURCE ORCHESTRATION | |
| После появления нескольких | |
| рабочих модулей Orchestrator | |
| начинает распределять задачи | |
| между ресурсами. | |
| Пример: | |
| Task | |
| ↓ | |
| Requirements | |
| ↓ | |
| Resource Matching | |
| ↓ | |
| Worker | |
| ↓ | |
| Result | |
| # 154. PHASE 13 — AUTOMATION | |
| После стабилизации основных | |
| модулей добавляется автоматизация. | |
| Возможности: | |
| - автоматический запуск; | |
| - очереди; | |
| - повторные попытки; | |
| - fallback; | |
| - расписание; | |
| - batch processing; | |
| - автоматическая организация | |
| результатов. | |
| # 155. PHASE 14 — QUALITY CONTROL | |
| Создаётся единый Quality Control Layer. | |
| Он может проверять: | |
| - разрешение; | |
| - формат; | |
| - размер; | |
| - технические параметры; | |
| - артефакты; | |
| - длительность; | |
| - качество результата. | |
| # 156. PHASE 15 — METADATA FACTORY | |
| Создаётся отдельный | |
| Metadata Factory. | |
| Он используется | |
| в нескольких направлениях: | |
| Stock | |
| + | |
| YouTube | |
| + | |
| Other Projects | |
| # 157. PHASE 16 — FULL CONTENT FACTORIES | |
| После стабилизации отдельных | |
| модулей создаются полные | |
| автоматические цепочки. | |
| Например: | |
| Stock Image Factory | |
| и: | |
| YouTube Video Factory | |
| Они используют уже существующие | |
| рабочие модули. | |
| # 158. PRIORITY SYSTEM | |
| Разработка должна иметь | |
| приоритеты. | |
| Приоритет: | |
| P0 — критически важно | |
| P1 — необходимо | |
| P2 — желательно | |
| P3 — будущее | |
| # 159. CURRENT PRIORITY | |
| На текущем этапе: | |
| P0 | |
| Architecture | |
| P0 | |
| Master Plan | |
| P0 | |
| Orchestrator Core Design | |
| P1 | |
| Apckeyl_RealESRGAN Integration | |
| Новые сложные модули | |
| до завершения основы | |
| не являются приоритетом. | |
| # 160. НЕ СОЗДАВАТЬ ВСЁ СРАЗУ | |
| Не следует одновременно | |
| создавать: | |
| - Image Generator; | |
| - Video Generator; | |
| - Character Studio; | |
| - Stock Factory; | |
| - YouTube Factory; | |
| - Video Upscaler. | |
| Сначала необходимо получить | |
| стабильную основу. | |
| # 161. FIRST REAL GOAL | |
| Первый практический результат: | |
| Telegram | |
| ↓ | |
| Orchestrator | |
| ↓ | |
| Apckeyl_RealESRGAN | |
| ↓ | |
| processed image | |
| ↓ | |
| Telegram | |
| Если этот цикл работает, | |
| Framework получает первый | |
| полностью рабочий pipeline. | |
| # 162. SECOND REAL GOAL | |
| После первого успешного pipeline: | |
| Image Generation | |
| ↓ | |
| Image Upscaler | |
| ↓ | |
| Result | |
| Это станет основой | |
| для Stock Factory | |
| и других сценариев. | |
| # 163. STOCK GOAL | |
| Целевой pipeline: | |
| Prompt | |
| ↓ | |
| Image Generation | |
| ↓ | |
| Character / Style | |
| ↓ | |
| Upscale | |
| ↓ | |
| Quality Check | |
| ↓ | |
| Metadata | |
| ↓ | |
| Export | |
| # 164. YOUTUBE GOAL | |
| Целевой pipeline: | |
| Topic | |
| ↓ | |
| Research | |
| ↓ | |
| Script | |
| ↓ | |
| Character / Visuals | |
| ↓ | |
| Image / Video Generation | |
| ↓ | |
| Upscale | |
| ↓ | |
| Voice | |
| ↓ | |
| Assembly | |
| ↓ | |
| Quality Control | |
| ↓ | |
| Final Video | |
| # 165. LONG-TERM ARCHITECTURE | |
| Итоговая система должна выглядеть | |
| примерно следующим образом: | |
| ┌──────────────────────────────┐ | |
| │ USER INTERFACES │ | |
| │ │ | |
| │ Telegram / Web / API │ | |
| └──────────────┬───────────────┘ | |
| │ | |
| ▼ | |
| ┌──────────────────────────────┐ | |
| │ ORCHESTRATOR │ | |
| │ │ | |
| │ Queue / Router / Tasks │ | |
| │ Resources / Logger │ | |
| └──────────────┬───────────────┘ | |
| │ | |
| ┌────────┼────────┐ | |
| │ │ │ | |
| ▼ ▼ ▼ | |
| Image Video Character | |
| Modules Modules Studio | |
| │ │ │ | |
| └────────┼────────┘ | |
| │ | |
| ▼ | |
| Content Factories | |
| │ | |
| ┌────────┴────────┐ | |
| ▼ ▼ | |
| Stock Factory YouTube Factory | |
| │ │ | |
| └────────┬────────┘ | |
| ▼ | |
| Results | |
| # 166. ARCHITECTURAL PRINCIPLE | |
| Apckeyl Framework должен оставаться | |
| модульным. | |
| Новые функции должны подключаться | |
| к существующей системе, | |
| а не разрушать её. | |
| # 167. TECHNOLOGY INDEPENDENCE | |
| Framework не должен быть построен | |
| вокруг одной AI-модели. | |
| Модель может быть заменена, | |
| если: | |
| - она становится недоступной; | |
| - меняется лицензия; | |
| - появляется лучшая модель; | |
| - меняется вычислительный ресурс; | |
| - меняются требования проекта. | |
| # 168. PLATFORM INDEPENDENCE | |
| Framework не должен зависеть | |
| от одной платформы. | |
| Hugging Face, Colab, Kaggle, | |
| локальный компьютер и другие | |
| ресурсы рассматриваются | |
| как заменяемые исполнители. | |
| # 169. COMMERCIAL USE | |
| При выборе моделей и инструментов | |
| предпочтение отдаётся решениям, | |
| которые позволяют коммерческое | |
| использование результата, | |
| если это возможно. | |
| Перед использованием модели | |
| должна проверяться её лицензия. | |
| # 170. PROJECT GOAL | |
| Конечная цель Apckeyl Framework: | |
| создать единую модульную систему, | |
| которая позволяет управлять | |
| созданием и обработкой AI-контента | |
| через единый Orchestrator, | |
| используя доступные вычислительные | |
| ресурсы и независимые рабочие модули. | |
| # 171. DEVELOPMENT RULE | |
| Главное правило проекта: | |
| Build small. | |
| Test. | |
| Commit. | |
| Connect. | |
| Expand. | |
| # 172. CURRENT STATE | |
| На момент создания Master Plan: | |
| Orchestrator | |
| ↓ | |
| Architecture stage | |
| Apckeyl_RealESRGAN | |
| ↓ | |
| Module 001 | |
| Telegram | |
| ↓ | |
| Existing interface | |
| Stock Factory | |
| ↓ | |
| Planned | |
| YouTube Factory | |
| ↓ | |
| Planned | |
| Character Studio | |
| ↓ | |
| Planned | |
| # 173. NEXT DEVELOPMENT STEP | |
| После завершения Master Plan | |
| необходимо: | |
| 1. Выполнить общую проверку | |
| APCKEYL_FRAMEWORK_MASTERPLAN.md. | |
| 2. Зафиксировать Version 1.0 | |
| через Commit. | |
| 3. Сохранить рабочее состояние. | |
| 4. Перейти к следующему | |
| архитектурному этапу. | |
| Никакой следующий крупный | |
| компонент не должен создаваться | |
| до фиксации текущего состояния. | |
| # ===================================================== | |
| # END OF PART 8 | |
| # ===================================================== | |