add ai migration

This commit is contained in:
alex 2026-03-17 17:15:20 +03:00
parent 0b7a32423b
commit f6445e01ff

107
plans_migration.ts Normal file
View File

@ -0,0 +1,107 @@
// ─────────────────────────────────────────────────────────────────────────────
// 1. Подключение к базе данных и генерация клиента
// ─────────────────────────────────────────────────────────────────────────────
datasource db {
provider = "postgresql" // можно заменить на mysql, sqlite и др.
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
// ─────────────────────────────────────────────────────────────────────────────
// 2. Модели
// ─────────────────────────────────────────────────────────────────────────────
// Метаданные приложения (верхняя часть JSONфайла)
model AppInfo {
id Int @id @default(autoincrement())
version String? // "НомерВерсииПриложения"
appName String? // "ИмяПриложения"
userId String? // "НомерПользователя"
userName String? // "ИмяПользователя"
fileName String? // "ИмяФайла"
protocolNumber String? // "НомПротокСовета"
note String? // "Примечание"
yearStart String? // "ГодНачалаПодготовки"
typeGOS String? // "ТипГОСа"
activeOOPCode String? // "КодАктивногоООП"
zPerWeek Float? // "ЗЕТвНеделю"
precision Float? // "Точность"
isDvig Boolean @default(false) // "ДвИГА"
isGvig Boolean @default(false) // "ГвИГА"
semestersOnCourse Int? // "СеместровНаКурсе"
creditsHours Int? // "ЧасовВКредите"
isIndividual Boolean @default(false) // "Индивидуальный"
fullName String? // "ФИО"
isMilitary Boolean @default(false) // "Военные"
educationLevel Int? // "КодУровняОбразования"
planTypeCode Int? // "КодТипаПлана"
loadStatus Int? // "СтатусВНагрузке"
studiedHours Int? // "ИзученоКонтЧасов"
hideRPD Boolean @default(false) // "СкрытьВРПД"
hideOnSite Boolean @default(false) // "СкрытьНаСайте"
minAppVersion String? // "MinAppVersion"
}
// Заезды (массив "Заезды")
model Ride {
id Int @id @default(autoincrement())
diffgrId String @map("diffgr:id") // "diffgr:id"
rowOrder Int @map("msdata:rowOrder") // "msdata:rowOrder"
code Int // "Код"
course Int // "Курс"
session Int // "Сессия"
title String? // "Название"
duration Int // "Продолжительность"
planCode Int @map("КодПлана") // "КодПлана"
// При необходимости можно связать заезды с Планом
plan Plan? @relation(fields: [planId], references: [id])
planId Int?
}
// План компетенций (опциональная справочная модель)
model Plan {
id Int @id @default(autoincrement())
code Int @unique // "Код"
oopCode Int? @map("КодООП") // "КодООП"
abbreviation String? @map("ШифрКомпетенции") // "ШифрКомпетенции"
name String? @map("Наименование") // "Наименование"
number String? @map("Номер") // "Номер"
type Int? @map("Тип") // (не встречается в примерах, но оставлено)
view Int? @map("Вид") // (не встречается в примерах, но оставлено)
source String? @map("Источник") // "Источник"
category String? @map("Категория") // "Категория"
// Связанные компетенции и заезды
competencies Competency[]
rides Ride[]
}
// Планы компетенций (массив "ПланыКомпетенции")
model Competency {
id Int @id @default(autoincrement())
diffgrId String @map("diffgr:id") // "diffgr:id"
rowOrder Int @map("msdata:rowOrder") // "msdata:rowOrder"
code Int // "Код"
oopCode Int? @map("КодООП") // "КодООП"
abbreviation String? @map("ШифрКомпетенции") // "ШифрКомпетенции"
name String? @map("Наименование") // "Наименование"
number String? @map("Номер") // "Номер"
planCode Int @map("КодПлана") // "КодПлана"
isDeleted Boolean @map("Удалена") @default(false) // "Удалена"
source String? @map("Источник") // "Источник"
category String? @map("Категория") // "Категория"
parentCode Int? @map("КодРодителя") // "КодРодителя"
// Иерархия «родитель‑дети» (само‑референция)
parentId Int?
parent Competency? @relation("Children", fields: [parentId], references: [id])
children Competency[] @relation("Children")
// Связь с Планом (если в дальнейшем план будет отдельной сущностью)
planId Int?
plan Plan? @relation(fields: [planId], references: [id])
}