👆
Selecciona un alumno/a para comezar
👥 Alumnado
🚨 Condutas
⭐ Reforzadores
⚠ Consecuencias

📄 Informe Semanal para a Familia

Selecciona un alumno/a
'; } function verInforme(){ var sid=document.getElementById('sel-i').value;if(!sid){alert('Selecciona un alumno/a');return} var st=S.al.find(function(a){return a.id===sid}); var d=gWkD(sid,wkOff);var wr=d.wr; var obsKey='obs_'+sid+'_'+wr.mon.toISOString().slice(0,10); var obsEl=document.getElementById('obs-field'); var obs=obsEl?obsEl.value:localStorage.getItem(obsKey)||''; if(obs)localStorage.setItem(obsKey,obs); var fmt=function(x){return x.toLocaleDateString('gl-ES',{day:'numeric',month:'long'})}; var dr='Semana do '+fmt(wr.mon)+' ao '+fmt(wr.sun); var txt='INFORME SEMANAL\n'+st.nm.toUpperCase()+'\n'+dr+'\n' +'================================\n\n' +'CONDUTAS: '+d.tc+' (semana anterior: '+d.pc+')\n' +(d.condutas.length?d.condutas.map(function(x){return' • '+x}).join('\n')+'\n':' Ningunha\n') +'\nCONSECUENCIAS: '+d.tk+'\n' +(d.cons.length?d.cons.map(function(x){return' • '+x}).join('\n')+'\n':' Ningunha\n') +'\nREFORZADORES: '+d.tr+'\n' +(d.refs.length?d.refs.map(function(x){return' • '+x}).join('\n')+'\n':' Ningún\n') +(obs?'\nMENSAXE PARA A FAMILIA:\n--------------------------------\n'+obs+'\n':''); // Xerar HTML estático do informe para descargar/compartir var htmlInforme=xerarHtmlInforme(sid); var fname='Informe_'+st.nm.replace(/\s+/g,'_')+'_'+wr.mon.toISOString().slice(0,10)+'.html'; document.getElementById('panel-tit').textContent='📄 '+st.nm+' — '+dr; document.getElementById('txt-inf').value=txt; // Engadir botón de descarga ao panel var extraEl=document.getElementById('panel-extra'); if(!extraEl){ extraEl=document.createElement('div'); extraEl.id='panel-extra'; extraEl.style.cssText='margin-top:12px;display:flex;gap:10px;flex-wrap:wrap'; document.getElementById('panel-inf').querySelector('.card').appendChild(extraEl); } extraEl.innerHTML='' +'
Abre no navegador e imprime como PDF
'; document.getElementById('btn-dl-html').onclick=function(){ var blob=new Blob([htmlInforme],{type:'text/html;charset=utf-8'}); var url=URL.createObjectURL(blob); var a=document.createElement('a'); a.href=url;a.download=fname; document.body.appendChild(a);a.click();document.body.removeChild(a); setTimeout(function(){URL.revokeObjectURL(url)},2000); }; document.getElementById('panel-inf').style.display='block'; document.getElementById('panel-inf').scrollTop=0; } document.getElementById('panel-close').addEventListener('click',function(){ document.getElementById('panel-inf').style.display='none'; }); document.getElementById('btn-sel').addEventListener('click',function(){ var ta=document.getElementById('txt-inf'); ta.select();ta.setSelectionRange(0,99999); }); // ── INIT ───────────────────────────────────────────────────────── function chgWk(dir,view){ // Non avanzar mais ala da semana actual if(dir>0 && wkOff>=0){return} wkOff+=dir; var lbl=wkOff===0?'Esta semana':wkOff===-1?'Semana pasada':'Hai '+(Math.abs(wkOff))+' semanas'; var elP=document.getElementById('wk-lbl-p'); var elI=document.getElementById('wk-lbl-i'); if(elP)elP.textContent=lbl; if(elI)elI.textContent=lbl; // Deshabilitar botón seguinte se estamos na semana actual var btnN=document.getElementById('btn-wk-next'); if(btnN)btnN.style.opacity=wkOff>=0?'0.3':'1'; if(view==='p')rPanel(); else if(view==='i')rInforme(); } // ── NOTAS DO DÍA ──────────────────────────────────────────────── function notasKey(sid){return'notas_'+sid+'_'+new Date().toISOString().slice(0,10)} function loadNota(sid){ var ta=document.getElementById('notas-dia'); if(ta&&sid)ta.value=localStorage.getItem(notasKey(sid))||''; } document.getElementById('btn-garda-nota').addEventListener('click',function(){ var sid=document.getElementById('sel-r').value;if(!sid)return; var ta=document.getElementById('notas-dia');if(!ta)return; localStorage.setItem(notasKey(sid),ta.value); var ok=document.getElementById('nota-ok'); if(ok){ok.style.display='';setTimeout(function(){ok.style.display='none'},2000)} }); // ── INFORME PARA O/A MESTRE/A ──────────────────────────────────── document.getElementById('btn-inf-mestre').addEventListener('click',function(){ var sid=document.getElementById('sel-r').value;if(!sid){alert('Selecciona un alumno/a');return} xerarInformeMestre(sid); }); document.getElementById('mestre-close').addEventListener('click',function(){ document.getElementById('panel-mestre').style.display='none'; }); async function xerarInformeMestre(sid){ var st=S.al.find(function(a){return a.id===sid}); var d=gWkD(sid,0); // sempre semana actual para o mestre var wr=d.wr; var fmt=function(x){return x.toLocaleDateString('gl-ES',{day:'numeric',month:'long'})}; var notaHoxe=localStorage.getItem(notasKey(sid))||''; // Recoller ultimas 4 semanas para tendencia var tendencia=[]; for(var w=0;w>=-3;w--){ var dw=gWkD(sid,w); tendencia.push({semana:fmt(dw.wr.mon),tc:dw.tc,tr:dw.tr,tk:dw.tk}); } document.getElementById('panel-mestre').style.display='block'; document.getElementById('mestre-content').innerHTML='
⏳ Xerando análise con IA...
'; var prompt='Es un orientador/a educativo experto en condutas disruptivas en aulas de educación especial en Galicia (Decreto 150/2022). Analiza os seguintes datos de '+st.nm+' e xera un INFORME DE APOIO PARA O/A MESTRE/A en galego.\n\n' +'DATOS SEMANA ACTUAL ('+fmt(wr.mon)+' ao '+fmt(wr.sun)+'):\n' +'- Condutas: '+d.tc+(d.condutas.length?'. '+d.condutas.join(', '):'')+'\n' +'- Consecuencias: '+d.tk+(d.cons.length?'. '+d.cons.join(', '):'')+'\n' +'- Reforzadores: '+d.tr+(d.refs.length?'. '+d.refs.join(', '):'')+'\n' +(notaHoxe?'- Notas do mestre: '+notaHoxe+'\n':'') +'\nTENDENCIA 4 SEMANAS:\n' +tendencia.map(function(t,i){return'- '+(i===0?'Esta semana':i===1?'Semana pasada':'Hai '+i+' semanas')+': '+t.tc+' condutas, '+t.tr+' reforzadores'}).join('\n') +'\n\nXERA UN INFORME con: 1) ANALISE DA SEMANA (causas, patrons, detonantes). 2) TENDENCIA (mellora/empeora). 3) QUE FUNCIONA (reforzadores efectivos). 4) RECOMENDACIONS PARA A AULA (3-4 estratexias concretas). 5) ALERTAS se hai algo preocupante. Ton profesional, directo, practico. Galego. Titulos claros.'; try{ var ctrl=new AbortController(); var tmr=setTimeout(function(){ctrl.abort()},30000); var resp=await fetch('https://api.anthropic.com/v1/messages',{ method:'POST',signal:ctrl.signal, headers:{'Content-Type':'application/json','anthropic-dangerous-direct-browser-access':'true'}, body:JSON.stringify({model:'claude-haiku-4-5',max_tokens:1200,messages:[{role:'user',content:prompt}]}) }); clearTimeout(tmr); if(!resp.ok)throw new Error('HTTP '+resp.status); var data=await resp.json(); var txt=(data.content&&data.content[0])?data.content[0].text:'Sen resposta.'; document.getElementById('mestre-content').textContent=txt; }catch(err){ // Fallback local var txt2='ANÁLISE DA SEMANA\n' +'──────────────────\n' +st.nm+' presentou '+d.tc+' condutas disruptivas' +(d.condutas.length?', principalmente: '+d.condutas.slice(0,3).join(', '):'')+'.\n' +(d.tk>0?'Consecuencias aplicadas: '+d.cons.join(', ')+'.\n':'Non foi necesario aplicar consecuencias.\n') +(d.tr>0?'Reforzadores usados: '+d.refs.join(', ')+'.\n':'') +'\nTENDENCIA\n' +'──────────\n' +tendencia.map(function(t,i){return(i===0?'Esta semana':i===1?'Semana pasada':'Hai '+i+' semanas')+': '+t.tc+' condutas'}).join('\n')+'\n\n' +'RECOMENDACIÓNS\n' +'───────────────\n' +(d.tc>5?'• O número de condutas é elevado. Revisa detonantes ambientais.\n':'') +(d.tr>0?'• Os reforzadores están funcionando. Mantén a súa aplicación consistente.\n':'• Incrementa o uso de reforzadores positivos.\n') +'• Rexistra os contextos específicos onde ocorren as condutas.\n' +'• Coordínate coa familia sobre as estratexias aplicadas.\n'; document.getElementById('mestre-content').textContent=txt2; } } ld();fSel();rRex();