architect/theory/TERMINOLOGY.md

ТЕРМИНОЛОГИЯ ПЛАТФОРМЫ

Версия: 1.0.0
Статус: approved
Дата: 2025-12-12


ОБЗОР

Единая терминология для всех документов платформы. Заменяет устаревшие термины.

┌─────────────────────────────────────────────────────────────┐
                      ВНЕШНИЙ МИР                            
        OZON, WB, Почта РФ, 1C, Telegram, S3...              
└─────────────────────────────────────────────────────────────┘
                           
                           
┌─────────────────────────────────────────────────────────────┐
                    КОННЕКТОРЫ                               
                  library/connectors/                        
└─────────────────────────────────────────────────────────────┘
                           
                           
┌─────────────────────────────────────────────────────────────┐
                     ФУНКЦИИ                                 
                  library/functions/                         
└─────────────────────────────────────────────────────────────┘
                           
                           
┌─────────────────────────────────────────────────────────────┐
                      МОДУЛИ                                 
                   system/modules/                           
└─────────────────────────────────────────────────────────────┘
                           
                           
┌─────────────────────────────────────────────────────────────┐
                    КОМПОНЕНТЫ                               
                    components/                              
└─────────────────────────────────────────────────────────────┘
                           
                           
┌─────────────────────────────────────────────────────────────┐
                     РЕШЕНИЯ                                 
                     projects/                               
└─────────────────────────────────────────────────────────────┘

ТЕРМИНЫ

КОННЕКТОР (Connector)

Что: Адаптер для связи с внешним сервисом.

Направление: Платформа → Внешний мир

Характеристики:
- Работает с ВНЕШНИМ API/сервисом
- Содержит credentials (ключи, токены)
- Имеет QUIRKS (особенности внешнего API)
- Может сломаться при изменении внешнего сервиса
- Требует тестирования на реальных данных

Расположение: library/connectors/

Примеры:
| Коннектор | Тип | Внешний сервис |
|-----------|-----|----------------|
| ozon | api | OZON Seller API |
| telegram | api | Telegram Bot API |
| pochta | api | Почта России API |
| 1c | api | 1C через OData |
| postgres | data | PostgreSQL |
| nocodb | data | NocoDB |
| printer | device | Термопринтер |

Структура коннектора:

library/connectors/api/ozon/
├── client.py        Код клиента
├── SPEC.md          Спецификация API
├── QUIRKS.md        Особенности (КРИТИЧНО!)
├── STATUS.md        Статус тестирования
└── tests/           Тесты

QUIRKS.md — обязательный файл:

## ⚠️ Телефон только в get
**Проблема:** /v3/posting/fbs/list возвращает пустой phone
**Решение:** Вызывать /v3/posting/fbs/get для каждого заказа
**Дата обнаружения:** 2025-12-12

ФУНКЦИЯ (Function)

Что: Атомарная внутренняя операция без внешних зависимостей.

Направление: Только внутри платформы

Характеристики:
- Чистая функция (вход → выход)
- НЕ знает про внешний мир
- НЕ имеет побочных эффектов
- Легко тестируется (unit tests)
- Переиспользуется везде

Расположение: library/functions/

Категории:
| Категория | Назначение | Примеры |
|-----------|------------|---------|
| validators/ | Валидация данных | phone, email, inn, address |
| formatters/ | Форматирование | price, date, phone |
| parsers/ | Парсинг данных | csv, excel, xml, json |
| calculators/ | Расчёты | price, weight, delivery |
| generators/ | Генерация | barcode, sku, tracking |

Пример:

# library/functions/validators/phone.py

def validate_phone(phone: str) -> bool:
    """Валидация российского телефона"""
    import re
    pattern = r'^(\+7|8)?[\s\-]?\(?\d{3}\)?[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}$'
    return bool(re.match(pattern, phone))

def normalize_phone(phone: str) -> str:
    """Нормализация телефона в формат 79XXXXXXXXX"""
    digits = re.sub(r'\D', '', phone)
    if digits.startswith('8'):
        digits = '7' + digits[1:]
    return digits

МОДУЛЬ (Module)

Что: Комбинация функций и коннекторов для реализации бизнес-логики.

Направление: Внутри платформы, использует коннекторы

Характеристики:
- Использует функции + коннекторы
- Реализует бизнес-логику
- Может быть сложным
- Переиспользуется между компонентами

Расположение: system/modules/

Категории:
| Категория | Назначение |
|-----------|------------|
| orders/ | Работа с заказами |
| products/ | Работа с товарами |
| delivery/ | Доставка |
| notifications/ | Уведомления |
| sync/ | Синхронизация данных |

