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>
This commit is contained in:
@@ -1,25 +1,34 @@
|
||||
/** Aprendizado com o dia a dia: ligar/desligar e esquecer. O estado chega pelo SSE 'aprendizado'. */
|
||||
/** 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(ligado: boolean) {
|
||||
export async function configurarAprendizado(parcial: Partial<Aprendizado['config']>) {
|
||||
const antes = estado.aprendizado;
|
||||
if (antes) estado.aprendizado = { ...antes, config: { ...antes.config, ligado } };
|
||||
if (antes) estado.aprendizado = { ...antes, config: { ...antes.config, ...parcial } };
|
||||
try {
|
||||
estado.aprendizado = await postar<Aprendizado>('/aprendizado/config', { ligado });
|
||||
estado.aprendizado = await postar<Aprendizado>('/aprendizado/config', parcial);
|
||||
} catch (e) {
|
||||
estado.aprendizado = antes;
|
||||
avisos.erro(e);
|
||||
}
|
||||
}
|
||||
|
||||
export async function esquecerAprendizado() {
|
||||
async function pedir(rota: string, corpo: object, sucesso?: string) {
|
||||
try {
|
||||
estado.aprendizado = await postar<Aprendizado>('/aprendizado/esquecer', {});
|
||||
avisos.ok('Ele esqueceu o que tinha aprendido e começa do zero');
|
||||
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');
|
||||
|
||||
Reference in New Issue
Block a user