architect/_archive/2025-11-26-cleanup/cifra/02_CORE_CONCEPTS.md

CIFRA — Ключевые концепции

Версия: 2.0.0
Дата: 2025-11-10


Оглавление

  1. Hierarchical Composition (Lego + Matryoshka)
  2. 4 уровня абстракции данных
  3. Cascade System (CSS-like)
  4. Meta-model vs Data model
  5. Class Architecture

1. Hierarchical Composition

CIFRA использует 2 метафоры композиции:

Lego (горизонтальная)

Project = [Module1] + [Module2] + [Module3]

Модули независимы и могут комбинироваться.

Matryoshka (вертикальная)

Platform
  └─ Application
      └─ Module
          └─ Entity
              └─ Field

Иерархия вложенности.

Пример:

project:
  modules:
    - contacts    # ← Lego блок
    - deals       # ← Lego блок

modules:
  contacts:
    entities:
      - Contact   # ← Matryoshka уровень

entities:
  Contact:
    fields:       # ← Matryoshka уровень
      - name
      - email

2. 4 уровня абстракции

L1: PLATFORM (Core Engine)
    Неизменяемая основа

L2: CONFIGURATION (.cifra files)
    Переиспользуемые шаблоны

L3: INSTANCE SETTINGS
    Настройки конкретного клиента

L4: USER DATA
    Реальные записи в БД

Пример:

L1: Платформа определяет "Entity" и "Field"
L2: crm.cifra определяет Entity "Contact"
L3: instance_settings.yaml: database="postgresql://..."
L4: INSERT INTO contacts VALUES ('John', 'john@example.com')

3. Cascade System

Идея: Правила наследуются как в CSS.

# Global
theme:
  colors:
    primary: blue

# Module (override)
modules:
  deals:
    theme:
      colors:
        primary: red

# Entity (override)
entities:
  Contact:
    theme:
      colors:
        primary: green

Результат:
- Global: primary=blue
- Module: primary=red (переопределён)
- Entity: primary=green (переопределён)


4. Meta-model vs Data model

Meta-model — описание структуры:

class ContactMeta:
    fields = [
        FieldMeta(name='name', type='string'),
        FieldMeta(name='email', type='email')
    ]

Data model — реальные данные:

contact = Contact(name='John', email='john@example.com')

5. Class Architecture

BaseEntity
  └─ Entity (Contact, Deal, Order)

BaseField
  └─ StringField, EmailField, MoneyField...

BaseModule
  └─ ContactsModule, DealsModule...

Следующий документ: ARCHITECTURE.md →