Пример:

# system/modules/orders/exporter.py

from system.connectors.marketplaces.ozon import OzonConnector
from system.functions.formatters.address import format_address
from system.functions.validators.phone import validate_phone

class OrderExporter:
    """Экспорт заказов из маркетплейса"""

    def __init__(self, connector: OzonConnector):
        self.connector = connector

    def export_for_delivery(self, orders: list) -> list:
        """Подготовить заказы для службы доставки"""
        result = []
        for order in orders:
            if not validate_phone(order.phone):
                continue
            result.append({
                'address': format_address(order.address),
                'phone': normalize_phone(order.phone),
                # ...
            })
        return result

КОМПОНЕНТ (Component)

Что: Готовый набор модулей для типовой задачи. Шаблон решения.

Направление: Внутри платформы

Характеристики:
- Включает набор модулей
- Имеет конфигурацию по умолчанию
- Готов к использованию "из коробки"
- Создаёт решение за минуты

Расположение: components/

Примеры:
| Компонент | Назначение |
|-----------|------------|
| marketplace-seller | Продавец на маркетплейсе |
| delivery-manager | Управление доставкой |
| price-monitor | Мониторинг цен |
| inventory-sync | Синхронизация остатков |

Структура компонента:

components/marketplace-seller/
├── README.md           ← Описание
├── config.yaml         ← Конфигурация по умолчанию
├── includes.yaml       ← Список включённых модулей
└── templates/          ← Шаблоны для кастомизации

РЕШЕНИЕ (Solution)

Что: Конкретный проект для клиента/бизнеса.

Направление: Конечный продукт

Характеристики:
- Основано на компонентах
- Имеет конкретные credentials
- Кастомизировано под бизнес
- Развёрнуто и работает

Расположение: projects/

Примеры:
| Решение | Описание |
|---------|----------|
| pirotehnika | Продажа фейерверков (OZON + Почта РФ) |
| lideravto | Автозапчасти |
| mcrm | Клиентская CRM |


ТАБЛИЦА СООТВЕТСТВИЯ

Термин Папка Направление Зависимости Статус
Коннектор library/connectors/ → наружу внешние API QUIRKS
Функция library/functions/ внутри нет tested
Модуль system/modules/ внутри функции + коннекторы tested
Компонент components/ внутри модули template
Решение projects/ конечный компоненты deployed

УСТАРЕВШИЕ ТЕРМИНЫ

Было Стало Причина замены
Элемент (element) Функция или Коннектор Путаница: внешнее/внутреннее
Атом Функция Слишком абстрактно
Молекула Модуль Слишком абстрактно
Конструктор Компонент Путается с constructor в ООП

ПРАВИЛА ИМЕНОВАНИЯ

Коннекторы

library/connectors/{тип}/{имя}/

Типы: api (внешние API), data (БД), device (устройства)

Функции

library/functions/{тип}/{имя}.py

Типы: validators, formatters, parsers, calculators, generators

Модули

system/modules/{домен}/{имя}.py

Домены: orders, products, delivery, notifications, sync

Компоненты

components/{kebab-case-имя}/

Решения

projects/{имя}/

СТАТУСЫ

Статус Маркер Описание
draft ⚠️ Написано, не тестировалось
tested Протестировано на реальных данных
broken Известные ошибки, не использовать
deprecated 🚫 Устарело, есть замена

Статус указывается в STATUS.md каждого коннектора/модуля.


СВЯЗИ

КОННЕКТОР ←───────────────────────┐
    │                             │ использует
    ▼                             │
ФУНКЦИЯ ──────────────────────────┤
    │                             │
    ▼                             │
МОДУЛЬ ───────────────────────────┤
    │                             │
    ▼                             │
КОМПОНЕНТ ────────────────────────┘
    │
    ▼
РЕШЕНИЕ

МИГРАЦИЯ (Актуальная 2025-12-23)

Переименование папок

# Было → Стало
system/connectors/    library/connectors/api/ + library/connectors/data/
system/functions/     library/functions/
system/adapters/      library/functions/parsers/
system/stores/        library/connectors/data/
system/drivers/       library/connectors/device/

Новая структура library/

library/
├── connectors/
   ├── api/         внешние API (ozon, telegram, 1c)
   ├── data/        хранилища (postgres, nocodb, redis)
   └── device/      устройства (printer, scanner)
└── functions/
    ├── parsers/     xlsx, csv, pdf, json, xml
    ├── formatters/  money, date, text
    └── validators/  phone, email, inn

Версия: 2.0.0