diff --git a/src/components/ai/AIChatModal.jsx b/src/components/ai/AIChatModal.jsx
index 2cb6f74..6858f6d 100644
--- a/src/components/ai/AIChatModal.jsx
+++ b/src/components/ai/AIChatModal.jsx
@@ -33,7 +33,7 @@ const CardContent = ({ className, children }) =>
{children}
;
/* ------------- COMPONENT ------------- */
-export default function AIChatModal({ open, onClose, context, onAccept }) {
+export default function AIChatModal({ open, onClose, context, onAccept, plan_format }) {
const [vectorStores, setVectorStores] = useState([]);
const [vectorFiles, setVectorFiles] = useState([]);
const [selectedVectorFile, setSelectedVectorFile] = useState(null);
@@ -127,7 +127,7 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
const token = session?.access_token;
// llamada
- const resp = await supabase.functions.invoke("modal-conversation", {
+ const resp = await supabase.functions.invoke("conversation-format", {
headers: { Authorization: `Bearer ${token}` },
body: { action: "start" , role:"system", content:context.cont_conversation, }
});
@@ -188,7 +188,7 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
const token = session?.access_token;
// algunas implementations esperan { action: "end", conversationId }, otras { action: "end", id }
- const { data, error } = await supabase.functions.invoke("modal-conversation", {
+ const { data, error } = await supabase.functions.invoke("conversation-format", {
headers: { Authorization: `Bearer ${token}` },
body: { action: "end", conversationId: convIdToUse }
});
@@ -211,6 +211,8 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
// ---------- SEND MESSAGE (usa conversationId) ----------
const handleConversation = async ({ text }) => {
+ console.log(plan_format);
+
if (!conversationId) {
console.warn("No hay conversación activa todavía. conversationId:", conversationId);
// si no hay conv, opcionalmente intentar crear una sin que el usuario note
@@ -245,6 +247,7 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
const payload = {
action: "message",
+ format: plan_format,
conversationId,
vectorStoreId: selectedVectorFile?.vector_store_id ?? null,
fileIds: selectedVectorFile ? [selectedVectorFile.id] : [],
@@ -259,7 +262,7 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
]
};
const { data: invokeData, error } = await supabase.functions.invoke(
- "modal-conversation",
+ "conversation-format",
{
headers: { Authorization: `Bearer ${token}` },
body: payload
diff --git a/src/components/planes/academic-sections.tsx b/src/components/planes/academic-sections.tsx
index ed47920..983cfe1 100644
--- a/src/components/planes/academic-sections.tsx
+++ b/src/components/planes/academic-sections.tsx
@@ -12,6 +12,7 @@ import { HistorialCambiosModal } from "../historico/HistorialCambiosModal"
import AIChatModal from "../ai/AIChatModal"
+
/* =====================================================
Query keys & fetcher
===================================================== */
@@ -54,6 +55,8 @@ export const planTextOptions = (planId: string) =>
staleTime: 60_000,
})
+
+
/* =====================================================
Color helpers
===================================================== */
@@ -124,6 +127,17 @@ export function AcademicSections({ planId, color }: { planId: string; color?: st
const [editing, setEditing] = useState
(null)
const [draft, setDraft] = useState("")
+ const plan_format={
+ "objetivo_general": "...",
+ "sistema_evaluacion": "...",
+ "perfil_ingreso": "...",
+ "perfil_egreso": "...",
+ "competencias_genericas": "...",
+ "competencias_especificas": "...",
+ "indicadores_desempeno": "...",
+ "pertinencia": "..."
+}
+
// --- mutation con actualización optimista ---
const updateField = useMutation({
mutationFn: async ({ key, value }: { key: keyof PlanTextFields; value: string | string[] | null }) => {
@@ -309,6 +323,7 @@ export function AcademicSections({ planId, color }: { planId: string; color?: st
/>
setopenModalIa(false)}
context={{
diff --git a/src/formatos/plan.json b/src/formatos/plan.json
new file mode 100644
index 0000000..f9c57f9
--- /dev/null
+++ b/src/formatos/plan.json
@@ -0,0 +1,10 @@
+{
+ "objetivo_general": "...",
+ "sistema_evaluacion": "...",
+ "perfil_ingreso": "...",
+ "perfil_egreso": "...",
+ "competencias_genericas": "...",
+ "competencias_especificas": "...",
+ "indicadores_desempeno": "...",
+ "pertinencia": "..."
+}
\ No newline at end of file