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>
35 lines
1.4 KiB
TypeScript
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');
|