architect/standards/arh/process-project-bootstrap.md

type: standard
aspect: process
title: "Стандарт инициализации проекта (Project Bootstrap)"
version: 1.0.0
date: 2026-02-19
status: active


Стандарт инициализации проекта (Project Bootstrap)

Версия: 1.0.0
Дата: 2025-12-10
Уровень: У1 (Правила)

Вытекает из: ../structure/PROJECT.md


ПРИНЦИП

Проект = Код + Данные + Документация + Входящие
При создании проекта автоматически создаются все компоненты

ЧТО СОЗДАЁТСЯ

Компонент Назначение URL
NocoDB база Данные проекта docs.0kt.ru:8085
PostgreSQL схема SQL-доступ порт 5432
Документация Веб-просмотр .md docs.0kt.ru/{project}/
Входящие Загрузка файлов upload.0kt.ru/{project}/

СТРУКТУРА ПРОЕКТА

{project}/                      В WORKSPACE (код + документация)
├── CLAUDE.md               Контекст (ОБЯЗАТЕЛЬНО)
├── index.yaml              Мастер-файл с URL-ами (ОБЯЗАТЕЛЬНО)
├── PROJECT.md              Описание проекта

├── _shared/                ДАННЫЕ (обработанные, ссылки на Hub)
   ├── products/
   ├── prices/
   └── ...

├── management/             УПРАВЛЕНИЕ
   ├── TODO.md
   ├── STATUS.md
   └── CHANGELOG.md

└── ...                     Остальное по типу проекта


Hub (S3):                       НА HUB (данные + входящие)
$DATASPACE/projects/{project}/
├── _inbox/                 ВХОДЯЩИЕ (upload.0kt.ru/{project}/)
   └── (загруженные файлы)

├── products/               Товары, изображения
├── prices/                 Прайсы поставщиков
└── ...                     Другие данные

Принцип: Workspace = код, Hub = данные


БАЗЫ ДАННЫХ

NocoDB

Правило Описание
Одна база на проект {project}_data — данные бизнеса
Дополнительная по запросу {project}_app — для приложения
URL http://docs.0kt.ru:8085/dashboard/#/nc/{base_id}

PostgreSQL

Правило Описание
Один инстанс Общий PostgreSQL (внутри NocoDB)
Схема на проект CREATE SCHEMA {project}
Доступ host: 91.218.142.168, port: 5432

Структура баз

NocoDB
├── _platform              ← Системная (метаданные платформы)
├── pirotehnika_data       ← Данные бизнеса
├── pirotehnika_app        ← Для приложения (опционально)
├── lideravto_data         ← Данные бизнеса
└── {project}_data         ← Новые проекты

PostgreSQL
├── nocodb                 ← Системная схема
├── pirotehnika            ← Схема проекта
├── lideravto              ← Схема проекта
└── {project}              ← Новые проекты

ДОКУМЕНТАЦИЯ

Веб-доступ

URL Назначение
docs.0kt.ru/ Индекс всех проектов
docs.0kt.ru/{project}/ Индекс документов проекта
docs.0kt.ru/{project}/CLAUDE.md Конкретный документ

Что публикуется

Файл Автоматически
CLAUDE.md Да
PROJECT.md Да
management/*.md Да
_shared/*/.md Да
Все .md в проекте Да

ВХОДЯЩИЕ (_inbox/) — НА HUB

Назначение

Папка для загрузки любых файлов на обработку:
- Прайсы от поставщиков
- Накладные
- Скриншоты
- Документы
- Любые файлы

Расположение

На Hub (S3): $DATASPACE/projects/{project}/_inbox/

Доступ

Способ URL/Путь
Веб-форма upload.0kt.ru/{project}/
Файловая система $DATASPACE/projects/{project}/_inbox/

Правила

Правило Описание
Хранение на Hub Централизованно, доступно со всех серверов
Временное хранение Файлы обрабатываются и удаляются/перемещаются
Любой формат xlsx, pdf, png, csv, zip — без ограничений
Лимит 500 MB на файл

Сценарий использования

1. Оператор загружает файл через upload.0kt.ru/pirotehnika/
2. Оператор: "обработай прайс из inbox"
3. Claude:
   - Смотрит $DATASPACE/projects/pirotehnika/_inbox/
   - Находит price_jf.xlsx
   - Обрабатывает  Hub/prices/jf/
   - Удаляет из _inbox/

МАСТЕР-ФАЙЛ (index.yaml)

# {project}/index.yaml — МАСТЕР-ФАЙЛ ПРОЕКТА
name: pirotehnika
type: BUSINESS
version: 2.0.0
status: active
created: 2025-12-10

