// ============ AcademIA8 · Consola — Conocimiento del agente (RAG, arq_07 §4) ============
// v1: visualización real, solo lectura. Tres categorías (arq_07 §1):
// 1. Contenido del curso -> el alumno lo recibe, automático, filtrado por progreso.
// 2. Acompañamiento -> no visible, atado a una unidad, se activa al llegar ahí.
// 3. Referencia -> no visible, siempre disponible desde el primer día.
// Ingesta 100% por script (scripts/ingest_fuentes.py); acá no se agrega/quita nada.
// "Reindexar" queda deshabilitado ("próximamente"): no hay endpoint de escritura aún.
function RagPanel({ course }){
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [err, setErr] = useState(null);
useEffect(() => {
let alive = true;
(async () => {
setLoading(true); setErr(null);
try {
const d = await A8Api.getConocimiento(course.id);
if (alive) setData(d);
} catch (e) {
if (alive) setErr(e.message || String(e));
} finally {
if (alive) setLoading(false);
}
})();
return () => { alive = false; };
}, [course.id]);
return (
Cómo funciona el conocimiento del agente
- El alumno solo recibe el contenido del curso, dosificado día a día por WhatsApp. Es lo único que le llega.
- Ese contenido el agente lo usa siempre como base, desbloqueándolo a medida que el alumno avanza: solo puede citar lo que el alumno ya recibió.
- El acompañamiento y la referencia nunca se le envían al alumno: solo mejoran las respuestas del agente. El acompañamiento se activa al llegar a su unidad; la referencia está disponible desde el primer día.
Ingesta por script
El material de acompañamiento y referencia se carga con scripts/ingest_fuentes.py. Agregar o quitar fuentes desde acá llega en una versión próxima.
Reindexar
{loading && (
Cargando conocimiento del agente…
)}
{!loading && err && (
)}
{!loading && !err && data && (
<>
Contenido del curso automático
{data.contenido.total}
Todo el contenido publicado ya es base del agente
Se usa automáticamente y se desbloquea con el progreso: el agente solo cita lo que el alumno ya recibió.
{data.contenido.incluidos} {data.contenido.incluidos===1?'fragmento indexado':'fragmentos indexados'}
{data.contenido.excluidos>0 && ` · ${data.contenido.excluidos} excluido${data.contenido.excluidos===1?'':'s'} por curación`}
Acompañamiento por unidad el alumno no lo ve
{data.acompanamiento.total}
Material que el agente usa para responder mejor una vez que el alumno llega a esa unidad, pero que nunca se le envía.
{data.acompanamiento.total===0 ? (
Sin material de acompañamiento cargado.
) : (
{data.acompanamiento.por_unidad.map(u=>(
{u.unidad_id}
{u.cantidad}
))}
)}
Referencia siempre disponible el alumno no lo ve
{data.referencia.total}
Material disponible desde el primer día, sin importar el progreso del alumno (FAQ, glosario, etc.).
{data.referencia.slugs.length===0 ? (
Sin material de referencia cargado.
) : (
{data.referencia.slugs.map(slug=>(
))}
)}
>
)}
);
}
Object.assign(window, { RagPanel });