architect/arh/operations/REFACTORING_2025-12-23.md

Рефакторинг платформы 2025-12-23

Дата: 2025-12-23
Тип: Томография + Рефакторинг
Статус: completed


ВЫПОЛНЕННЫЕ ИЗМЕНЕНИЯ

1. Library Architecture (L2-L6)

Создана новая архитектура библиотеки с 5 уровнями:

L2 Primitives → L3 Functions → L4 Components → L5 Services → L6 Integrations

Созданные базовые классы:
- library/primitives/ — types, enums, constants, exceptions
- library/functions/ — format, validate, normalize, calc, generate
- library/connectors/base.py — BaseConnector, BaseApiConnector
- library/parsers/base.py — BaseParser, BaseTabularParser
- library/adapters/base.py — BaseAdapter, ConfigurableAdapter
- library/storages/base.py — BaseRepository, BaseCache
- library/services/base.py — BaseService, BaseSyncService, BaseWorkerService
- library/integrations/base.py — BaseSyncIntegration, BaseWebhookIntegration

2. Удаление дубликатов

Дубликат Действие
library/functions/formatters/ Удалён (контент перенесён в format/)
system/connectors/marketplaces/ Удалён (перемещён в library/connectors/api/)
system/connectors/delivery/ Удалён
system/connectors/erp/ Удалён
system/connectors/messaging/ Удалён
system/connectors/nocodb/ Удалён
system/adapters/ Удалён (deprecated)
system/stores/ Удалён (deprecated)
system/drivers/ Удалён (deprecated)

3. Консолидация format/

Объединены format/ и formatters/ в единый путь:

library/functions/format/
├── money.py      # babel-based
├── phone.py      # phonenumbers
├── date.py       # dateutil
├── number.py     # числа
├── status.py     # статусы OZON/Почта (из formatters/)
└── text.py       # текст (из formatters/)

МЕТРИКИ ДО/ПОСЛЕ

Показатель До После Изменение
Папки в system/ 24 20 -4 deprecated
Python файлы в system/connectors/ 6 0 -6 (перемещены)
Дубликаты format функций 2 папки 1 папка -1
Base классы в library/ 0 8 +8 новых

ОСТАВШИЕСЯ ПРОБЛЕМЫ

Требуют внимания (не критично)

Проблема Файлы Рекомендация
OzonClient в projects/ 3 файла Постепенная миграция на library/
Импорты from system.lib 15 файлов Обратная совместимость
Пустые placeholder-ы в library/ ~20 папок Заполнять по мере разработки

Файлы с локальными ozon_client.py

projects/org/pirotehnika/app/mp1/solution/app/services/ozon_client.py
projects/org/pirotehnika/app/ozon/solution/app/services/ozon_client.py
projects/org/pro1/@pro.service/solution/app/modules/ozon/client.py

Рекомендация: Не ломать работающий код. Постепенно мигрировать при следующих изменениях в этих проектах.


НОВАЯ СТРУКТУРА

system/ (ядро платформы)

system/
├── agents/          AI-агенты (active)
├── apps/            Приложения (mcrm)
├── config/          Конфигурация
├── connectors/      Только MOVED.md
├── elements/        OpenRouter LLM
├── monitor/         Мониторинг
├── scheduler/       Планировщик
├── scripts/         CLI утилиты
├── services/        Микросервисы
└── @platform-ui.app/  Веб-интерфейс

library/ (переиспользуемый код)

library/
├── primitives/      L2: types, enums, exceptions
├── functions/       L3: format, validate, normalize
├── connectors/      L4: api/, data/, device/
├── parsers/         L4: xlsx, csv, pdf
├── adapters/        L4: маппинг данных
├── storages/        L4: repository pattern
├── services/        L5: бизнес-логика
└── integrations/    L6: связь систем

ДОКУМЕНТАЦИЯ

Обновлённые документы:
- library/CLAUDE.md — v4.0.0
- architect/standards/LIBRARY_ARCHITECTURE.md — v1.0.0
- library/requirements.txt — зависимости
- library/paths.py — централизованные пути


СЛЕДУЮЩИЕ ШАГИ

  1. При работе с projects/pirotehnika — мигрировать ozon_client.py на library/
  2. При работе с projects/pro1 — мигрировать client.py на library/
  3. Заполнять пустые папки в library/ по мере необходимости

Версия: 1.0.0