#!/bin/bash
# ═══════════════════════════════════════════════════════════════════════════════
# ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ ПЛАТФОРМЫ
# Единый источник правды для всех компонентов
# ═══════════════════════════════════════════════════════════════════════════════
#
# Версия: 1.0.0
# Дата: 2026-02-14
#
# ПРОБЛЕМА (до этого файла):
# - Хардкод путей в стандартах, скриптах, документации
# - Дублирование путей в разных местах
# - Сложно изменить конфигурацию
#
# РЕШЕНИЕ:
# - Один файл для ВСЕХ переменных платформы
# - Автозагрузка при старте bash
# - Использование переменных вместо хардкода
#
# ИСПОЛЬЗОВАНИЕ:
# source /opt/claude-workspace/system/config/platform-vars.sh
#
# АВТОЗАГРУЗКА (добавить в ~/.bashrc):
# [ -f /opt/claude-workspace/system/config/platform-vars.sh ] && \
# source /opt/claude-workspace/system/config/platform-vars.sh
#
# ═══════════════════════════════════════════════════════════════════════════════
# ═══════════════════════════════════════════════════════════════════════════════
# БАЗОВЫЕ ПРОСТРАНСТВА
# ═══════════════════════════════════════════════════════════════════════════════
# Workspace — код, документация, конфигурация (Git)
export WORKSPACE=${WORKSPACE:-/opt/claude-workspace}
# Dataspace — данные проектов (S3 mount)
export DATASPACE=${DATASPACE:-/mnt/beget-s3}
# Infra — инфраструктура, бекапы, логи
export INFRA=${INFRA:-/mnt/beget-infra}
export INFRA_SERVER=${INFRA_SERVER:-/mnt/beget-infra/dev-pro}
# ═══════════════════════════════════════════════════════════════════════════════
# СТРУКТУРА ПЛАТФОРМЫ
# ═══════════════════════════════════════════════════════════════════════════════
# Методология, стандарты, теория
export ARCHITECT=$WORKSPACE/architect
# Ядро платформы (агенты, скрипты, сервисы)
export SYSTEM=$WORKSPACE/system
# Библиотека переиспользуемого кода
export LIBRARY=$WORKSPACE/library
# Инфраструктура
export INFRASTRUCTURE=$WORKSPACE/infra
# Очередь задач
export QUEUE=$WORKSPACE/.queue
# Контекст (протокол, словари)
export CONTEXT=$WORKSPACE/.context
# ═══════════════════════════════════════════════════════════════════════════════
# ПРОЕКТЫ
# ═══════════════════════════════════════════════════════════════════════════════
# Namespace проектов (одинаковый в workspace и dataspace!)
export PROJECTS_NAMESPACE="projects/org"
# Корневая папка проектов в workspace
export PROJECTS_WS=$WORKSPACE/$PROJECTS_NAMESPACE
# Корневая папка проектов в dataspace
export PROJECTS_DATA=$DATASPACE/$PROJECTS_NAMESPACE
# Корневая папка проектов в infra
export PROJECTS_INFRA=$INFRA/$PROJECTS_NAMESPACE
# ═══════════════════════════════════════════════════════════════════════════════
# ВЕБ-СЕРВИСЫ
# ═══════════════════════════════════════════════════════════════════════════════
# Просмотр документации (.md файлов)
export DOCS_URL="http://docs.0kt.ru"
# Загрузка файлов в _inbox
export UPLOAD_URL="http://upload.0kt.ru"
# Публикация файлов на скачивание
export SHARE_URL="http://share.0kt.ru"
export SHARE_IP="91.218.142.168"
export SHARE_PORT="8897"
# NocoDB (управление данными)
export NOCODB_URL="http://docs.0kt.ru:8085"
# ═══════════════════════════════════════════════════════════════════════════════
# СИСТЕМНЫЕ КОМПОНЕНТЫ
# ═══════════════════════════════════════════════════════════════════════════════
# Конфигурация
export PLATFORM_CONFIG=$SYSTEM/config
# Агенты
export PLATFORM_AGENTS=$SYSTEM/agents
# Планировщик
export PLATFORM_SCHEDULER=$SYSTEM/scheduler
# Мониторинг
export PLATFORM_MONITOR=$SYSTEM/monitor
# Сервисы
export PLATFORM_SERVICES=$SYSTEM/services
# Скрипты
export PLATFORM_SCRIPTS=$SYSTEM/scripts
# ═══════════════════════════════════════════════════════════════════════════════
# ИНФРАСТРУКТУРА
# ═══════════════════════════════════════════════════════════════════════════════
# Скрипты инфраструктуры
export INFRA_SCRIPTS=$INFRASTRUCTURE/scripts
# Конфигурация сервисов
export INFRA_CONFIG=$INFRASTRUCTURE/config
# Логи (архив в S3)
export INFRA_LOGS=$INFRA/logs
# Бэкапы
export INFRA_BACKUPS=$INFRA/dev-pro/backup
export INFRA_GOLDEN=$INFRA_BACKUPS/golden
export INFRA_RECOVERY=$INFRA_BACKUPS/RECOVERY
export INFRA_LATEST=$INFRA_BACKUPS/L5-STATE/latest
# Скрипты бэкапов
export BACKUP_SCRIPTS=$WORKSPACE/infra/@backup.service/scripts
# ═══════════════════════════════════════════════════════════════════════════════
# PLATFORM V2 — ТРЁХСЕРВЕРНАЯ АРХИТЕКТУРА (ПЕРЕХОДНЫЙ ПЕРИОД)
# ═══════════════════════════════════════════════════════════════════════════════
#
# Сейчас: всё на одном сервере, переменные указывают на текущие пути
# При разделении: меняем только значения переменных, код не трогаем
#
# Подробнее: architect/concept/PLATFORM_V2.md
#
# ─── Architect сервер (методология, стандарты, библиотека) ───────────────────
# Сейчас: $WORKSPACE (монорепо)
# После разделения: отдельный сервер
export ARCHITECT_HOME=${ARCHITECT_HOME:-$WORKSPACE}
# ─── Platform сервер (разработка проектов, Claude) ───────────────────────────
# Сейчас: $WORKSPACE (монорепо)
# После разделения: /opt/platform или аналог
export PLATFORM_HOME=${PLATFORM_HOME:-$WORKSPACE}
# ─── Проекты в разработке (на Platform сервере) ──────────────────────────────
# Сейчас: $PROJECTS_WS
# После разделения: $PLATFORM_HOME/projects или отдельная папка
export PROJECTS_DEV=${PROJECTS_DEV:-$PROJECTS_WS}
# ─── Management сервер (проекты в production) ────────────────────────────────
# Сейчас: $WORKSPACE (монорепо)
# После разделения: отдельный сервер для запущенных проектов
export MANAGEMENT_HOME=${MANAGEMENT_HOME:-$WORKSPACE}
# ─── ProCoder проекты в production ───────────────────────────────────────────
# ProCoder = проекты на собственном кодере платформы (не на внешних стеках)
# Сейчас: $PROJECTS_WS
# После разделения: $MANAGEMENT_HOME/procoder
export PROCODER_HOME=${PROCODER_HOME:-$PROJECTS_WS}
# ─── Git-серверы ─────────────────────────────────────────────────────────────
# Сейчас: локальный git ($WORKSPACE)
# После разделения: отдельные git-серверы (Gitea self-hosted или аналог)
export GIT_PLATFORM_URL=${GIT_PLATFORM_URL:-"local:$WORKSPACE"}
export GIT_PROJECTS_URL=${GIT_PROJECTS_URL:-"local:$PROJECTS_DEV"}
# ═══════════════════════════════════════════════════════════════════════════════
# ИМПОРТ ФУНКЦИЙ ДЛЯ ПРОЕКТОВ
# ═══════════════════════════════════════════════════════════════════════════════
# Импортируем функции для работы с проектами
if [ -f "$PLATFORM_CONFIG/project-paths.sh" ]; then
source "$PLATFORM_CONFIG/project-paths.sh"
fi
# ═══════════════════════════════════════════════════════════════════════════════
# HELP
# ═══════════════════════════════════════════════════════════════════════════════
platform_vars_help() {
cat << 'EOF'
═══════════════════════════════════════════════════════════════════════════════
ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ ПЛАТФОРМЫ
═══════════════════════════════════════════════════════════════════════════════
ИСПОЛЬЗОВАНИЕ:
source /opt/claude-workspace/system/config/platform-vars.sh
БАЗОВЫЕ ПРОСТРАНСТВА:
$WORKSPACE /opt/claude-workspace (Код, документация)
$DATASPACE /mnt/beget-s3 (Данные проектов)
$INFRA /mnt/beget-infra (Инфра, бекапы)
СТРУКТУРА ПЛАТФОРМЫ:
$ARCHITECT $WORKSPACE/architect
$SYSTEM $WORKSPACE/system
$LIBRARY $WORKSPACE/library
$INFRASTRUCTURE $WORKSPACE/infra
$QUEUE $WORKSPACE/.queue
$CONTEXT $WORKSPACE/.context
ПРОЕКТЫ:
$PROJECTS_NAMESPACE projects/org
$PROJECTS_WS $WORKSPACE/projects/org
$PROJECTS_DATA $DATASPACE/projects/org
$PROJECTS_INFRA $INFRA/projects/org
ВЕБ-СЕРВИСЫ:
$DOCS_URL http://docs.0kt.ru
$UPLOAD_URL http://upload.0kt.ru
$SHARE_URL http://share.0kt.ru
$NOCODB_URL http://docs.0kt.ru:8085
СИСТЕМНЫЕ КОМПОНЕНТЫ:
$PLATFORM_CONFIG $SYSTEM/config
$PLATFORM_AGENTS $SYSTEM/agents
$PLATFORM_SCHEDULER $SYSTEM/scheduler
$PLATFORM_MONITOR $SYSTEM/monitor
$PLATFORM_SERVICES $SYSTEM/services
$PLATFORM_SCRIPTS $SYSTEM/scripts
ИНФРАСТРУКТУРА:
$INFRA_SCRIPTS $INFRASTRUCTURE/scripts
$INFRA_CONFIG $INFRASTRUCTURE/config
$INFRA_LOGS $INFRA/logs
$INFRA_BACKUPS $INFRA/backups
ФУНКЦИИ ПРОЕКТОВ (из project-paths.sh):
project_ws NAME Путь в workspace
project_data NAME Путь в dataspace
project_infra NAME Путь в infra
set_project NAME Экспортировать переменные проекта
ПРИМЕРЫ:
# Использовать в скриптах вместо хардкода
echo "Конфиг: $PLATFORM_CONFIG/telegram.yaml"
echo "Проект: $(project_ws pirotehnika)"
# Ссылки в документации
echo "Документ: $DOCS_URL/projects/pirotehnika/PROJECT.md"
echo "NocoDB: $NOCODB_URL/dashboard/#/nc/{base_id}/table/Products"
АВТОЗАГРУЗКА:
Добавить в ~/.bashrc:
[ -f /opt/claude-workspace/system/config/platform-vars.sh ] && \
source /opt/claude-workspace/system/config/platform-vars.sh
═══════════════════════════════════════════════════════════════════════════════
EOF
}
# ═══════════════════════════════════════════════════════════════════════════════
# INIT
# ═══════════════════════════════════════════════════════════════════════════════
# Если вызван как скрипт (не source)
if [ "${BASH_SOURCE[0]}" = "${0}" ]; then
platform_vars_help
fi