1import{d as nl,aA as n,s as o,p as e,bn as g,bg as Q,F as y,aO as j,a$ as i,bh as C,w as f,ap as w,bd as il,r as k,bp as re,aJ as h,o as b,ba as Al,bb as Ul,bk as Ol,au as Vl,q as be,ar as Ae,x as Le,b4 as te}from"../js/app-CNdFePcO.js";import ze from"./vue3-apexcharts-DEApJAbp.js";import Dl from"./sweetalert2.esm.all-C2Wuf_dN.js";import{o as Ie,m as O,s as N,p as K,r as Oe,a as Ue,i as El,k as ge,w as Sl,L as Fl,e as Nl}from"./index-BcTHpc0d.js";import"./main-D6V-atOV.js";import"./horizontal-nav.vue_vue_type_style_index_0_scoped_5eb078ae_lang-D9gKHJdp.js";import"./PwaInstallButton-b5b9GheP.js";/* empty css */import"./messagingStore-C9TTqHEN.js";import"./logo-BPXRvMPO.js";import"./logo-light-D6djr6jC.js";const Bl={class:"form-card"},Ll={class:"form-grid cols-3"},zl=["value"],Il=["value"],Rl={class:"span-2"},ql={class:"span-3"},Ml={class:"form-card"},Tl={class:"source-grid"},Hl={class:"source-picker"},Gl={class:"form-card"},Jl={key:0,class:"inline-state"},Yl={key:1,class:"inline-state"},Wl={class:"objective-toolbar"},Kl={class:"objective-grid"},Ql=["value"],Xl={class:"axes-panel"},Zl={key:0,class:"axis-list"},ea=["onUpdate:modelValue"],la=["onUpdate:modelValue"],aa=["value"],sa=["onClick"],ta={class:"form-card"},ia={class:"unit-editor-list"},na=["disabled","onClick"],oa={class:"form-grid cols-4"},ra=["onUpdate:modelValue"],ua={class:"span-2"},da=["onUpdate:modelValue"],ca=["onUpdate:modelValue"],pa=["onUpdate:modelValue"],va=["onUpdate:modelValue"],ma=["onUpdate:modelValue"],ba={class:"span-4"},ga=["onUpdate:modelValue"],_a=["value"],fa={class:"span-4"},ya=["onUpdate:modelValue"],xa={class:"span-2"},ka=["onUpdate:modelValue"],wa={class:"span-2"},ha=["onUpdate:modelValue"],Ca={class:"span-2"},ja=["onUpdate:modelValue"],$a={class:"span-2"},Pa=["onUpdate:modelValue"],Aa={class:"manual-actions"},Ua={key:0,class:"publish-switch"},Oa={key:1,class:"publish-note"},Va=["disabled"],Da={__name:"ManualCurriculumProgramForm",props:{context:{type:Object,required:!0},matrix:{type:Object,required:!0},capabilities:{type:Object,default:()=>({})}},emits:["created"],setup(ue,{emit:$}){const L=ue,_e=$,E=new Date().getFullYear(),z=(d=1)=>({unit_code:`U${d}`,official_title:`Unidad ${d}`,purpose:"",semester:d<=2?1:2,estimated_pedagogical_hours:"",page_start:"",page_end:"",objective_ids:[],skills_text:"",attitudes_text:"",knowledge_text:"",keywords_text:""}),r=h({schedule_subject_id:"",education_level_id:"",official_name:"",official_code:"",description:"",issuing_authority:"Ministerio de Educación",decree:"",edition:"",publication_year:E,official_url:"",estimated_weeks:38,estimated_pedagogical_hours:"",source_page_count:"",source_file:null,objective_ids:[],axes:[],units:[z(1)],publish_now:!1}),A=h([]),I=h(""),v=h(!1),m=h(!1),Y=b(()=>[...L.matrix.rows||[]].map(d=>d.subject).sort((d,a)=>d.name.localeCompare(a.name,"es"))),F=b(()=>L.matrix.levels||[]),T=b(()=>Y.value.find(d=>Number(d.id)===Number(r.value.schedule_subject_id))),B=b(()=>F.value.find(d=>Number(d.id)===Number(r.value.education_level_id))),ie=b(()=>!!L.capabilities.can_publish_curriculum_programs),X=b(()=>{const d=I.value.trim().toLocaleLowerCase("es");return A.value.filter(a=>d?`${a.code} ${a.description} ${a.axis_code}`.toLocaleLowerCase("es").includes(d):!0)}),V=b(()=>{const d=new Set(r.value.objective_ids.map(Number));return A.value.filter(a=>d.has(Number(a.id)))}),Z=d=>String(d||"Eje curricular").toLocaleLowerCase("es").replaceAll("_"," ").replace(/(^|\s)\S/g,a=>a.toLocaleUpperCase("es")).replace(/\b(De|Del|La|Las|El|Los|Y|En)\b/g,(a,S,u)=>u===0?a:a.toLocaleLowerCase("es")),R=d=>String(d||"").split(/\r?\n|;/).map(a=>a.trim()).filter(Boolean),D=()=>{!T.value||!B.value||(r.value.official_name||(r.value.official_name=`${T.value.name} · Programa de Estudio · ${B.value.name}`),r.value.official_code||(r.value.official_code=`${T.value.code||"PROG"}-${B.value.grade_code}`))},W=async()=>{var d;if(D(),r.value.objective_ids=[],r.value.axes=[],r.value.units.forEach(a=>a.objective_ids=[]),A.value=[],!(!r.value.schedule_subject_id||!((d=B.value)!=null&&d.grade_co
1de))){v.value=!0;try{A.value=Ie(await O.curriculumObjectives({school_id:L.context.school_id,academic_year_id:L.context.academic_year_id,schedule_subject_id:r.value.schedule_subject_id,grade_code:B.value.grade_code,status:"active",per_page:100})).filter(a=>["OA","OAH"].includes(a.objective_type))}catch(a){await N(a,"No se pudieron cargar los OA")}finally{v.value=!1}}},ee=()=>{r.value.objective_ids=A.value.map(d=>d.id)},H=()=>{r.value.objective_ids=[],r.value.axes=[],r.value.units.forEach(d=>d.objective_ids=[])},ne=()=>{const d=new Map;V.value.filter(a=>a.objective_type==="OA").forEach(a=>{const S=a.axis_code||"EJE_GENERAL";d.has(S)||d.set(S,[]),d.get(S).push(a.id)}),r.value.axes=[...d.entries()].map(([a,S])=>({name:Z(a),description:"",objective_ids:S}))},q=()=>r.value.axes.push({name:"",description:"",objective_ids:[]}),M=d=>r.value.axes.splice(d,1),le=()=>r.value.units.push(z(r.value.units.length+1)),fe=d=>{r.value.units.length>1&&r.value.units.splice(d,1)},de=d=>{var a;r.value.source_file=((a=d.target.files)==null?void 0:a[0])||null},ce=d=>`${d.code} · ${d.description}`,Ve=()=>!r.value.schedule_subject_id||!r.value.education_level_id?"Selecciona la asignatura y el nivel.":r.value.official_name.trim()?r.value.objective_ids.length?!r.value.units.length||r.value.units.some(d=>!d.official_title.trim()||!d.objective_ids.length)?"Cada unidad debe tener tÃtulo y al menos un OA.":r.value.publish_now&&!r.value.source_file?"Adjunta el PDF oficial antes de publicar.":null:"Selecciona al menos un objetivo de aprendizaje.":"Ingresa el nombre oficial del programa.",De=async()=>{const d=Ve();if(d)return N(new Error(d),"Revisa el programa");m.value=!0;try{const a=new FormData,S=["schedule_subject_id","education_level_id","official_name","official_code","description","issuing_authority","decree","edition","publication_year","official_url","estimated_weeks","estimated_pedagogical_hours","source_page_count"];a.set("school_id",L.context.school_id),a.set("academic_year_id",L.context.academic_year_id),S.forEach(_=>{r.value[_]!==""&&r.value[_]!==null&&a.set(_,r.value[_])}),a.set("publish_now",r.value.publish_now?"1":"0"),a.set("objective_ids",JSON.stringify(r.value.objective_ids)),a.set("axes",JSON.stringify(r.value.axes)),a.set("units",JSON.stringify(r.value.units.map(_=>({unit_code:_.unit_code,official_title:_.official_title,purpose:_.purpose||null,semester:_.semester||null,estimated_pedagogical_hours:_.estimated_pedagogical_hours||null,page_start:_.page_start||null,page_end:_.page_end||null,objective_ids:_.objective_ids,skills:R(_.skills_text),attitudes:R(_.attitudes_text),knowledge:R(_.knowledge_text),keywords:R(_.keywords_text)})))),r.value.source_file&&a.set("source_file",r.value.source_file);const u=K(await O.createManualCurriculumProgram(a));await Oe(r.value.publish_now?"Programa publicado":"Borrador creado","La creación manual omitió la extracción automática y conservó la trazabilidad ingresada."),_e("created",u)}catch(a){await N(a,"No se pudo crear el programa")}finally{m.value=!1}};return(d,a)=>{var S;return n(),o("form",{class:"manual-program",onSubmit:re(De,["prevent"])},[a[68]||(a[68]=e("header",{class:"manual-hero"},[e("div",{class:"manual-hero__icon"},[e("i",{class:"bx bx-edit-alt"})]),e("div",null,[e("span",null,"VÃa rápida con control humano"),e("h3",null,"Crear programa curricular manualmente"),e("p",null,"Registra la estructura oficial sin esperar la lectura completa del PDF. El documento se cifra y conserva como respaldo.")]),e("div",{class:"manual-hero__badge"},[e("strong",null,"4 pasos"),e("small",null,"sin procesamiento OCR")])],-1)),e("section",Bl,[a[30]||(a[30]=e("div",{class:"step-heading"},[e("span",null,"1"),e("div",null,[e("strong",null,"Identidad curricular"),e("small",null,"Define asignatura, nivel y versión oficial.")])],-1)),e("div",Ll,[e("label",null,[a[17]||(a[17]=e("span",null,"Asignatura *",-1)),g(e("select",{"onUpdate:modelValue":a[0]||(a[0]=u=>r.value.schedule_subject_id=u),onChange:W},[a[16]||(a[16]=e("option",{value:""},"Seleccionarâ¦",-1)),(n(!0),o(y,null,j(Y.value,u=>(n(),o("option",{key:u.id,value:u.id},i(u.name),9,zl))),128))],544),[[Q,r.value.schedule_subject_id]])]),e("label",null,[a[19]||(a[19]=e("span",null,"Nivel de enseñanza *",-1)),g(e("select",{"onUpdate:modelValue":a[1]||(a[1]=u=>r.value.education_level_id=u),onChange:W},[a[18]||(a[18]=e("option",{value:""},"Seleccionarâ¦",-1)),(n(!0),o(y,null,j(F.value,u=>(n(),o("option",{key:u.id,value:u.id}
1,i(u.name)+" · "+i(u.grade_code),9,Il))),128))],544),[[Q,r.value.education_level_id]])]),e("label",null,[a[20]||(a[20]=e("span",null,"Código institucional",-1)),g(e("input",{"onUpdate:modelValue":a[2]||(a[2]=u=>r.value.official_code=u),placeholder:"CN-1B-2018"},null,512),[[C,r.value.official_code]])]),e("label",Rl,[a[21]||(a[21]=e("span",null,"Nombre oficial *",-1)),g(e("input",{"onUpdate:modelValue":a[3]||(a[3]=u=>r.value.official_name=u),placeholder:"Nombre completo del programa"},null,512),[[C,r.value.official_name]])]),e("label",null,[a[22]||(a[22]=e("span",null,"Autoridad emisora *",-1)),g(e("input",{"onUpdate:modelValue":a[4]||(a[4]=u=>r.value.issuing_authority=u)},null,512),[[C,r.value.issuing_authority]])]),e("label",null,[a[23]||(a[23]=e("span",null,"Decreto o resolución",-1)),g(e("input",{"onUpdate:modelValue":a[5]||(a[5]=u=>r.value.decree=u),placeholder:"Decreto N.ºâ¦"},null,512),[[C,r.value.decree]])]),e("label",null,[a[24]||(a[24]=e("span",null,"Edición",-1)),g(e("input",{"onUpdate:modelValue":a[6]||(a[6]=u=>r.value.edition=u),placeholder:"Segunda edición 2018"},null,512),[[C,r.value.edition]])]),e("label",null,[a[25]||(a[25]=e("span",null,"Año de publicación",-1)),g(e("input",{"onUpdate:modelValue":a[7]||(a[7]=u=>r.value.publication_year=u),type:"number",min:"1900",max:"2200"},null,512),[[C,r.value.publication_year,void 0,{number:!0}]])]),e("label",null,[a[26]||(a[26]=e("span",null,"Semanas",-1)),g(e("input",{"onUpdate:modelValue":a[8]||(a[8]=u=>r.value.estimated_weeks=u),type:"number",min:"1",max:"60"},null,512),[[C,r.value.estimated_weeks,void 0,{number:!0}]])]),e("label",null,[a[27]||(a[27]=e("span",null,"Horas pedagógicas",-1)),g(e("input",{"onUpdate:modelValue":a[9]||(a[9]=u=>r.value.estimated_pedagogical_hours=u),type:"number",min:"1"},null,512),[[C,r.value.estimated_pedagogical_hours,void 0,{number:!0}]])]),e("label",null,[a[28]||(a[28]=e("span",null,"Páginas del PDF",-1)),g(e("input",{"onUpdate:modelValue":a[10]||(a[10]=u=>r.value.source_page_count=u),type:"number",min:"1"},null,512),[[C,r.value.source_page_count,void 0,{number:!0}]])]),e("label",ql,[a[29]||(a[29]=e("span",null,"Descripción",-1)),g(e("textarea",{"onUpdate:modelValue":a[11]||(a[11]=u=>r.value.description=u),rows:"2",placeholder:"Alcance y observaciones de la versión curricular"},null,512),[[C,r.value.description]])])])]),e("section",Ml,[a[35]||(a[35]=e("div",{class:"step-heading"},[e("span",null,"2"),e("div",null,[e("strong",null,"Fuente de respaldo"),e("small",null,"El PDF se archiva cifrado; no se ejecuta extracción automática.")])],-1)),e("div",Tl,[e("label",Hl,[e("input",{type:"file",accept:"application/pdf,.pdf",onChange:de},null,32),a[32]||(a[32]=e("i",{class:"bx bxs-file-pdf"},null,-1)),e("span",null,[e("strong",null,i(((S=r.value.source_file)==null?void 0:S.name)||"Seleccionar PDF oficial"),1),a[31]||(a[31]=e("small",null,"Máximo 40 MB · almacenamiento privado",-1))]),a[33]||(a[33]=e("em",null,"Examinar",-1))]),e("label",null,[a[34]||(a[34]=e("span",null,"URL oficial",-1)),g(e("input",{"onUpdate:modelValue":a[12]||(a[12]=u=>r.value.official_url=u),type:"url",placeholder:"https://â¦"},null,512),[[C,r.value.official_url]])])])]),e("section",Gl,[e("div",{class:"step-heading objectives-heading"},[a[36]||(a[36]=e("span",null,"3",-1)),a[37]||(a[37]=e("div",null,[e("strong",null,"Objetivos y ejes"),e("small",null,"Solo se muestran OA activos de la asignatura y nivel.")],-1)),e("div",{class:"heading-actions"},[e("button",{type:"button",onClick:ee},"Seleccionar todos"),e("button",{type:"button",onClick:H},"Limpiar")])]),v.value?(n(),o("div",Jl,[...a[38]||(a[38]=[e("i",{class:"bx bx-loader-alt bx-spin"},null,-1),f("Cargando objetivosâ¦",-1)])])):!r.value.schedule_subject_id||!r.value.education_level_id?(n(),o("div",Yl,[...a[39]||(a[39]=[e("i",{class:"bx bx-filter-alt"},null,-1),f("Selecciona asignatura y nivel para ver sus OA.",-1)])])):(n(),o(y,{key:2},[e("div",Wl,[e("div",null,[e("strong",null,i(r.value.objective_ids.length),1),e("span",null,"OA seleccionados de "+i(A.value.length),1)]),e("label",null,[a[40]||(a[40]=e("i",{class:"bx bx-search"},null,-1)),g(e("input",{"onUpdate:modelValue":a[13]||(a[13]=u=>I.value=u),type:"search",placeholder:"Buscar código o textoâ¦"},null,512),[[C,I.value]])])]),e("div",Kl,[(n(!0),o(y,null,j(X.value,u=>(n(),o("label",{key:u.id,class:w(["objective-option",{selected:r.value.objective_ids.includes(u.id)}])},[g(e("input",{"onUpdate:modelValue":a[14]||(a[14]=_=>r.value.objective_ids=_),type:"checkbox",value:u.id},null,8,Ql),[[il,r.value.objective_ids]]),e("span",null,[e("strong",null,i(u.code),1),e("small",null,i(Z(u.axis_code)),1),e("p",null,i(u.description),1)])],2))),128))]),e("div",Xl,[e("div",{class:"axes-panel__header"},[a[43]||(a[43]=e("div",null,[e("strong",null,"Ejes curriculares"),e("small",null,"Relaciona cada eje con los OA seleccionados.")],-1)),e("div",null,[e("button",{type:"button",onClick:ne},[...a[41]||(a[41]=[e("i",{class:"bx bx-refresh"},null,-1),f(" Generar desde OA",-1)])]),e("button",{type:"button",onClick:q},[...a[42]||(a[42]=[e("i",{class:"bx bx-plus"},null,-1),f(" Agregar eje",-1)])])])]),r.value.axes.length?(n(),o("div",Zl,[(n(!0),o(y,null,j(r.value.axes,(u,_)=>(n(),o("article",{key:_},[e("label",null,[a[44]||(a[44]=e("span",null,"Nombre",-1)),g(e("input",{"onUpdate:modelValue":c=>
1u.name=c},null,8,ea),[[C,u.name]])]),e("label",null,[a[45]||(a[45]=e("span",null,"OA del eje",-1)),g(e("select",{"onUpdate:modelValue":c=>u.objective_ids=c,multiple:""},[(n(!0),o(y,null,j(V.value.filter(c=>c.objective_type==="OA"),c=>(n(),o("option",{key:c.id,value:c.id},i(c.code),9,aa))),128))],8,la),[[Q,u.objective_ids]])]),e("button",{type:"button",title:"Quitar eje",onClick:c=>M(_)},[...a[46]||(a[46]=[e("i",{class:"bx bx-trash"},null,-1)])],8,sa)]))),128))])):k("",!0)])],64))]),e("section",ta,[e("div",{class:"step-heading objectives-heading"},[a[48]||(a[48]=e("span",null,"4",-1)),a[49]||(a[49]=e("div",null,[e("strong",null,"Unidades del programa"),e("small",null,"Distribuye OA, horas y contenidos por unidad.")],-1)),e("button",{type:"button",class:"add-unit",onClick:le},[...a[47]||(a[47]=[e("i",{class:"bx bx-plus"},null,-1),f(" Agregar unidad",-1)])])]),e("div",ia,[(n(!0),o(y,null,j(r.value.units,(u,_)=>(n(),o("article",{key:_,class:"unit-editor"},[e("header",null,[e("span",null,"U"+i(_+1),1),e("div",null,[e("strong",null,i(u.official_title||`Unidad ${_+1}`),1),e("small",null,i(u.objective_ids.length)+" objetivos asociados",1)]),e("button",{type:"button",disabled:r.value.units.length===1,onClick:c=>fe(_)},[...a[50]||(a[50]=[e("i",{class:"bx bx-trash"},null,-1)])],8,na)]),e("div",oa,[e("label",null,[a[51]||(a[51]=e("span",null,"Código *",-1)),g(e("input",{"onUpdate:modelValue":c=>u.unit_code=c},null,8,ra),[[C,u.unit_code]])]),e("label",ua,[a[52]||(a[52]=e("span",null,"TÃtulo *",-1)),g(e("input",{"onUpdate:modelValue":c=>u.official_title=c},null,8,da),[[C,u.official_title]])]),e("label",null,[a[54]||(a[54]=e("span",null,"Semestre",-1)),g(e("select",{"onUpdate:modelValue":c=>u.semester=c},[...a[53]||(a[53]=[e("option",{value:1},"1.º",-1),e("option",{value:2},"2.º",-1)])],8,ca),[[Q,u.semester,void 0,{number:!0}]])]),e("label",null,[a[55]||(a[55]=e("span",null,"Horas",-1)),g(e("input",{"onUpdate:modelValue":c=>u.estimated_pedagogical_hours=c,type:"number",min:"1"},null,8,pa),[[C,u.estimated_pedagogical_hours,void 0,{number:!0}]])]),e("label",null,[a[56]||(a[56]=e("span",null,"Página inicial",-1)),g(e("input",{"onUpdate:modelValue":c=>u.page_start=c,type:"number",min:"1"},null,8,va),[[C,u.page_start,void 0,{number:!0}]])]),e("label",null,[a[57]||(a[57]=e("span",null,"Página final",-1)),g(e("input",{"onUpdate:modelValue":c=>u.page_end=c,type:"number",min:"1"},null,8,ma),[[C,u.page_end,void 0,{number:!0}]])]),e("label",ba,[a[58]||(a[58]=e("span",null,"Objetivos de la unidad *",-1)),g(e("select",{"onUpdate:modelValue":c=>u.objective_ids=c,multiple:"",class:"objective-select"},[(n(!0),o(y,null,j(V.value.filter(c=>c.objective_type==="OA"),c=>(n(),o("option",{key:c.id,value:c.id},i(ce(c)),9,_a))),128))],8,ga),[[Q,u.objective_ids]]),a[59]||(a[59]=e("small",null,"Usa Cmd/Ctrl para seleccionar varios.",-1))]),e("label",fa,[a[60]||(a[60]=e("span",null,"Propósito",-1)),g(e("textarea",{"onUpdate:modelValue":c=>u.purpose=c,rows:"3"},null,8,ya),[[C,u.purpose]])]),e("label",xa,[a[61]||(a[61]=e("span",null,"Conocimientos · uno por lÃnea",-1)),g(e("textarea",{"onUpdate:modelValue":c=>u.knowledge_text=c,rows:"3"},null,8,ka),[[C,u.knowledge_text]])]),e("label",wa,[a[62]||(a[62]=e("span",null,"Habilidades · una por lÃnea",-1)),g(e("textarea",{"onUpdate:modelValue":c=>u.skills_text=c,rows:"3"},null,8,ha),[[C,u.skills_text]])]),e("label",Ca,[a[63]||(a[63]=e("span",null,"Actitudes · una por lÃnea",-1)),g(e("textarea",{"onUpdate:modelValue":c=>u.attitudes_text=c,rows:"3"},null,8,ja),[[C,u.attitudes_text]])]),e("label",$a,[a[64]||(a[64]=e("span",null,"Palabras clave · una por lÃnea",-1)),g(e("textarea",{"onUpdate:modelValue":c=>u.keywords_text=c,rows:"3"},null,8,Pa),[[C,u.keywords_text]])])])]))),128))])]),e("footer",Aa,[ie.value?(n(),o("label",Ua,[g(e("input",{"onUpdate:modelValue":a[15]||(a[15]=u=>r.value.publish_now=u),type:"checkbox"},null,512),[[il,r.value.publish_now]]),a[65]||(a[65]=e("span",null,null,-1)),a[66]||(a[66]=e("div",null,[e("strong",null,"Publicar inmediatamente"),e("small",null,"Requiere PDF y permiso de publicación.")],-1))])):(n(),o("div",Oa,[...a[67]||(a[67]=[e("i",{class:"bx bx-lock-alt"}
1,null,-1),f("Se guardará como borrador.",-1)])])),e("button",{class:"submit-program",type:"submit",disabled:m.value},[e("i",{class:w(["bx",m.value?"bx-loader-alt bx-spin":r.value.publish_now?"bx-check-shield":"bx-save"])},null,2),f(i(m.value?"Guardandoâ¦":r.value.publish_now?"Crear y publicar":"Guardar borrador"),1)],8,Va)])],32)}}},Ea=nl(Da,[["__scopeId","data-v-158840eb"]]),Sa={class:"curriculum-programs"},Fa={class:"catalog-hero"},Na={class:"hero-metric"},Ba={class:"view-tabs","aria-label":"Vistas del catálogo curricular"},La={key:0,class:"tab-dot"},za={key:0,class:"view-grid matrix-view"},Ia={class:"card-panel coverage-panel"},Ra={class:"panel-heading"},qa=["disabled"],Ma={class:"filters-row"},Ta=["value"],Ha=["value"],Ga=["value"],Ja={class:"matrix-scroll"},Ya={class:"coverage-matrix"},Wa=["disabled","onClick"],Ka={key:0},Qa={key:1},Xa={class:"card-panel chart-panel"},Za={key:1,class:"catalog-view"},es={key:0,class:"card-panel program-list-panel"},ls={class:"program-grid"},as=["onClick","disabled"],ss={key:1,class:"program-detail"},ts={class:"detail-header"},is={class:"detail-title"},ns=["disabled"],os={class:"metric-strip"},rs={class:"card-panel annual-map"},us={class:"panel-heading"},ds={class:"unit-timeline"}
1,cs={class:"detail-charts"},ps={class:"card-panel"},vs={class:"card-panel"},ms={class:"units-grid"},bs={class:"unit-number"},gs={class:"panel-kicker"},_s={class:"unit-tags"},fs={key:0,class:"card-panel source-panel"},ys={class:"panel-heading"},xs=["href"],ks={key:2,class:"imports-layout"},ws={class:"imports-sidebar card-panel"},hs={class:"panel-heading"},Cs={class:"count-badge"},js={key:0},$s={key:1},Ps=["multiple"],As=["disabled"],Us={class:"import-list"},Os=["onClick"],Vs={class:"review-workspace card-panel"},Ds={class:"review-header"},Es={class:"review-actions"},Ss=["disabled"],Fs=["disabled"],Ns=["disabled"],Bs={class:"progress-track"},Ls={class:"review-summary"},zs={key:0,class:"alert-card danger"},Is={key:1,class:"ai-resolution-ready"},Rs={key:0},qs={key:1},Ms={key:2},Ts={key:2,class:"pdf-objectives-ready"},Hs={key:3,class:"review-section"},Gs=["disabled","onClick"],Js={key:1,class:"resolved"},Ys={class:"review-section"},Ws={class:"section-title"},Ks={class:"candidate-main"},Qs={class:"entity-type"},Xs={class:"candidate-review"},Zs={key:0,class:"candidate-actions"},et=["disabled","onClick"],lt=["disabled","onClick"],at={key:0,class:"candidate-children"},st={class:"entity-type"},tt={key:0,class:"candidate-actions"},it=["disabled","onClick"],nt=["disabled","onClick"],ot={key:4,class:"review-section"},rt={class:"process-log"},ut={key:5,class:"review-section"},dt={class:"section-title"},ct=["href"],pt=["src"],vt={key:4,class:"search-view card-panel"},mt={class:"search-hero"},bt=["disabled"],gt={key:0,class:"search-results"},_t=["onClick"],ft={class:"result-type"},yt={__name:"CurriculumProgramsSection",props:{context:{type:Object,required:!0},catalogs:{type:Object,default:()=>({})},capabilities:{type:Object,default:()=>({})},refreshToken:{type:Number,default:0}},setup(ue){const $=ue,L=Al(),_e=Ul(),E=h("matrix"),z=h(!1),r=h(null),A=h({levels:[],rows:[],chart:{labels:[],series:[]}}),I=h([]),v=h(null),m=h(null),Y=h(""),F=h(""),T=h(""),B=h(""),ie=h([]),X=h(!1),V=h([]),Z=h(!1),R=h(!1),D=h(!1),W=h(!1),ee=h(0),H=h(null),ne=h(null);let q=null,M=null;const le=b(()=>!!($.context.school_id&&$.context.academic_year_id)),fe=b(()=>!!$.capabilities.can_import_curriculum_programs),de=b(()=>!!$.capabilities.can_import_curriculum_programs_batch),ce=b(()=>!!$.capabilities.can_review_curriculum_programs),Ve=b(()=>!!$.capabilities.can_resolve_curriculum_conflicts),De=b(()=>!!$.capabilities.can_publish_curriculum_programs),d=b(()=>!!$.capabilities.can_reprocess_curriculum_programs),a=b(()=>!!$.capabilities.can_export_curriculum_programs_pdf),S=b(()=>!!$.capabilities.can_view_curriculum_documents),u=b(()=>$.catalogs.curriculum_program_import||{}),_=b(()=>!!u.value.ai_enabled&&!!u.value.ai_configured),c=b(()=>_.value&&u.value.ai_auto_review!==!1),ye=b(()=>Math.max(1,Number(u.value.max_pdf_mb||40))),ol=b(()=>ye.value*1024*1024),pe=b(()=>({school_id:$.context.school_id,academic_year_id:$.context.academic_year_id})),rl=b(()=>A.value.rows.map(s=>s.subject).sort((s,l)=>s.name.localeCompare(l.name,"es"))),ul=b(()=>A.value.rows.filter(s=>Y.value&&String(s.subject.id)!==Y.value?!1:!T.value&&!F.value?!0:s.cells.some(l=>(!F.value||String(l.education_level_id)===F.value)&&(!T.value||l.status===T.value)))),dl=b(()=>{var s;return(((s=m.value)==null?void 0:s.units)||[]).reduce((l,x)=>l+Number(x.hours||0),0)}),Ee=b(()=>{var s,l,x;return((s=v.value)==null?void 0:s.document)||((x=(l=m.value)==null?void 0:l.documents)==null?void 0:x[0])}),Re=b(()=>{var s;return(((s=v.value)==null?void 0:s.conflicts)||[]).filter(l=>!(l.status==="resolved"&&["objective_unmatched","objective_ambiguous"].includes(l.type)))}),Se=b(()=>{var s;return(((s=v.value)==null?void 0:s.candidates)||[]).filter(l=>["learning_objective","skill_objective"].includes(l.type)&&l.suggested_action==="create").length}),xe=b(()=>{var s;return(((s=v.value)==null?void 0:s.candidates)||[]).flatMap(l=>[l,...l.children||[]])}),Fe=b(()=>xe.value.filter(s=>s.resolved_by_ai&&["accepted","skipped"].includes(s.review_status)).length),ke=b(()=>xe.value.filter(s=>s.review_status==="pending").length),cl=b(()=>V.value.length===1?`${V.value[0].name} · ${qe(V.value[0].size)}`:`${V.value.length} documentos seleccionados`),qe=s=>{const l=Number(s||0);return l<1024*1024?`${Math.max(1,Math.round(l/1024))} KB`:`${(l/(1024*1024)).toFixed(1)} MB`},pl=b(()=>W.value?H.value==="queued"?"PDF en colaâ¦":["processing","generating"].includes(H.value)?`Generando ${ee.value}%`:H.value==="completed"?"Preparando descargaâ¦":"Preparando PDFâ¦":"Exportar PDF"),G=s=>({missing:"Sin cargar",draft:"Borrador",uploaded:"Cargado",queued:"En cola",validating:"Validando PDF",extracting:"Extrayendo",extracting_text:"Extrayendo texto",running_ocr:"Aplicando OCR",classifying:"Clasificando",detecting_structure:"Detectando estructura",parsing:"Analizando",extracting_entities:"Extrayendo contenidos",analyzing_with_ai:"Analizando con IA",normalizing:"Normalizando resultados",reconciling:"Conciliando",processing:"Procesando",pending_review:"Revisión pendiente",validated:"Validado",published:"Publicado",published_with_warnings:"Publicado con alertas",failed:"Fallido",archived:"Archivado",o
1pen:"Abierto",resolved:"Resuelto"})[s]||ge(s),Me=s=>s!=null&&s.resolved_by_ai&&s.review_status==="accepted"?"Resuelto por IA":s!=null&&s.resolved_by_ai&&s.review_status==="skipped"?"Omitido por IA":{pending:"Pendiente real",accepted:"Aceptado",rejected:"Rechazado",skipped:"Omitido"}[s==null?void 0:s.review_status]||ge(s==null?void 0:s.review_status),Te=s=>({identification:"Identificación",axis:"Eje",learning_objective:"Objetivo de aprendizaje",skill_objective:"Objetivo de habilidad",unit:"Unidad",prior_knowledge:"Conocimiento previo",knowledge:"Conocimiento",skills:"Habilidad",attitudes:"Actitud",keyword:"Palabra clave",program:"Programa"})[s]||ge(s),vl=s=>({objective_unmatched:"Objetivo nuevo desde PDF",objective_ambiguous:"Objetivo importado sin asociación ambigua",classification_missing:"Clasificación incompleta",classification_low_confidence:"Clasificación por revisar"})[s]||ge(s),ml=s=>({program_study:"Programa de estudio",curricular_bases:"Bases curriculares",study_plan:"Plan de estudios",curriculum_prioritization:"Priorización curricular",curriculum_guidance:"Orientación curricular",unknown:"Por confirmar"})[s]||ge(s),we=s=>({missing:"muted",draft:"dark",uploaded:"info",queued:"info",validating:"info",extracting:"info",extracting_text:"info",running_ocr:"info",classifying:"info",detecting_structure:"info",parsing:"info",extracting_entities:"info",analyzing_with_ai:"info",normalizing:"info",reconciling:"info",processing:"info",pending_review:"warning",validated:"primary",published:"success",published_with_warnings:"warning",failed:"danger",archived:"dark"})[s]||"muted",He=s=>s>=.9?"success":s>=.7?"warning":"danger",bl=b(()=>A.value.chart.labels.map(s=>({published:"#0ab39c",draft:"#7b8497",published_with_warnings:"#f7b84b",validated:"#405189",pending_review:"#f06548",missing:"#d7dce5",failed:"#d94c63"})[s]||"#50a5f1")),gl=b(()=>({labels:A.value.chart.labels.map(G),colors:bl.value,chart:{fontFamily:"Inter, sans-serif",toolbar:{show:!1}},legend:{position:"bottom",fontSize:"12px"},dataLabels:{enabled:!1},stroke:{width:3,colors:["#fff"]},plotOptions:{pie:{donut:{size:"72%"}}}})),Ge=(s,l="#405189")=>({chart:{toolbar:{show:!1},fontFamily:"Inter, sans-serif"},colors:[l],xaxis:{categories:s,labels:{trim:!0,rotate:-20}},plotOptions:{bar:{borderRadius:6,columnWidth:"48%"}},dataLabels:{enabled:!1},grid:{borderColor:"#edf0f4"}}),Je=()=>{ne.value&&window.clearInterval(ne.value),ne.value=null},_l=()=>{Je(),I.value.some(s=>["uploaded","queued","validating","extracting","extracting_text","running_ocr","classifying","detecting_structure","parsing","extracting_entities","analyzing_with_ai","normalizing","reconciling","processing"].includes(s.status))&&(ne.value=window.setInterval(he,3500))},Ne=async()=>{if(le.value){q==null||q.abort(),q=new AbortController,z.value=!0,r.value=null;try{A.value=K(await O.curriculumProgramMatrix(pe.value,q.signal),A.value)}catch(s){(s==null?void 0:s.code)!=="ERR_CANCELED"&&(r.value=s)}finally{z.value=!1}}},he=async()=>{if(le.value)try{if(I.value=Ie(await O.curriculumProgramImports({...pe.value,per_page:100})),_l(),v.value){const s=I.value.find(l=>l.id===v.value.id);s&&s.status!==v.value.status&&await ae(s)}}catch(s){(s==null?void 0:s.code)!=="ERR_CANCELED"&&(r.value=s)}},Ce=async()=>{m.value=null,v.value=null,await Promise.all([Ne(),he()]);const s=L.query.program;s&&await oe({id:s},!1)};Ol([()=>$.context.school_id,()=>$.context.academic_year_id,()=>$.refreshToken],Ce,{immediate:!0}),Vl(()=>{q==null||q.abort(),M==null||M.abort(),Je()});const ve=s=>{E.value=s,s!=="catalog"&&(m.value=null),s!=="imports"&&(v.value=null)},fl=async s=>{await Promise.all([Ne(),he()]),E.value="catalog",await oe(s)},yl=async s=>{if(s.program)return oe(s.program);if(s.import)return E.value="imports",ae(s.import)},oe=async(s,l=!0)=>{z.value=!0,r.value=null;try{m.value=K(await O.curriculumProgram(s.id,pe.value)),E.value="catalog",l&&await _e.replace({query:{...L.query,program:s.id}})}catch(x){await N(x,"No se pudo abrir el programa")}finally{z.value=!1}},xl=async()=>{m.value=null;const s={...L.query};delete s.program,await _e.replace({query:s})},ae=async s=>{z.value=!0;try{v.value=K(await O.curriculumProgramImport(s.id,pe.value))}catch(l){await N(l,"No se pudo abrir la revisión")}finally{z.value=!1}},kl=s=>Ye(s.target.files),wl=s=>{Z.value=!1,Ye(s.dataTransfer.files)},Ye=s=>{const l=[...s||[]].filter(U=>U.type==="application/pdf"||U.name.toLowerCase().endsWith(".pdf")),x=l.find(U=>U.size>ol.value);if(x){V.value=[],N(new Error(`${x.name} pesa ${qe(x.size)}. El máximo permitido por PDF es ${ye.value} MB.`),"Archivo demasiado grande");return}if(!de.value&&l.length>1){V.value=l.slice(0,1),N(new Error("Tu rol permite importar un documento por vez. La carga masiva requiere un permiso adicional."));return}V.value=l.slice(0,30)},hl=async()=>{var s,l,x,U;if(!(!V.value.length||!le.value)){R.value=!0;try{const J=new FormData;J.set("school_id",$.context.school_id),J.set("academic_year_id",$.context.academic_year_id),V.value.forEach($e=>J.append("files[]",$e));const se=K(await O.uploadCurriculumProgramDocuments(J));V.value=[],await Promise.all([he(),Ne()]);const me=((s=se.files)==null?void 0:s[0])||((l=se.duplicates)==null?void 0:l[0]);me&&await ae(me),await Oe((x=se.files)!=null&&x.length?"Análisis inteligente iniciado":"Documento existente",(U=se.files)!=null&&U.length?c.value?"OpenAI estructurará y resolverá los datos legibles; solo las excepciones reales quedarán pendientes.":"OpenAI estructurará cada PDF para revisión.":"El archivo ya estaba registrado; se abrió la carga existente.")}catch(J){await N(J,"No se pudo cargar el documento")}finally{R.value=!1}}},je=async(s,l)=>{D.value=!0;try{await O.reviewCurriculumProgramCandidate(s.id,{review_status:l,suggested_action:l==="accepted"?s.suggested_existing_id?"reuse":"create":"skip"}),await ae(v.value)}catch(x){await N(x,"No se pudo registrar la revisión")}finally{D.value=!1}},Cl=async s=>{const l=await Dl.fire({title:"Resolver conflicto",text:s.description,input:"textarea",inputLabel:"Criterio y resolución adoptada",inputPlaceholder:"Describe la fuente y el criterio utilizadoâ¦",inputValidator:x=>{var U;return((U=x==null?void 0:x.trim())==null?void 0:U.length)>=3?void 0:"Ingresa una resolución trazable."},showCancelButton:!0,confirmButtonText:"Guardar resolución",cancelButtonText:"Cancelar"});if(l.isConfirmed){D.value=!0;
1try{await O.resolveCurriculumProgramConflict(s.id,{resolution:l.value.trim()}),await ae(v.value)}catch(x){await N(x,"No se pudo resolver el conflicto")}finally{D.value=!1}}},Be=async s=>{const l={validate:["Validar importación","Verificará cobertura, conciliación y conflictos crÃticos."],publish:["Publicar programa","El programa validado quedará disponible para leccionarios y evaluaciones."],reprocess:["Reprocesar documento","Se repetirá la extracción conservando el historial y el PDF original."]}[s];if((await Nl({title:l[0],text:l[1],confirmText:l[0]})).isConfirmed){D.value=!0;try{const U=K(await O.curriculumProgramImportAction(v.value.id,s,{academic_year_id:$.context.academic_year_id}));s==="publish"?(v.value=null,await Ce(),await oe(U)):await ae({id:v.value.id}),await Oe(G(s==="publish"?"published":s))}catch(U){await N(U,`No se pudo ${s==="validate"?"validar":s==="publish"?"publicar":"reprocesar"}`)}finally{D.value=!1}}},jl=async()=>{if(B.value.trim().length<2){ie.value=[];return}M==null||M.abort(),M=new AbortController,X.value=!0;try{ie.value=Ie(await O.searchCurriculumPrograms({...pe.value,query:B.value.trim(),education_level_id:F.value||void 0,schedule_subject_id:Y.value||void 0,limit:100},M.signal))}catch(s){(s==null?void 0:s.code)!=="ERR_CANCELED"&&await N(s,"No se pudo buscar")}finally{X.value=!1}},$l=async()=>{W.value=!0,ee.value=0,H.value="preparing";try{let s=K(await O.exportCurriculumProgramPdf(m.value.id,{academic_year_id:$.context.academic_year_id}));s=await Sl(s,async l=>K(await O.report(l.id)),{onProgress:l=>{H.value=l.status||"processing";const x=Number(l.progress??l.progress_percent??0);ee.value=Number.isFinite(x)?Math.max(0,Math.min(100,x)):0}}),H.value=s.status||"completed",ee.value=Number(s.progress??100),await O.download(`${Fl}/reports/${s.id}/download`,`programa-curricular-${m.value.grade_code}.pdf`),await Oe("PDF generado","La exportación incluye trazabilidad de las fuentes.")}catch(s){await N(s,"No se pudo generar el PDF")}finally{W.value=!1,ee.value=0,H.value=null}};return(s,l)=>{var x,U,J,se,me,$e,We,Ke,Qe,Xe,Ze,el,ll,al,sl;return n(),o("section",Sa,[e("div",Fa,[l[16]||(l[16]=e("div",null,[e("span",{class:"eyebrow"},[e("i",{class:"bx bx-certification"}),f(" Fuentes ministeriales verificables")]),e("h3",null,"Mapa curricular institucional"),e("p",null," Consulta qué programa oficial respalda cada asignatura y nivel. Toda carga pasa por extracción, resolución inteligente, control de excepciones y publicación explÃcita. ")],-1)),e("div",Na,[e("strong",null,i(A.value.chart.series.reduce((t,p)=>t+p,0)),1),l[15]||(l[15]=e("span",null,"combinaciones monitoreadas",-1))])]),e("nav",Ba,[e("button",{class:w({active:E.value==="matrix"}),onClick:l[0]||(l[0]=t=>ve("matrix"))},[...l[17]||(l[17]=[e("i",{class:"bx bx-grid-alt"},null,-1),f(" Matriz de cobertura ",-1)])],2),e("button",{class:w({active:E.value==="catalog"}),onClick:l[1]||(l[1]=t=>ve("catalog"))},[...l[18]||(l[18]=[e("i",{class:"bx bx-book-open"},null,-1),f(" Programas publicados ",-1)])],2),e("button",{class:w({active:E.value==="imports"}),onClick:l[2]||(l[2]=t=>ve("imports"))},[l[19]||(l[19]=e("i",{class:"bx bx-cloud-upload"},null,-1)),l[20]||(l[20]=f(" Importar y revisar ",-1)),I.value.some(t=>t.status==="pending_review")?(n(),o("span",La)):k("",!0)],2),fe.value?(n(),o("button",{key:0,class:w({active:E.value==="manual"}),onClick:l[3]||(l[3]=t=>ve("manual"))},[...l[21]||(l[21]=[e("i",{class:"bx bx-edit-alt"},null,-1),f(" Crear manualmente ",-1)])],2)):k("",!0),e("button",{class:w({active:E.value==="search"}),onClick:l[4]||(l[4]=t=>ve("search"))},[...l[22]||(l[22]=[e("i",{class:"bx bx-search-alt"},null,-1),f(" Búsqueda transversal ",-1)])],2)]),le.value?r.value&&!A.value.rows.length?(n(),be(Ue,{key:1,icon:"bx-error-circle",title:"No fue posible cargar el catálogo",message:r.value.message,"action-label":"Reintentar",onAction:Ce},null,8,["message"])):le.value?(n(),o(y,{key:2},[E.value==="matrix"?(n(),o("div",za,[e("div",Ia,[e("div",Ra,[l[23]||(l[23]=e("div",null,[e("span",{class:"panel-kicker"},"Disponibilidad oficial"),e("h4",null,"Asignatura à nivel de enseñanza")],-1)),e("button",{class:"btn-icon",title:"Actualizar",disabled:z.value,onClick:Ce},[e("i",{class:w(["bx bx-refresh",{"bx-spin":z.value}])},null,2)],8,qa)]),e("div",Ma,[g(e("select",{"onUpdate:modelValue":l[5]||(l[5]=t=>Y.value=t),class:"form-select"},[l[24]||(l[24]=e("option",{value:""},"Todas las asignaturas",-1)),(n(!0),o(y,null,j(rl.value,t=>(n(),o("option",{key:t.id,value:String(t.id)},i(t.name),9,Ta))),128))],512),[[Q,Y.value]]),g(e("select",{"onUpdate:modelValue":l[6]||(l[6]=t=>F.value=t),class:"form-select"},[l[25]||(l[25]=e("option",{value:""},"Todos los niveles",-1)),(n(!0),o(y,null,j(A.value.levels,t=>(n(),o("option",{key:t.id,value:String(t.id)},i(t.name),9,Ha))),128))],512),[[Q,F.value]]),g(e("select",{"onUpdate:modelValue":l[7]||
1(l[7]=t=>T.value=t),class:"form-select"},[l[26]||(l[26]=e("option",{value:""},"Todos los estados",-1)),(n(!0),o(y,null,j(A.value.legend,t=>(n(),o("option",{key:t,value:t},i(G(t)),9,Ga))),128))],512),[[Q,T.value]])]),e("div",Ja,[e("table",Ya,[e("thead",null,[e("tr",null,[l[27]||(l[27]=e("th",null,"Asignatura",-1)),(n(!0),o(y,null,j(A.value.levels,t=>(n(),o("th",{key:t.id,class:w({dimmed:F.value&&F.value!==String(t.id)})},[e("span",null,i(t.name),1),e("small",null,i(t.grade_code),1)],2))),128))])]),e("tbody",null,[(n(!0),o(y,null,j(ul.value,t=>(n(),o("tr",{key:t.subject.id},[e("th",null,[e("span",{class:"subject-mark",style:Ae({background:t.subject.color||"#405189"})},null,4),e("span",null,i(t.subject.name),1),e("small",null,i(t.subject.area||t.subject.code),1)]),(n(!0),o(y,null,j(t.cells,p=>(n(),o("td",{key:p.education_level_id,class:w({dimmed:F.value&&F.value!==String(p.education_level_id)})},[e("button",{class:w(["status-cell",`tone-${we(p.status)}`]),disabled:p.status==="missing",onClick:P=>yl(p)},[e("i",{class:w(p.program?"bx bx-check-shield":p.import?"bx bx-loader-circle":"bx bx-minus")},null,2),e("span",null,i(G(p.status)),1),p.program?(n(),o("small",Ka,i(p.program.hours||0)+" h · "+i(p.program.weeks||0)+" sem.",1)):p.import?(n(),o("small",Qa,i(p.import.progress||0)+"%",1)):k("",!0)],10,Wa)],2))),128))]))),128))])])])]),e("aside",Xa,[l[28]||(l[28]=e("span",{class:"panel-kicker"},"Lectura rápida",-1)),l[29]||(l[29]=e("h4",null,"Estado de cobertura",-1)),Le(te(ze),{type:"donut",height:"275",options:gl.value,series:A.value.chart.series},null,8,["options","series"]),l[30]||(l[30]=e("div",{class:"integrity-note"},[e("i",{class:"bx bx-lock-alt"}),e("p",null,[e("strong",null,"Catálogo maestro protegido."),f(" La importación reutiliza OA existentes y bloquea códigos incompatibles.")])],-1))])])):E.value==="catalog"?(n(),o("div",Za,[m.value?(n(),o("article",ss,[e("header",ts,[e("button",{class:"back-button",onClick:xl},[...l[34]||(l[34]=[e("i",{class:"bx bx-left-arrow-alt"},null,-1),f(" Volver",-1)])]),e("div",is,[e("span",{class:w(["status-pill",`tone-${we(m.value.status)}`])},[e("i",{class:w(["bx",m.value.status==="published"?"bx-check-shield":"bx-edit-alt"])},null,2),f(i(G(m.value.status)),1)],2),e("h3",null,i(m.value.name),1),e("p",null,i((x=m.value.subject)==null?void 0:x.name)+" · "+i((U=m.value.education_level)==null?void 0:U.name)+" · "+i(((J=m.value.version)==null?void 0:J.decree)||((se=m.value.version)==null?void 0:se.name)),1)]),a.value?(n(),o("button",{key:0,class:"btn-primary-soft",disabled:W.value,onClick:$l},[e("i",{class:w(["bx",W.value?"bx-loader-alt bx-spin":"bx-file"])},null,2),f(i(pl.value),1)],8,ns)):k("",!0)]),e("div",os,[e("div",null,[e("strong",null,i(m.value.weeks),1),l[35]||(l[35]=e("span",null,"semanas",-1))]),e("div",null,[e("strong",null,i(m.value.hours),1),l[36]||(l[36]=e("span",null,"horas pedagógicas",-1))]),e("div",null,[e("strong",null,i(((me=m.value.objectives)==null?void 0:me.length)||0),1),l[37]||(l[37]=e("span",null,"objetivos",-1))]),e("div",null,[e("strong",null,i((($e=m.value.axes)==null?void 0:$e.length)||0),1),l[38]||(l[38]=e("span",null,"ejes",-1))]),e("div",null,[e("strong",null,i(((We=m.value.units)==null?void 0:We.length)||0),1),l[39]||(l[39]=e("span",null,"unidades",-1))])]),e("section",rs,[e("div",us,[l[40]||(l[40]=e("div",null,[e("span",{class:"panel-kicker"},"Secuencia anual"),e("h4",null,"Mapa proporcional de unidades")],-1)),e("span",null,i(dl.value)+" horas distribuidas",1)]),e("div",ds,[(n(!0),o(y,null,j(m.value.units,(t,p)=>(n(),o("div",{key:t.id,class:"timeline-unit",style:Ae({flexGrow:Math.max(Number(t.hours||1),12)})},[e("span",null,"U"+i(p+1)+" · "+i(t.hours)+" h",1),e("strong",null,i(t.focus||t.title),1),e("small",null,"Págs. "+i(t.page_start)+"â"+i(t.page_end),1)],4))),128))])]),e("div",cs,[e("div",ps,[l[41]||(l[41]=e("span",{class:"panel-kicker"},"Carga anual",-1)),l[42]||(l[42]=e("h4",null,"Horas por unidad",-1)),Le(te(ze),{type:"bar",height:"265",options:Ge(m.value.charts.hours_by_unit.labels),series:[{name:"Horas",data:m.value.charts.hours_by_unit.series}]},null,8,["options","series"])]),e("div",vs,[l[43]||(l[43]=e("span",{class:"panel-kicker"},"Cobertura",-1)),l[44]||(l[44]=e("h4",null,"OA por eje",-1)),Le(te(ze),{type:"bar",height:"265",options:Ge(m.value.charts.objectives_by_axis.labels,"#0ab39c"),series:[{name:"Objetivos",data:m.value.charts.objectives_by_axis.series}]},null,8,["options","series"])])]),e("section",ms,[(n(!0),o(y,null,j(m.value.units,t=>(n(),o("article",{key:t.id,class:"card-panel unit-card"},[e("div",bs,i(t.code),1),e("div",null,[e("span",gs,i(t.semester?`${t.semester}.º semestre`:"Secuencia anual")+" · "+i(t.hours)+" h",1),e("h4",null,i(t.title),
11),e("p",null,i(t.purpose),1)]),e("div",_s,[(n(!0),o(y,null,j(t.objectives,p=>(n(),o("span",{key:p.id},i(p.code),1))),128))]),e("details",null,[l[48]||(l[48]=e("summary",null,"Habilidades, actitudes y palabras clave",-1)),e("p",null,[l[45]||(l[45]=e("strong",null,"Habilidades:",-1)),f(" "+i(t.skills.map(p=>p.name).join(" · ")||"â"),1)]),e("p",null,[l[46]||(l[46]=e("strong",null,"Actitudes:",-1)),f(" "+i(t.attitudes.map(p=>p.text).join(" · ")||"â"),1)]),e("p",null,[l[47]||(l[47]=e("strong",null,"Palabras clave:",-1)),f(" "+i(t.keywords.map(p=>p.text).join(" · ")||"â"),1)])])]))),128))]),S.value&&((Ke=m.value.documents)!=null&&Ke.length)?(n(),o("section",fs,[e("div",ys,[l[50]||(l[50]=e("div",null,[e("span",{class:"panel-kicker"},"Evidencia documental"),e("h4",null,"Fuente ministerial")],-1)),e("a",{class:"btn-primary-soft",href:te(O).curriculumDocumentUrl(m.value.documents[0].id),target:"_blank",rel:"noopener"},[...l[49]||(l[49]=[e("i",{class:"bx bx-link-external"},null,-1),f("Abrir PDF",-1)])],8,xs)]),e("p",null,i(m.value.documents[0].title)+" · "+i(m.value.documents[0].page_count)+" páginas · SHA-256 "+i(m.value.documents[0].sha256.slice(0,16))+"â¦",1)])):k("",!0)])):(n(),o("div",es,[l[33]||(l[33]=e("div",{class:"panel-heading"},[e("div",null,[e("span",{class:"panel-kicker"},"Repositorio vigente"),e("h4",null,"Programas publicados")])],-1)),e("div",ls,[(n(!0),o(y,null,j(A.value.rows,t=>(n(),o("button",{key:t.subject.id,class:"program-card",onClick:p=>{var P;return oe((P=t.cells.find(Pe=>Pe.program))==null?void 0:P.program)},disabled:!t.cells.some(p=>p.program)},[e("span",{class:"program-icon",style:Ae({background:`${t.subject.color||"#405189"}18`,color:t.subject.color||"#405189"})},[...l[31]||(l[31]=[e("i",{class:"bx bx-book-content"},null,-1)])],4),e("strong",null,i(t.subject.name),1),e("span",null,i(t.cells.filter(p=>p.program).length)+" niveles publicados",1),l[32]||(l[32]=e("i",{class:"bx bx-right-arrow-alt"},null,-1))],8,as))),128))])]))])):E.value==="imports"?(n(),o("div",ks,[e("aside",ws,[e("div",hs,[l[51]||(l[51]=e("div",null,[e("span",{class:"panel-kicker"},"Importador inteligente"),e("h4",null,"Programas de estudio")],-1)),e("span",Cs,i(I.value.length),1)]),e("div",{class:w(["ai-import-card",{unavailable:!_.value}])},[l[52]||(l[52]=e("span",{class:"ai-import-icon"},[e("i",{class:"bx bx-sparkles"})],-1)),e("div",null,[e("strong",null,i(_.value?"Análisis OpenAI activo":"Análisis OpenAI no disponible"),1),_.value?(n(),o("p",js,[f("El PDF se interpreta con "+i(u.value.ai_model)+", salida estructurada y evidencia por página. ",1),c.value?(n(),o(y,{key:0},[f("La IA resuelve automáticamente lo legible.")],64)):k("",!0)])):(n(),o("p",$s,"Configura la integración del backend antes de iniciar una importación inteligente."))])],2),fe.value?(n(),o("label",{key:0,class:w(["drop-zone",{dragging:Z.value}]),onDragenter:l[8]||(l[8]=re(t=>Z.value=!0,["prevent"])),onDragover:l[9]||(l[9]=re(()=>{},["prevent"])),onDragleave:l[10]||(l[10]=re(t=>Z.value=!1,["prevent"])),onDrop:re(wl,["prevent"])},[e("input",{type:"file",accept:"application/pdf,.pdf",multiple:de.value,onChange:kl},null,40,Ps),l[53]||(l[53]=e("i",{class:"bx bx-cloud-upload"},null,-1)),e("strong",null,i(V.value.length?cl.value:"Arrastra programas oficiales en PDF"),1),e("span",null,i(de.value?`Hasta 30 archivos de ${ye.value} MB cada uno; OpenAI los analiza por separado`:`Un documento de hasta ${ye.value} MB por análisis`),1)],34)):k("",!0),V.value.length?(n(),o("button",{key:1,class:"btn-upload",disabled:R.value||!_.value,onClick:hl},[e("i",{class:w(["bx",R.value?"bx-loader-alt bx-spin":"bx-sparkles"])},null,2),f(i(R.value?"Enviando y analizandoâ¦":"Analizar con OpenAI"),1)],8,As)):k("",!0),e("div",Us,[(n(!0),o(y,null,j(I.value,t=>{var p;return n(),o("button",{key:t.id,class:w({active:((p=v.value)==null?void 0:p.id)===t.id}),onClick:P=>ae(t)},[l[54]||(l[54]=e("span",{class:"file-icon"},[e("i",{class:"bx bxs-file-pdf"})],-1)),e("span",null,[e("strong",null,i(t.name),1),e("small",null,i(G(t.status))+" · "+i(t.progress||0)+"%",1)]),e("span",{class:w(["status-dot",`tone-${we(t.
1status)}`])},null,2)],10,Os)}),128))])]),e("main",Vs,[v.value?(n(),o(y,{key:1},[e("header",Ds,[e("div",null,[e("span",{class:w(["status-pill",`tone-${we(v.value.status)}`])},i(G(v.value.status)),3),e("h3",null,i(v.value.name),1),e("p",null,i(((Qe=v.value.document)==null?void 0:Qe.subject)||"Asignatura por confirmar")+" · "+i(((Xe=v.value.document)==null?void 0:Xe.grade)||"Nivel por confirmar"),1)]),e("div",Es,[d.value&&v.value.status==="failed"?(n(),o("button",{key:0,class:"btn-secondary",disabled:D.value,onClick:l[11]||(l[11]=t=>Be("reprocess"))},"Reprocesar",8,Ss)):k("",!0),ce.value&&v.value.status==="pending_review"?(n(),o("button",{key:1,class:"btn-secondary",disabled:D.value,onClick:l[12]||(l[12]=t=>Be("validate"))},"Validar",8,Fs)):k("",!0),De.value&&v.value.status==="validated"?(n(),o("button",{key:2,class:"btn-publish",disabled:D.value,onClick:l[13]||(l[13]=t=>Be("publish"))},[...l[55]||(l[55]=[e("i",{class:"bx bx-check-shield"},null,-1),f("Publicar",-1)])],8,Ns)):k("",!0)])]),e("div",Bs,[e("span",{style:Ae({width:`${v.value.progress||0}%`})},null,4)]),e("div",Ls,[e("div",null,[l[56]||(l[56]=e("span",null,"Clasificación",-1)),e("strong",null,i(ml(((Ze=v.value.classification)==null?void 0:Ze.document_type)||((el=v.value.document)==null?void 0:el.type))),1)]),e("div",null,[l[57]||(l[57]=e("span",null,"Motor",-1)),e("strong",null,i(((ll=v.value.analysis)==null?void 0:ll.engine)==="openai_responses"?v.value.analysis.model||"OpenAI":"Extractor local"),1)]),e("div",null,[l[58]||(l[58]=e("span",null,"Páginas",-1)),e("strong",null,i(((al=v.value.document)==null?void 0:al.page_count)||"â"),1)]),e("div",null,[l[59]||(l[59]=e("span",null,"Elementos",-1)),e("strong",null,i(xe.value.length),1)]),e("div",null,[l[60]||(l[60]=e("span",null,"Pendientes",-1)),e("strong",null,i(ke.value),1)])]),v.value.error_summary?(n(),o("div",zs,[l[62]||(l[62]=e("i",{class:"bx bx-error-circle"},null,-1)),e("div",null,[l[61]||(l[61]=e("strong",null,"El procesamiento se detuvo",-1)),e("p",null,i(v.value.error_summary),1)])])):k("",!0),Fe.value?(n(),o("div",Is,[l[63]||(l[63]=e("i",{class:"bx bx-sparkles"},null,-1)),e("div",null,[e("strong",null,"OpenAI resolvió "+i(Fe.value)+" "+i(Fe.value===1?"elemento":"elementos")+" del PDF",1),ke.value?(n(),o("p",Rs,"Solo "+i(ke.value)+" "+i(ke.value===1?"excepción real necesita":"excepciones reales necesitan")+" intervención.",1)):v.value.status==="validated"?(n(),o("p",qs,"No quedan candidatos pendientes; el programa está listo para publicación autorizada.")):(n(),o("p",Ms,"Los datos quedaron resueltos; revisa únicamente los conflictos crÃticos indicados."))])])):k("",!0),Se.value?(n(),o("div",Ts,[l[65]||(l[65]=e("i",{class:"bx bx-file-find"},null,-1)),e("div",null,[e("strong",null,i(Se.value)+" "+i(Se.value===1?"objetivo se importará":"objetivos se importarán")+" desde el PDF",1),l[64]||(l[64]=e("p",null,"No necesitan una coincidencia previa: al publicar se crearán con su texto oficial y página de origen.",-1))])])):k("",!0),Re.value.length?(n(),o("div",Hs,[l[68]||(l[68]=e("div",{class:"section-title"},[e("div",null,[e("span",{class:"panel-kicker"},"Control de integridad"),e("h4",null,"Conflictos detectados")])],-1)),(n(!0),o(y,null,j(Re.value,t=>(n(),o("article",{key:t.id,class:w(["conflict-card",t.severity])},[l[67]||(l[67]=e("i",{class:"bx bx-error"},null,-1)),e("div",null,[e("strong",null,i(t.title),1),e("p",null,i(t.description),1),e("small",null,i(vl(t.type))+" · "+i(G(t.status)),1)]),Ve.value&&t.status==="open"?(n(),o("button",{key:0,disabled:D.value,onClick:p=>Cl(t)},"Resolver",8,Gs)):t.status!=="open"?(n(),o("span",Js,[...l[66]||(l[66]=[e("i",{class:"bx bx-check"},null,-1),f("Resuelto",-1)])])):k("",!0)],2))),128))])):k("",!0),e("div",Ys,[e("div",Ws,[l[69]||(l[69]=e("div",null,[e("span",{class:"panel-kicker"},"Staging verificable"),e("h4",null,"Candidatos extraÃdos")],-1)),e("span",null,i(xe.value.length)+" elementos",1)]),(n(!0),o(y,null,j(v.value.candidates,t=>{var p;return n(),o("article",{key:t.id,class:"candidate-card"},[e("div",Ks,[e("span",Qs,i(Te(t.type)),1),e("div",null,[e("strong",null,i(t.key||t.value),1),e("p",null,i(t.value),1),e("small",null,[f("Página PDF "+i(t.physical_page||"â"),1),t.printed_page?(n(),o(y,{key:0},[f(" · impresa "+i(t.printed_page),1)],64)):k("",!0),f(" · "+i(t.source_excerpt),1)])])]),e("div",Xs,[e("span",{class:w(["confidence",`tone-${He(t.confidence)}`])},i(Math.round(t.confidence*100))+"%",3),e("span",{class:w(["review-state",{"resolved-by-ai":t.resolved_by_ai}])},i(Me(t)),3),ce.value&&t.review_status==="pending"?(n(),o("div",Zs,[e("button",{title:"Aceptar",disabled:D.value,onClick:P=>je(t,"accepted")}
1,[...l[70]||(l[70]=[e("i",{class:"bx bx-check"},null,-1)])],8,et),e("button",{title:"Omitir",disabled:D.value,onClick:P=>je(t,"skipped")},[...l[71]||(l[71]=[e("i",{class:"bx bx-x"},null,-1)])],8,lt)])):k("",!0)]),(p=t.children)!=null&&p.length?(n(),o("div",at,[(n(!0),o(y,null,j(t.children,P=>{var Pe,tl;return n(),o("div",{key:P.id,class:"child-candidate"},[e("span",st,i(Te(P.type)),1),e("div",null,[e("strong",null,i(P.value),1),e("small",null,[f("Página PDF "+i(P.physical_page||"â"),1),(Pe=P.warnings)!=null&&Pe.length&&P.review_status==="pending"?(n(),o(y,{key:0},[f(" · requiere intervención")],64)):(tl=P.warnings)!=null&&tl.length?(n(),o(y,{key:1},[f(" · evidencia conservada")],64)):k("",!0)])]),e("span",{class:w(["confidence",`tone-${He(P.confidence)}`])},i(Math.round(P.confidence*100))+"%",3),e("span",{class:w(["review-state",{"resolved-by-ai":P.resolved_by_ai}])},i(Me(P)),3),ce.value&&P.review_status==="pending"?(n(),o("div",tt,[e("button",{title:"Aceptar extracto",disabled:D.value,onClick:Pl=>je(P,"accepted")},[...l[72]||(l[72]=[e("i",{class:"bx bx-check"},null,-1)])],8,it),e("button",{title:"Omitir extracto",disabled:D.value,onClick:Pl=>je(P,"skipped")},[...l[73]||(l[73]=[e("i",{class:"bx bx-x"},null,-1)])],8,nt)])):k("",!0)])}),128))])):k("",!0)])}),128))]),(sl=v.value.logs)!=null&&sl.length?(n(),o("div",ot,[l[75]||(l[75]=e("div",{class:"section-title"},[e("div",null,[e("span",{class:"panel-kicker"},"AuditorÃa técnica"),e("h4",null,"Bitácora del proceso")])],-1)),e("ol",rt,[(n(!0),o(y,null,j(v.value.logs,(t,p)=>(n(),o("li",{key:p},[l[74]||(l[74]=e("span",null,null,-1)),e("div",null,[e("strong",null,i(G(t.stage))+" · "+i(t.progress)+"%",1),e("p",null,i(t.message),1),e("small",null,i(te(El)(t.at)),1)])]))),128))])])):k("",!0),S.value&&Ee.value?(n(),o("div",ut,[e("div",dt,[l[77]||(l[77]=e("div",null,[e("span",{class:"panel-kicker"},"Comparación con fuente"),e("h4",null,"Documento original")],-1)),e("a",{href:te(O).curriculumDocumentUrl(Ee.value.id),target:"_blank",rel:"noopener"},[...l[76]||(l[76]=[f("Abrir en pestaña nueva ",-1),e("i",{class:"bx bx-link-external"},null,-1)])],8,ct)]),e("iframe",{class:"pdf-frame",src:te(O).curriculumDocumentUrl(Ee.value.id),title:"Documento curricular ministerial"},null,8,pt)])):k("",!0)],64)):(n(),be(Ue,{key:0,icon:"bx-scan",title:"Selecciona una importación",message:"Aquà podrás revisar clasificación, candidatos, conflictos y evidencia antes de publicar."}))])])):E.value==="manual"?(n(),be(Ea,{key:3,context:ue.context,matrix:A.value,capabilities:ue.capabilities,onCreated:fl},null,8,["context","matrix","capabilities"])):(n(),o("div",vt,[e("div",mt,[l[79]||(l[79]=e("span",{class:"panel-kicker"},"Ãndice transversal",-1)),l[80]||(l[80]=e("h3",null,"Busca en todo el programa curricular",-1)),l[81]||(l[81]=e("p",null,"Encuentra OA, unidades, conocimientos, habilidades y otros elementos sin perder la referencia de página.",-1)),e("form",{onSubmit:re(jl,["prevent"])},[l[78]||(l[78]=e("i",{class:"bx bx-search"},null,-1)),g(e("input",{"onUpdate:modelValue":l[14]||(l[14]=t=>B.value=t),type:"search",placeholder:"Ej.: observar, ecosistema, experimentar, OA 6â¦"},null,512),[[C,B.value]]),e("button",{disabled:X.value||B.value.trim().length<2},i(X.value?"Buscandoâ¦":"Buscar"),9,bt)],32)]),ie.value.length?(n(),o("div",gt,[(n(!0),o(y,null,j(ie.value,(t,p)=>(n(),o("button",{key:`${t.program_id}-${p}`,onClick:P=>oe({id:t.program_id})},[e("span",ft,i(t.type),1),e("div",null,[e("small",null,i(t.subject)+" · "+i(t.grade_code)+" · pág. "+i(t.source_page||"â"),1),e("strong",null,i(t.title),1),e("p",null,i(t.text),1)]),l[82]||(l[82]=e("i",{class:"bx bx-right-arrow-alt"},null,-1))],8,_t))),128))])):B.value&&!X.value?(n(),be(Ue,{key:1,icon:"bx-search-alt",title:"Sin coincidencias",message:"Prueba con otro término o amplÃa los filtros de asignatura y nivel."})):k("",!0)]))],64)):k("",!0):(n(),be(Ue,{key:0,icon:"bx-calendar-check",title:"Selecciona establecimiento y año académico",message:"El catálogo se consulta dentro de un contexto institucional para mostrar importaciones, permisos y trazabilidad correctos."}))])}}}
1,Vt=nl(yt,[["__scopeId","data-v-6b076ee3"]]);export{Vt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.