Skip to content

Описание базы данных

Архитектура базы данных terra_school_service#

terra_school_service.png

terra_school_service.cluster

Предназначение: Хранит список названий кластеров для школьных категорий.

Структура:

Поле Тип Описание Обязательное Пример
UUID STRING Уникальный идентификатор кластера b7612086-efb0-400d-a2e6-9ce89c8afe21
name STRING Название кластера IT, Аналитика, Финансы
priority INT Приоритет отображения кластера 1

Связь:#

ПолеUUID таблицы кластеров является первичным ключом, а поле cluster_uuid в таблице (terra_school_service.cluster_category) — внешним ключом, ссылающимся на него.

terra_school_service.cluster_category

Предназначение: Таблица для связи cluster и school_category

Структура:

Поле Тип Описание Обязательное Пример
UUID STRING Уникальный идентификатор связи cfa53dfd-2014-434b-ac41-75a109c1761d
cluster_uuid STRING Ссылка на кластер, к которому относится категория b7612086-efb0-400d-a2e6-9ce89c8afe21
category_uuid STRING Ссылка на категорию, входящую в кластер a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a13

Связь:#

Таблица cluster_category играет роль промежуточной связующей таблицы, реализуя связь многие-ко-многим. ПолеUUID таблицы cluster_category является первичным ключом, поле cluster_uuid в таблице cluster_categoryвнешним ключом, ссылающимся на него. Аналогично, поле category_uuid в таблице cluster_category является внешним ключом на полеUUID таблицы school_category.

Таблица: terra_school_service.lesson

Предназначение: Содержит информацию об учебных уроках.

Структура:

Поле Тип Описание Обязательное Пример
UUID STRING Уникальный идентификатор урока b7612086-efb0-400d-a2e6-9ce89c8afe21
title STRING Название урока Основы математики
tag STRING Тег или порядковый номер урока урок 1
description STRING Подробное описание содержания урока Урок по основам алгебры и логики
brief_information STRING Краткая аннотация Введение в предмет
school_uuid STRING Идентификатор школы, к которой относится урок 990aa177-4d0a-41f8-993f-312c5a74d048
priority INT Приоритет отображения 1
created_at TIMESTAMP Дата и время создания записи 2024-10-09 08:48:20.189941
updated_at TIMESTAMP Дата последнего обновления записи 2024-10-09 08:48:20.189941
deleted_at TIMESTAMP Дата удаления записи (если была удалена) 2024-10-09 08:48:20.189941

Связь:#

Поле school_uuid в таблице lesson является внешним ключом, указывающим на полеUUID таблицы school. Эта связь определяет, к какой школе принадлежит каждый конкретный урок.

Таблица: terra_school_service.mentor_flow_reg

Предназначение: Служит для фиксации факта ввода учеником уникального кода, полученного с браслета, в рамках заданного потока. Это служит подтверждением его участия и прохождения этапа регистрации.

Структура:

Столбец Тип данных Описание Обязательность Пример
id INT Уникальный идентификатор записи 1
mentor_flow_id INT Идентификатор наставнического потока 123
student_uuid UUID Уникальный идентификатор ученика 603e9656-64a7-423c-8ecf-2ebb1ae7e065
created_at TIMESTAMP Дата и время создания записи 2025-05-23 10:15:00
updated_at TIMESTAMP Дата и время последнего обновления записи 2025-05-23 11:00:00
deleted_at TIMESTAMP Дата и время удаления записи (soft delete) 2025-05-24 09:00:00
Таблица: terra_school_service.permissions

Предназначение: Таблица permissions хранит информацию о правах доступа пользователей (админов) к конкретным школам или функциональности в системе. Она позволяет централизованно управлять доступами и правами на уровне сущностей.

Структура:

Столбец Тип данных Описание Обязательность Пример
id INT Уникальный идентификатор записи 1
admin_uuid UUID Уникальный идентификатор администратора 8c1b02c4-3af7-4b90-a831-2d0a45fe391b
permission JSONB Список школ и выданные для них разрешения {"c94520fa-a45f-4991-889e-b865b0b4acc2": ["view_school", "edit_school_flow", "edit_school_flow_students", "edit_school_flow_materials"]}
created_at TIMESTAMP Дата и время создания записи 2025-05-22 14:00:00
updated_at TIMESTAMP Дата и время последнего обновления записи 2025-05-23 09:15:00
deleted_at TIMESTAMP Дата и время удаления записи (soft delete) 2025-05-23 09:15:00
Таблица: terra_school_service.school

Предназначение: Хранит информацию о школах, включая описание, менторов и ключевые характеристики. Используется для отображения и фильтрации школ в интерфейсе системы.

Структура:

