feat: add 'vaul' dependency and update database types for conversation management

This commit is contained in:
2026-02-12 17:26:47 -06:00
parent d6c567195a
commit c280faef22
4 changed files with 136 additions and 8 deletions

View File

@@ -43,6 +43,7 @@
"tailwindcss": "^4.0.6",
"tw-animate-css": "^1.3.6",
"use-debounce": "^10.1.0",
"vaul": "^1.1.2",
},
"devDependencies": {
"@tanstack/devtools-vite": "^0.3.11",
@@ -1388,6 +1389,8 @@
"use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="],
"vaul": ["vaul@1.1.2", "", { "dependencies": { "@radix-ui/react-dialog": "^1.1.1" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA=="],
"vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="],
"vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="],

View File

@@ -165,7 +165,7 @@ export async function plan_asignaturas_list(
const { data, error } = await supabase
.from('asignaturas')
.select(
'id,plan_estudio_id,horas_academicas,horas_independientes,estructura_id,codigo,nombre,tipo,creditos,numero_ciclo,linea_plan_id,orden_celda,estado,datos,contenido_tematico,asignatura_hash,conversation_id,tipo_origen,meta_origen,creado_por,actualizado_por,creado_en,actualizado_en',
'id,plan_estudio_id,horas_academicas,horas_independientes,estructura_id,codigo,nombre,tipo,creditos,numero_ciclo,linea_plan_id,orden_celda,estado,datos,contenido_tematico,asignatura_hash,tipo_origen,meta_origen,creado_por,actualizado_por,creado_en,actualizado_en',
)
.eq('plan_estudio_id', planId)
.order('numero_ciclo', { ascending: true, nullsFirst: false })

View File

@@ -41,7 +41,7 @@ export async function subjects_get(subjectId: UUID): Promise<Asignatura> {
.from('asignaturas')
.select(
`
id,plan_estudio_id,estructura_id,codigo,nombre,tipo,creditos,numero_ciclo,linea_plan_id,orden_celda,estado,datos,contenido_tematico,horas_academicas,horas_independientes,asignatura_hash,conversation_id,tipo_origen,meta_origen,creado_por,actualizado_por,creado_en,actualizado_en,
id,plan_estudio_id,estructura_id,codigo,nombre,tipo,creditos,numero_ciclo,linea_plan_id,orden_celda,estado,datos,contenido_tematico,horas_academicas,horas_independientes,asignatura_hash,tipo_origen,meta_origen,creado_por,actualizado_por,creado_en,actualizado_en,
planes_estudio(
id,carrera_id,estructura_id,nombre,nivel,tipo_ciclo,numero_ciclos,datos,estado_actual_id,activo,tipo_origen,meta_origen,creado_por,actualizado_por,creado_en,actualizado_en,
carreras(id,facultad_id,nombre,nombre_corto,clave_sep,activa, facultades(id,nombre,nombre_corto,color,icono))

View File

@@ -88,7 +88,6 @@ export type Database = {
asignatura_hash: string | null
codigo: string | null
contenido_tematico: Json
conversation_id: string | null
creado_en: string
creado_por: string | null
creditos: number
@@ -113,7 +112,6 @@ export type Database = {
asignatura_hash?: string | null
codigo?: string | null
contenido_tematico?: Json
conversation_id?: string | null
creado_en?: string
creado_por?: string | null
creditos: number
@@ -138,7 +136,6 @@ export type Database = {
asignatura_hash?: string | null
codigo?: string | null
contenido_tematico?: Json
conversation_id?: string | null
creado_en?: string
creado_por?: string | null
creditos?: number
@@ -392,6 +389,135 @@ export type Database = {
},
]
}
conversaciones_asignatura: {
Row: {
archivado_en: string | null
archivado_por: string | null
asignatura_id: string
conversacion_json: Json
creado_en: string
creado_por: string | null
estado: Database['public']['Enums']['estado_conversacion']
id: string
intento_archivado: number
openai_conversation_id: string
}
Insert: {
archivado_en?: string | null
archivado_por?: string | null
asignatura_id: string
conversacion_json?: Json
creado_en?: string
creado_por?: string | null
estado?: Database['public']['Enums']['estado_conversacion']
id?: string
intento_archivado?: number
openai_conversation_id: string
}
Update: {
archivado_en?: string | null
archivado_por?: string | null
asignatura_id?: string
conversacion_json?: Json
creado_en?: string
creado_por?: string | null
estado?: Database['public']['Enums']['estado_conversacion']
id?: string
intento_archivado?: number
openai_conversation_id?: string
}
Relationships: [
{
foreignKeyName: 'conversaciones_asignatura_archivado_por_fkey'
columns: ['archivado_por']
isOneToOne: false
referencedRelation: 'usuarios_app'
referencedColumns: ['id']
},
{
foreignKeyName: 'conversaciones_asignatura_asignatura_id_fkey'
columns: ['asignatura_id']
isOneToOne: false
referencedRelation: 'asignaturas'
referencedColumns: ['id']
},
{
foreignKeyName: 'conversaciones_asignatura_creado_por_fkey'
columns: ['creado_por']
isOneToOne: false
referencedRelation: 'usuarios_app'
referencedColumns: ['id']
},
]
}
conversaciones_plan: {
Row: {
archivado_en: string | null
archivado_por: string | null
conversacion_json: Json
creado_en: string
creado_por: string | null
estado: Database['public']['Enums']['estado_conversacion']
id: string
intento_archivado: number
openai_conversation_id: string
plan_estudio_id: string
}
Insert: {
archivado_en?: string | null
archivado_por?: string | null
conversacion_json?: Json
creado_en?: string
creado_por?: string | null
estado?: Database['public']['Enums']['estado_conversacion']
id?: string
intento_archivado?: number
openai_conversation_id: string
plan_estudio_id: string
}
Update: {
archivado_en?: string | null
archivado_por?: string | null
conversacion_json?: Json
creado_en?: string
creado_por?: string | null
estado?: Database['public']['Enums']['estado_conversacion']
id?: string
intento_archivado?: number
openai_conversation_id?: string
plan_estudio_id?: string
}
Relationships: [
{
foreignKeyName: 'conversaciones_plan_archivado_por_fkey'
columns: ['archivado_por']
isOneToOne: false
referencedRelation: 'usuarios_app'
referencedColumns: ['id']
},
{
foreignKeyName: 'conversaciones_plan_creado_por_fkey'
columns: ['creado_por']
isOneToOne: false
referencedRelation: 'usuarios_app'
referencedColumns: ['id']
},
{
foreignKeyName: 'conversaciones_plan_plan_estudio_id_fkey'
columns: ['plan_estudio_id']
isOneToOne: false
referencedRelation: 'planes_estudio'
referencedColumns: ['id']
},
{
foreignKeyName: 'conversaciones_plan_plan_estudio_id_fkey'
columns: ['plan_estudio_id']
isOneToOne: false
referencedRelation: 'plantilla_plan'
referencedColumns: ['plan_estudio_id']
},
]
}
estados_plan: {
Row: {
clave: string
@@ -675,7 +801,6 @@ export type Database = {
actualizado_en: string
actualizado_por: string | null
carrera_id: string
conversation_id: string | null
creado_en: string
creado_por: string | null
datos: Json
@@ -696,7 +821,6 @@ export type Database = {
actualizado_en?: string
actualizado_por?: string | null
carrera_id: string
conversation_id?: string | null
creado_en?: string
creado_por?: string | null
datos?: Json
@@ -717,7 +841,6 @@ export type Database = {
actualizado_en?: string
actualizado_por?: string | null
carrera_id?: string
conversation_id?: string | null
creado_en?: string
creado_por?: string | null
datos?: Json
@@ -1088,6 +1211,7 @@ export type Database = {
}
Enums: {
estado_asignatura: 'borrador' | 'revisada' | 'aprobada' | 'generando'
estado_conversacion: 'ACTIVA' | 'ARCHIVANDO' | 'ARCHIVADA' | 'ERROR'
estado_tarea_revision: 'PENDIENTE' | 'COMPLETADA' | 'OMITIDA'
fuente_cambio: 'HUMANO' | 'IA'
nivel_plan_estudio:
@@ -1261,6 +1385,7 @@ export const Constants = {
public: {
Enums: {
estado_asignatura: ['borrador', 'revisada', 'aprobada', 'generando'],
estado_conversacion: ['ACTIVA', 'ARCHIVANDO', 'ARCHIVADA', 'ERROR'],
estado_tarea_revision: ['PENDIENTE', 'COMPLETADA', 'OMITIDA'],
fuente_cambio: ['HUMANO', 'IA'],
nivel_plan_estudio: [