architect/_archive/2025-11-26-cleanup/system-docs/architecture/6-information.md

Информационное измерение

Версия: 1.0.0
Дата: 2025-11-19


Что описывает это измерение

Вопрос: Как движутся данные?

Ответ:
- Форматы данных
- Схемы
- Потоки информации
- Трансформации

НЕ описывает:
- Где хранятся данные (структурное)
- Что делают данные (функциональное)
- Как обрабатываются (процессное)


Форматы данных

YAML

Назначение: Конфигурации и метаданные

Структура:

version: "1.0.0"
updated: "2025-11-19"
status: "active"

data:
  key: "value"
  nested:
    subkey: "subvalue"

Используется в:
- config.yaml
- index.yaml
- standard.yaml

Markdown

Назначение: Документация

Структура:

# Заголовок

Текст документа.

## Секция

- Список
- Элементов

Используется в:
- README.md
- CLAUDE.md
- Все документы в docs/

JSON

Назначение: API данные

Структура:

{
  "version": "1.0.0",
  "data": {
    "key": "value"
  }
}

Используется в:
- API responses
- package.json
- Обмен данными

SQLite

Назначение: Структурированные данные

Схема:

CREATE TABLE products (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    price REAL,
    created_at TIMESTAMP
);

Используется в:
- Приложения (marketplace, pim)
- История операций
- Кэш данных


Схемы данных

Обязательные поля

В YAML метаданных:

version: "1.0.0"      # Версия документа/данных
updated: "2025-11-19" # Дата обновления
status: "active"      # Статус

В index.yaml:

files:
  CLAUDE.md:
    purpose: "..."    # Назначение файла
    topics: [...]     # Темы
    size: 800         # Размер (bytes)
    updated: "..."    # Дата обновления

В config.yaml (инфра):

infrastructure:
  name: "..."         # Имя
  type: vps           # Тип
  usage: ready        # ready | project
  status: active      # Статус

Опциональные поля

description: "..."    # Описание
tags: [...]           # Теги
links: [...]          # Связи
notes: [...]          # Заметки

Потоки данных

Чтение

Оператор запрашивает →
  Orchestrator →
    Загружает index.yaml (навигация) →
      Находит нужный файл →
        Загружает файл →
          Обрабатывает →
            Возвращает результат →
              Оператору

Запись

Оператор даёт задачу →
  Orchestrator →
    Project-agent →
      Изменяет файл →
        Валидирует →
          Сохраняет →
            Обновляет index.yaml →
              Git commit →
                Возврат результата

Синхронизация

Локальный workspace ←→ Git ←→ Удалённый сервер

Направления:
- git push — локальный → git → сервер
- git pull — сервер → git → локальный
- rsync — прямая синхронизация


Трансформации данных

YAML → Python

import yaml

with open('config.yaml') as f:
    config = yaml.safe_load(f)

# config['infrastructure']['name']

Markdown → HTML (для UI)

import markdown

html = markdown.markdown(text)

JSON → Python

import json

data = json.loads(response.text)

SQL → Python (ORM)

from sqlalchemy import select

products = session.execute(
    select(Product).where(Product.active == True)
).scalars().all()

Кэширование

Концепция

Идея: Сохранить результат, чтобы не вычислять повторно

Примеры

Разрешение символических ссылок:

cache = {}

if '@latest' in cache:
    return cache['@latest']

# Иначе вычислить и сохранить
cache['@latest'] = resolve_latest()

Индексы файлов:

# index.yaml кэширует информацию о файлах
# Не нужно открывать каждый файл для получения метаданных

Схемы связей

Проект → Инфраструктура

# projects/marketplace/index.yaml
infrastructure:
  server: "@infra-dev-pro"
  link: "../../infra/@infra-dev-pro/config.yaml"
# infra/@infra-dev-pro/config.yaml
projects:
  - name: "marketplace"
    path: "/opt/workspace/projects/marketplace/"

Символические ссылки

# Версионирование
current: "@latest"  # символическая ссылка

Разрешается в:

# @latest → v2.0.0 (конкретная версия)

References

# Ссылка на внешний файл
specification: "../../platform/specifications/file-formats.md"

Валидация данных

YAML валидация

Проверки:
- Синтаксис корректен
- Обязательные поля присутствуют
- Типы данных соответствуют

Инструменты:

import yaml

try:
    data = yaml.safe_load(content)
except yaml.YAMLError as e:
    print(f"Invalid YAML: {e}")

Схема валидация

JSON Schema (для YAML):

# schema.yaml
type: object
required: [version, updated]
properties:
  version:
    type: string
    pattern: "^\d+\.\d+\.\d+$"
  updated:
    type: string
    format: date

Обработка больших объёмов

Потоковая обработка

Для больших файлов:

with open('large_file.txt') as f:
    for line in f:  # Построчно
        process(line)

Пагинация

Для API:

page = 1
while True:
    data = api.get(page=page, limit=100)
    if not data:
        break
    process(data)
    page += 1

Лимиты

Для предотвращения перегрузки:

# Чтение файла с лимитом
Read(file_path, limit=100)  # Только первые 100 строк

Следующее измерение

Следующее: 7-temporal.md — время и версии

Назад: 5-technical.md — техническое измерение