Столбец Тип данных Описание Обязательность Пример
UUID UUID Уникальный идентификатор школы b2c1c70e-3056-4d09-9e47-2a6cb4c4f779
name STRING Название школы Школа программирования для начинающих
image_url STRING Ссылка на изображение/обложку https://terra-photo.fra1.cdn.digitaloceanspaces.com/images/school_image.png
category_uuid UUID Идентификатор категории, к которой относится школа a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a17
format STRING Формат обучения (онлайн, офлайн, смешанный и т.д.) online
main_information JSONB Основная информация о школе (цели, методики, ключевые особенности) {"Date": {"dateEnd": "2024-12-01T00:00:00Z", "dateStart": "2024-12-01T00:00:00Z"}, "Extra": "какой-то экстра", "Duration": 16, "Schedule": "расписание", "LessonsCount": 8, "SpeakersCount": 1}
mentor_uuids UUID[] Список UUID менторов, привязанных к школе {bda09f62-7e4d-4724-a949-ac6c809f7edc}
graduation_results JSONB Результаты по окончании школы (сертификат, проект, стажировка и т.д.) [{"priority": 1, "description": "Освоите РВД позиции в коммуникации, транзактный анализ по Эрику Берну"}, {"priority": 2, "description": "Поймете, как работать с контекстом, текстом и подтекстом"}
description STRING Общее описание школы Научишься видеть цифры за любыми действиями и задачами в твоем бизнесе. Изучичишь методы влияния на них. Ты уже любишь их — ведь тебе нравится их рост на банковском счете! Аналитика — это сверхспособность современного человека для принятия эффективных управленческих решений. На основе твердых фактов и цифр, а не интуиции.
target_audience JSONB Целевая аудитория [{"title": "Для новичков", "iconURL": null, "priority": 1, "description": "Наша школа подойдёт и новичкам, и маленьким цехам и даже большим швейным фабрикам."}]
acquired_skills JSONB Навыки, которые получает ученик [{"priority": 0, "description": "Ответы на вопросы. а самые активные участники получат индивидулаьные разборы и возможность работать в группе самых сильных."}]
question_and_answers JSONB Часто задаваемые вопросы и ответы [{"answer": "Terra — некоммерческое сообщество, благотворительный проект. На территории бизнес-клуба запрещено продавать какие-либо услуги.\n\nНашей миссией является борьба с бедностью, с помощью образования и бизнес-интеллекта. Мы создаем и выращиваем миллиардные компании, которые также помогают вырасти начинающим предпринимателям.\n\nБезвозмездно помогая другим, участники клуба наполняют свою жизнь смыслом и сами растут быстрее.","priority": 0,"question": "Почему бесплатно?}]"
level STRING Уровень школы (старт, запуск, прорыв, опора) launch
learning_process JSONB Описание процесса обучения [{"title": "Очные занятия", "imageURL": "https://terra-photo.fra1.cdn.digitaloceanspaces.com/images/lecture.png", "description": "2,5 месяца"}, {"title": "Длительность занятия", "imageURL": "https://terra-photo.fra1.cdn.digitaloceanspaces.com/images/feedback.png", "description": "2 часа"}, {"title": "Практика", "imageURL": "https://terra-photo.fra1.cdn.digitaloceanspaces.com/images/practice.png", "description": "10 личных встреч, может быть дольше"}]
video_url STRING Ссылка на видео школы https://youtube.com/school_promo
link STRING Внешняя ссылка на сайт школы https://school.example.com
flow_id INT Идентификатор потока, с которым связана школа 123
created_at TIMESTAMP Дата и время создания записи 2025-05-01 10:00:00
updated_at TIMESTAMP Дата и время последнего обновления 2025-05-20 16:30:00
deleted_at TIMESTAMP Дата и время удаления 2025-05-20 16:30:00
loсation JSONB Локация {"cityID": 1, "countryID": 1, "districtID": 33}

Связь:#

name key Связь с таблицей Тип связи Описание связи
category_uuid school_category Многие к одному Категория, к которой относится школа
scool_uuid school_flow Один к одному/многим Текущий или основной запуск школы (если используется)
mentor_uuids (внутренняя логика / app_user) Массив внешних ключей Список UUID менторов, связанных с этой школой
scool_uuid lesson Один ко многим Уроки, привязанные к конкретной школе
scool_uuid school_page_templates Один к одному Шаблон отображения страницы конкретной школы на фронте
Таблица: terra_school_service.school_category

Предназначение: Таблица school_category содержит список категорий, к которым может относиться школа. Используется для классификации школ по направлениям, тематике или типу программы.

Структура:

Столбец Тип данных Описание Обязательность Пример
uuid UUID Уникальный идентификатор категории a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a13
alias STRING Уникальное символьное имя категории (используется как ключ) ecommerce
created_at TIMESTAMP Дата и время создания записи 2025-05-01 09:00:00
updated_at TIMESTAMP Дата и время последнего обновления записи 2025-05-10 12:30:00
deleted_at TIMESTAMP Дата и время мягкого удаления категории 2025-05-10 12:30:00

Связь:#

Поле category_uuid в таблице school является внешним ключом, указывающим на поле uuid таблицы school_category.

Таблица: terra_school_service.school_flow_material

Предназначение: Контент и материалы, привязанные к запуску внутри конкретной школы

Структура:

Столбец Тип данных Описание Обязательность Пример
uuid UUID Уникальный идентификатор записи fbc86311-061c-426c-bff8-48eb7d70082e
school_flow_uuid UUID Уникальный идентификатор потока/запуска 4e05fbb2-38c1-49e6-b3df-c2a63ff12a6e
name STRING Название запуска Весенний поток 2025
tag STRING Краткий тег или ярлык для запуска spring_2025
content STRING Контент и материалы, связанный с запуском Этот поток ориентирован на новичков...
created_at TIMESTAMP Дата и время создания записи 2025-04-01 10:00:00
updated_at TIMESTAMP Дата и время последнего обновления записи 2025-05-10 15:30:00
deleted_at TIMESTAMP Дата и время удаления 2025-06-01 09:45:00

Связь:#

Поле flow_uuid в таблице school_flow_material является внешним ключом, указывающим на поле uuid таблицы school_flow. Эта связь определяет, к какому запуску школы (school_flow) относится конкретный учебный материал.

Таблица: terra_school_service.school_flow

Предназначение: Таблица school_flow представляет собой связь конкретной школы с её запуском. Используется для организации образовательного процесса по конкретным датам и условиям запуска.

Структура:

Столбец Тип данных Описание Обязательность Пример
uuid UUID Уникальный идентификатор запуска a13b9a2c-0d5f-4d5c-9876-2a4ec4319081
school_uuid UUID Ссылка на школу из school b2c1c70e-3056-4d09-9e47-2a6cb4c4f779
name STRING Название конкретного запуска/потока Весенний набор 2025
study_period JSONB Период обучения { "start": "2025-04-01", "end": "2025-07-01" }
registration_opened BOOLEAN Флаг открыта ли регистрация true
invite_code_registration BOOLEAN Требуется ли инвайт-код для регистрации false
need_cover_letter BOOLEAN Нужно ли мотивационное письмо true
registrations_auto_confirmation BOOLEAN Автоматически ли подтверждаются регистрации false
created_at TIMESTAMP Дата создания записи 2025-03-01 10:00:00
updated_at TIMESTAMP Дата последнего обновления записи 2025-05-20 15:30:00
deleted_at TIMESTAMP Дата и время удаления 2025-06-15 08:45:00
students_limit INTEGER Ограничение на количество студентов 100
format STRING Формат запуска (онлайн, офлайн и т.п.) online
mentor_flow_id INTEGER Ссылка на поток менторов, если используется 42
tg_link STRING Ссылка на Telegram-группу или канал https://t.me/school_launch_2025
schedule STRING Текстовое описание расписания Вторник 17:00

Связь:#

Поле school_uuid в таблице school_flow является внешним ключом, указывающим на поле uuid таблицы school. Эта связь определяет, к какой школе относится каждый конкретный запуск (поток) обучения

Таблица: terra_school_service.school_flow_registration

Предназначение: Таблица school_flow_registration фиксирует регистрацию конкретного пользователя на конкретный запуск школы. Содержит информацию о статусе, сопроводительном письме и инвайт-коде.

Структура:

Столбец Тип данных Описание Обязательность Пример
id SERIAL Уникальный идентификатор записи 1
flow_uuid UUID Ссылка на запуск школы (school_flow) fbc86311-061c-426c-bff8-48eb7d70082e
student_uuid UUID Уникальный идентификатор студента 603e9656-64a7-423c-8ecf-2ebb1ae7e065
status TEXT Статус регистрации (например: pending, approved, rejected) pending
cover_letter TEXT Сопроводительное письмо (если требуется) Я хочу попасть в эту школу, потому что...
invite_code TEXT Инвайт-код, если он необходим для регистрации X9F-42XZ
created_at TIMESTAMP Дата и время создания записи 2025-05-10 14:20:00
updated_at TIMESTAMP Дата и время последнего обновления 2025-05-11 09:00:00
deleted_at TIMESTAMP Дата и время удаления 2025-05-11 09:00:00

Связь:#

Поле flow_uuid в таблице school_flow_registration является внешним ключом, указывающим на поле uuid таблицы school_flow. Эта связь определяет, на какой конкретный запуск школы (поток) зарегистрирован студент.

Таблица: terra_school_service.school_page_templates

Предназначение: Таблица school_page_templates хранит шаблон отображения страницы конкретной школы — последовательность компонентов, из которых должна быть собрана страница на фронтенде. Позволяет гибко настраивать контентную структуру.

Структура:

Столбец Тип данных Описание Обязательность Пример
id SERIAL Уникальный идентификатор шаблона 1
school_uuid UUID Ссылка на школу из таблицы school b2c1c70e-3056-4d09-9e47-2a6cb4c4f779
components JSONB Список компонентов, отображаемых на странице, в нужном порядке [{"type": "hero", "title": "Добро пожаловать"}, {"type": "faq"}]
created_at TIMESTAMP Дата и время создания записи 2025-05-01 10:00:00
updated_at TIMESTAMP Дата и время последнего обновления 2025-05-15 13:00:00
deleted_at TIMESTAMP Мягкое удаление — дата деактивации шаблона 2025-05-15 13:00:00

Связь:#

Поле school_uuid в таблице school_page_templates является внешним ключом, указывающим на поле uuid таблицы school. Эта связь определяет, какой школе принадлежит конкретный шаблон отображения страницы на фронте.