architect/standards/2-lifecycle/lifecycle-data.md

type: standard
aspect: lifecycle
title: "Жизненный цикл данных (Data Lifecycle)"
version: 1.0.0
date: 2026-02-19
status: active


Жизненный цикл данных (Data Lifecycle)

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


Назначение

Стандарт управления состояниями бинарных данных в проектах.

Применяется к: файлы которые не версионируются в git (xlsx, csv, pdf, jpg, mp4 и т.д.)

Не применяется к: код, документация (.md), конфигурации — для них достаточно git.


Три состояния

┌─────────┐         ┌─────────┐         ┌─────────┐
│  inbox  │ ──────► │  work   │ ──────► │ archive │
│ (новые) │         │(рабочие)│         │ (старые)│
└─────────┘         └─────────┘         └─────────┘
    ▲                                        │
    │          ◄───────────────────────────  │
    │            (при необходимости)         │
    └────────────────────────────────────────┘
Состояние Описание Действия
inbox Новые, необработанные Загрузка, ожидание обработки
work Рабочие, актуальные Использование, обновление
archive Старые, устаревшие Хранение для истории

Структура папок

В DATA слое проекта

data/
├── inbox/               Входящие файлы
├── prices/              Рабочие прайсы
├── images/              Рабочие изображения
├── exports/             Рабочие выгрузки
└── archive/             Архив
    ├── 2025-12/
    └── 2025-11/

В DATASPACE

$DATASPACE/projects/{project}/
├── inbox/               Входящие (загрузка через upload.0kt.ru)
├── prices/              Рабочие прайсы
├── images/              Рабочие изображения
├── exports/             Выгрузки
├── products/            Данные товаров
└── archive/             Архив
    └── {YYYY-MM}/

Правила перехода

inbox → work

Когда: файл обработан и готов к использованию
Как:
  1. Обработать файл (парсинг, валидация)
  2. Переименовать по стандарту: {source}_{YYYY-MM-DD}.{ext}
  3. Переместить в соответствующую рабочую папку
  4. Удалить из inbox

Пример:

inbox/price_new.xlsx
  ↓ (обработан)
prices/jf_2025-12-20.xlsx

work → archive

Когда: файл устарел, появилась новая версия
Как:
  1. Переместить старый файл в archive/{YYYY-MM}/
  2. Добавить новый файл в work

Пример:

prices/jf_2025-11-15.xlsx
  ↓ (новая версия)
archive/2025-11/jf_2025-11-15.xlsx

prices/jf_2025-12-20.xlsx  ← новый

archive → work (восстановление)

Когда: нужно восстановить старую версию
Как:
  1. Скопировать (не перемещать) из archive
  2. Переименовать с актуальной датой

Соглашения об именовании

Файлы данных

{source}_{YYYY-MM-DD}.{ext}
{source}_{YYYY-MM-DD}_{suffix}.{ext}

Примеры:

jf_2025-12-20.xlsx          ← прайс JF от 20.12.2025
maxsem_2025-12-20.xlsx      ← прайс Maxsem от 20.12.2025
ozon_orders_2025-12-20.csv  ← заказы OZON от 20.12.2025

Папки архива

archive/{YYYY-MM}/

Примеры:

archive/2025-12/
archive/2025-11/
archive/2025-10/

Автоматизация

Скрипт обработки inbox

# data/scripts/process_inbox.py

def process_inbox():
    """Обработать все файлы в inbox/"""
    for file in inbox_dir.iterdir():
        if is_price(file):
            process_price(file)
            move_to_work(file, 'prices/')
        elif is_image(file):
            process_image(file)
            move_to_work(file, 'images/')

Скрипт архивации

# data/scripts/archive_old.py

def archive_old(days=30):
    """Переместить файлы старше N дней в архив"""
    cutoff = datetime.now() - timedelta(days=days)
    for folder in ['prices/', 'images/', 'exports/']:
        for file in folder.iterdir():
            if file.stat().st_mtime < cutoff.timestamp():
                archive_file(file)

Мониторинг

Что отслеживать

Метрика Порог Действие
Файлов в inbox >10 Обработать
Размер archive >5GB Очистить старое
Файлов без даты >0 Переименовать

Команды проверки

# Проверить inbox
ls -la $DATASPACE/projects/pirotehnika/inbox/

# Размер архива
du -sh $DATASPACE/projects/pirotehnika/archive/

# Файлы старше 90 дней
find $DATASPACE/projects/pirotehnika/archive/ -mtime +90

Примеры по проектам

pirotehnika

$DATASPACE/projects/pirotehnika/
├── inbox/                       Загрузка через upload.0kt.ru
├── prices/                      Прайсы поставщиков
   ├── jf_2025-12-20.xlsx
   ├── maxsem_2025-12-20.xlsx
   └── piroff_2025-12-20.xlsx
├── images/                      Фото товаров
├── exports/                     Выгрузки для OZON
├── products/                    Данные 1С
└── archive/
    ├── 2025-12/
    └── 2025-11/

lideravto

$DATASPACE/projects/lideravto/
├── inbox/                      ← Входящие
├── prices/                     ← Прайсы BAZON
├── images/                     ← Фото запчастей
└── archive/

Связи

Стандарт Связь
LINKS.md Декларация источников данных
../1-structure/structure-organization.md Слой DATA в архитектуре
../4-policy/policy-code-data-separation.md Разделение код/данные

История

Дата Версия Изменения
2025-12-20 1.0.0 Создание стандарта

Стандарт: architect/standards/DATA_LIFECYCLE.md