feat(vida): ideias do dia com inspiração da internet e "olha o que eu aprendi"
Todo dia, a partir das 9h, o Carinha cria 3 atividades novas (inspiracao.py): - sinais de fontes abertas: tempo da cidade (Open-Meteo), datas comemorativas da semana (lista fixa + feriados da BrasilAPI), "neste dia" da Wikipédia e assuntos em alta no Google Trends Brasil; - o Gemini escolhe ideias leves (descarta tragédia, política e afins) e cada uma vira atividade pelo estúdio (Criacao.gerar), com motivo e uma curiosidade; - até 3 tentativas por dia, 30 min entre elas; botão "Criar mais agora"; - as atividades criadas entram na rotina do modo vida (as de hoje com 40% de chance) e, com alguém perto, ele conta a curiosidade: legenda e voz de robô (ordem "aprendi", até 2x por dia cada); - painel: cartão "Ideias do dia" no estúdio (Mostrar, Contar, o que ele viu na internet, ajustes: quantas, horário, cidade, fontes) e tópico no guia. Correções achadas no caminho: - WebView de fábrica do S10 (Chrome 102) não tem AbortSignal.timeout: o celular nunca mandava o status e a placa o via offline; - arquivos estáticos com Cache-Control no-cache e o app com LOAD_NO_CACHE: o WebView seguia com uma carinha.html velha depois de deploy; - status do celular recusado vai para o journal (1 linha por minuto); - legenda mais estreita para não cobrir a bateria. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -81,6 +81,18 @@ class ServidorTest(unittest.TestCase):
|
||||
self.assertEqual(self.pedir('GET', '/app/health', token=None)[0], 200)
|
||||
self.assertEqual(self.pedir('GET', '/estado?t=' + TOKEN, token=None)[0], 200)
|
||||
|
||||
def test_pagina_do_rosto_sempre_conferida_e_api_sem_cache(self):
|
||||
# o WebView do celular não pode seguir com uma carinha.html velha depois de um deploy
|
||||
for rota, esperado in (('/carinha.html', 'no-cache'), ('/gestos', 'no-store')):
|
||||
conn = http.client.HTTPConnection('127.0.0.1', self.porta, timeout=5)
|
||||
conn.request('GET', rota)
|
||||
r = conn.getresponse()
|
||||
r.read()
|
||||
conn.close()
|
||||
self.assertEqual(r.status, 200, rota)
|
||||
self.assertEqual(r.getheader('Cache-Control'), esperado, rota)
|
||||
self.assertEqual(len(r.headers.get_all('Cache-Control')), 1, rota)
|
||||
|
||||
def test_sem_token_configurado_fica_aberto(self):
|
||||
self.server.token = None
|
||||
self.assertEqual(self.pedir('GET', '/estado', token=None)[0], 200)
|
||||
|
||||
Reference in New Issue
Block a user