Files
carinha-control-panel/web/src/lib/aprendizado.svelte.ts
T
julioandClaude Opus 5.5 935bf8d586 feat(vida): semana da casa com análise por IA e rotina contada
O aprendizado passa a entender a logística da semana, não só a hora:
- presença por dia da semana × hora (7×24, média móvel por dia) e
  histórico dos últimos 42 dias;
- depois da meia-noite, com 7 dias observados, a IA escolhida (Gemini,
  IA local ou Qwen do S10, via Criacao.chamar) cruza os dias e devolve
  padrões em frases e um plano da semana (casa / fora / dormindo);
- o plano da IA só é adotado se conferir com 70% das horas medidas;
  senão fica como sugestão ("Usar este plano");
- "Conte sua rotina": texto livre vira plano na hora e vale sobre o da
  IA; o painel mostra o quanto confere com o que os sensores veem;
- o plano guia o comportamento: acorda do cochilo 15 min antes da
  chegada naquele dia da semana e, com a casa vazia, tira cochilos
  longos para guardar energia;
- lição da rotina só quando muda 3+ horas ou depois de uma semana, e
  some quando já existe plano da semana;
- painel: quadro da semana (o que eu vi / plano), a rotina entendida,
  sugestão, contar rotina, analisar agora e a IA da análise diária.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:36:32 -03:00

35 lines
1.4 KiB
TypeScript

/** Aprendizado com o dia a dia: ajustes, análise da semana com IA e a rotina contada por você.
* O estado chega pelo SSE 'aprendizado'. */
import { postar } from './api';
import { avisos } from './avisos.svelte';
import { estado } from './estado.svelte';
import type { Aprendizado } from './tipos';
export async function configurarAprendizado(parcial: Partial<Aprendizado['config']>) {
const antes = estado.aprendizado;
if (antes) estado.aprendizado = { ...antes, config: { ...antes.config, ...parcial } };
try {
estado.aprendizado = await postar<Aprendizado>('/aprendizado/config', parcial);
} catch (e) {
estado.aprendizado = antes;
avisos.erro(e);
}
}
async function pedir(rota: string, corpo: object, sucesso?: string) {
try {
estado.aprendizado = await postar<Aprendizado>(rota, corpo);
if (sucesso) avisos.ok(sucesso);
return true;
} catch (e) {
avisos.erro(e);
return false;
}
}
export const esquecerAprendizado = () => pedir('/aprendizado/esquecer', {}, 'Ele esqueceu o que tinha aprendido e começa do zero');
export const analisarSemana = () => pedir('/aprendizado/analisar', {});
export const contarRotina = (texto: string) => pedir('/aprendizado/rotina', { texto });
export const usarSugestao = () => pedir('/aprendizado/plano', { acao: 'usar_sugestao' }, 'Plano da IA em uso');
export const apagarPlano = () => pedir('/aprendizado/plano', { acao: 'apagar' }, 'Plano apagado: ele volta a seguir só o que mede');