Версия: 1.0.0
Дата: 2025-11-19
Вопрос: Как движутся данные?
Ответ:
- Форматы данных
- Схемы
- Потоки информации
- Трансформации
НЕ описывает:
- Где хранятся данные (структурное)
- Что делают данные (функциональное)
- Как обрабатываются (процессное)
Назначение: Конфигурации и метаданные
Структура:
version: "1.0.0"
updated: "2025-11-19"
status: "active"
data:
key: "value"
nested:
subkey: "subvalue"
Используется в:
- config.yaml
- index.yaml
- standard.yaml
Назначение: Документация
Структура:
# Заголовок
Текст документа.
## Секция
- Список
- Элементов
Используется в:
- README.md
- CLAUDE.md
- Все документы в docs/
Назначение: API данные
Структура:
{
"version": "1.0.0",
"data": {
"key": "value"
}
}
Используется в:
- API responses
- package.json
- Обмен данными
Назначение: Структурированные данные
Схема:
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 — прямая синхронизация
import yaml
with open('config.yaml') as f:
config = yaml.safe_load(f)
# config['infrastructure']['name']
import markdown
html = markdown.markdown(text)
import json
data = json.loads(response.text)
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 (конкретная версия)
# Ссылка на внешний файл
specification: "../../platform/specifications/file-formats.md"
Проверки:
- Синтаксис корректен
- Обязательные поля присутствуют
- Типы данных соответствуют
Инструменты:
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 — техническое измерение