architect/standards/arch-project-it-structure.md

type: standard
layer: arch
object: project-it
aspect: structure
form: table
title: "IT-проект: двумерная модель тип × стек"
status: active
version: 1.0.0
date: 2026-04-11
knowledge_level: У1
parent: arch-project-structure.md
deps:
- arch-project-structure.md
- arch-stack-bootstrap.md
- arch-class-system.md


IT-проект: двумерная модель

IT-проект определяется по двум осям: тип системы (что строим) × стек (на чём строим). Без обеих координат нет формальной основы для выбора @{стек}.coder, шаблона и паттернов деплоя.


1. ДВЕ ОСИ

         СТЕК →
         drupal   python   nextjs   cs-cart  ...
ТИП  ↓
web-cms    ✅       —        —         ✅      ...
web-api    —        ✅       —         —       ...
web-ui     —        —        ✅        —       ...
bot        —        ✅       —         —       ...
web-shop   ✅       —        ✅        ✅      ...

Тип = назначение системы (что делает для бизнеса)
Стек = технология реализации (на чём написано)

Одна точка на плоскости = конкретный вид IT-проекта.


2. РЕЕСТР ТИПОВ СИСТЕМ

ID типа Описание Примеры
web-cms Контент-система, публичный сайт Каталог, корпоративный сайт
web-shop Интернет-магазин с корзиной и оплатой lideravto, pirotehnika
web-api REST/GraphQL API без UI Backend для мобильного приложения
web-ui Frontend SPA/SSR Личный кабинет, дашборд
bot Telegram-бот / webhook Уведомления, ввод данных
data-pipeline ETL, импорт, обработка данных Синхронизация с Ozon
integration Коннектор между системами Ozon API ↔ CRM
platform-service Сервис платформы (не проект) @vault.service, @md-viewer

3. МАТРИЦА ТИП × СТЕК

drupal python/fastapi nextjs python/aiogram cs-cart
web-cms ✅ осн.
web-shop ✅ + Commerce ✅ legacy
web-api ⚡ (REST Views) ✅ осн.
web-ui ⚡ (Twig) ✅ осн.
bot ✅ осн. ✅ осн.
data-pipeline ✅ осн.
integration ✅ осн.

✅ осн. = основной выбор · ⚡ = возможно, но не оптимально · — = не подходит


4. ОБЪЯВЛЕНИЕ В ПРОЕКТЕ

В index.yaml IT-проекта:

type: it
class: ItProject
system_type: web-shop   # тип системы (§2)
stack: drupal           # стек (из arch-stack-bootstrap.md)
coder: "@drupal.coder"  # назначенный кодер
version: "1.0.0"

В CLAUDE.md проекта — раздел СТЕК:

## СТЕК

| Параметр | Значение |
|---------|---------|
| Тип системы | web-shop |
| Стек | Drupal 11.3 + Commerce 3.x |
| Кодер | @drupal.coder |
| База | PostgreSQL 15 |
| Деплой | Docker Compose |

5. КАК ОПРЕДЕЛИТЬ ТИП ПРОЕКТА

Алгоритм:

1. Нужен ли публичный URL?
   Да  веб-тип (web-cms / web-shop / web-api / web-ui)
   Нет  сервис-тип (bot / data-pipeline / integration)

2. Есть ли корзина и оплата?
   Да  web-shop
   Нет, но есть контент  web-cms

3. Нужен ли API?
   Только API  web-api
   API + UI  web-api + web-ui (два проекта)

4. Это бот?
   Telegram-бот  bot

5. Это обработка данных?
   ETL, импорт  data-pipeline
   Коннектор систем  integration

6. НЕСКОЛЬКО СТЕКОВ В ПРОЕКТЕ

Крупный проект может включать несколько стеков:

# index.yaml
type: it
class: ItProject
system_type: web-shop
stack: drupal              # основной стек
additional_stacks:
  - python                 # для data-pipeline
coder: "@drupal.coder"
pipeline_coder: "@python.coder"

Правило: основной стек определяет основного кодера. Дополнительные — отдельные модули.


7. СВЯЗАННЫЕ ДОКУМЕНТЫ

Родитель:
- arch-project-structure.md — структура IT-проекта

Связанные:
- arch-stack-bootstrap.md — реестр стеков и шаблоны
- arch-class-system.md — ItProject класс
- arch-agent-registry.md — кодеры: @drupal.coder, @python.coder