# === ДАННЫЕ ===
data:
  nocodb:
    base_id: pt7k98pv0fwi1el
    base_name: pirotehnika_data
    url: http://docs.0kt.ru:8085/dashboard/#/nc/pt7k98pv0fwi1el
    tables:
      - Products
      - Categories
      - Prices
      - Orders

  postgres:
    schema: pirotehnika
    host: 91.218.142.168
    port: 5432
    tables:
      - products
      - orders

# === ДОКУМЕНТАЦИЯ ===
docs:
  web_url: http://docs.0kt.ru/pirotehnika/
  files:
    - path: CLAUDE.md
      url: http://docs.0kt.ru/pirotehnika/CLAUDE.md
    - path: PROJECT.md
      url: http://docs.0kt.ru/pirotehnika/PROJECT.md
    - path: management/TODO.md
      url: http://docs.0kt.ru/pirotehnika/management/TODO.md

# === ВХОДЯЩИЕ ===
inbox:
  upload_url: http://upload.0kt.ru/pirotehnika/
  view_url: http://docs.0kt.ru/pirotehnika/_inbox/
  path: _inbox/

# === СВЯЗИ ===
related:
  - infra/@nocodb.app
  - infra/@beget-s3.storage

ССЫЛКИ В ОТВЕТАХ CLAUDE

Правило

При создании или показе документов/таблиц — давать кликабельные ссылки.

Формат

ВЫПОЛНЕНО:
• Создано: pirotehnika/_shared/products/catalog.md
  → http://docs.0kt.ru/pirotehnika/_shared/products/catalog.md

• Обновлено: management/TODO.md
  → http://docs.0kt.ru/pirotehnika/management/TODO.md

• Таблица: Products (4626 записей)
  → http://docs.0kt.ru:8085/dashboard/#/nc/pt7k98pv0fwi1el/table/Products

• Входящие: обработан price_jf.xlsx
  → http://docs.0kt.ru/pirotehnika/_inbox/

Когда давать ссылки

Действие Ссылка
Создал .md файл → docs.0kt.ru/...
Изменил .md файл → docs.0kt.ru/...
Работал с таблицей NocoDB → docs.0kt.ru:8085/...
Обработал файл из inbox → upload.0kt.ru/...
Показал структуру проекта → docs.0kt.ru/{project}/

СКРИПТ СОЗДАНИЯ

Использование

./scripts/create-project.sh {name} {type}

# Примеры:
./scripts/create-project.sh newshop BUSINESS
./scripts/create-project.sh @analytics.service CODE

Что делает скрипт

  1. Создаёт структуру папок по стандарту
  2. Генерирует CLAUDE.md, index.yaml
  3. Создаёт базу {project}_data в NocoDB (API)
  4. Создаёт схему {project} в PostgreSQL
  5. Настраивает _inbox/ с .gitignore
  6. Регистрирует в docs.0kt.ru
  7. Выводит URL-ы доступа

Вывод скрипта

 Проект newshop создан

Доступ:
 Документация: http://docs.0kt.ru/newshop/
 Загрузка:     http://upload.0kt.ru/newshop/
 База NocoDB:  http://docs.0kt.ru:8085/dashboard/#/nc/{base_id}
 PostgreSQL:   schema: newshop @ 91.218.142.168:5432

МИГРАЦИЯ СУЩЕСТВУЮЩИХ ПРОЕКТОВ

Шаги

  1. Создать _inbox/ папку
  2. Обновить index.yaml (добавить data:, docs:, inbox:)
  3. Создать базу в NocoDB если нет
  4. Создать схему в PostgreSQL если нет
  5. Проверить доступ через docs.0kt.ru

Пример для pirotehnika

# 1. Создать inbox
mkdir -p pirotehnika/_inbox
echo '*' > pirotehnika/_inbox/.gitignore
echo '!.gitignore' >> pirotehnika/_inbox/.gitignore
echo '!README.md' >> pirotehnika/_inbox/.gitignore

# 2. Обновить index.yaml — добавить секции data:, docs:, inbox:

# 3. База уже есть (pt7k98pv0fwi1el)

# 4. Создать схему PostgreSQL
psql -h 91.218.142.168 -U nocodb -c "CREATE SCHEMA IF NOT EXISTS pirotehnika;"

# 5. Проверить docs.0kt.ru/pirotehnika/

ЧЕКЛИСТ НОВОГО ПРОЕКТА


ССЫЛКИ


Версия: 1.0.0