fix(rosto): parado mais humano; tonto com espirais e bocejo com a mão
Parado ele vivia escondendo o rosto: a IA local (Qwen 0.6B) reagia a cada som ou "sozinho" a cada 20-60 s e repetia 'esconder' apesar do "varie". - IA local: cada evento só oferece gestos que combinam (barulho: susto ou olhar; movimento: olhar e acenar), os dois últimos ficam fora do enum, no máximo a cada 45 s, não interrompe atividade e, com o modo vida ligado, não reage a "sozinho". - Sem ninguém olhando (sem movimento/PIR há 3 min) nada de gesto "para alguém" (acenar, tímido, esconder...): ele vive a vida dele e começa atividades com mais frequência. - Gestos soltos no celular: quase sempre sutis (olhar de lado, piscar devagar), gesto grande raro e nunca repetido em seguida. - Olhar em repouso com fixações e sacadas em vez do vaivém contínuo. - Tonto: espirais girando no lugar dos olhos (todos os rostos, inclusive Matriz) e boca de "ó". Bocejo: mão na frente da boca com tapinhas e Zzz subindo. As mãos agora aparecem também quando o gesto vem sozinho. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+18
-1
@@ -1,8 +1,25 @@
|
||||
import unittest
|
||||
from cerebro import validar_intencao
|
||||
from cerebro import POR_EVENTO, Cerebro, validar_intencao
|
||||
|
||||
|
||||
class Tests(unittest.TestCase):
|
||||
def test_only_allowlisted_expression(self):
|
||||
self.assertEqual(validar_intencao({'gesto':'feliz'}),'feliz')
|
||||
for data in [{'gesto':'motor 2500'},{'gesto':'feliz','pulso':2500},[],{'gesto':'dormir'}]:
|
||||
with self.assertRaises(ValueError):validar_intencao(data)
|
||||
|
||||
def test_opcoes_por_evento_sem_repetir(self):
|
||||
c = Cerebro.__new__(Cerebro) # sem thread nem arquivo: só a escolha de opções
|
||||
c.history = ['surpreso', 'olhar_esq']
|
||||
opcoes = c.opcoes('som')
|
||||
self.assertNotIn('surpreso', opcoes) # os dois últimos ficam de fora
|
||||
self.assertNotIn('olhar_esq', opcoes)
|
||||
self.assertNotIn('esconder', opcoes) # barulho não vira "esconder o rosto"
|
||||
self.assertTrue(set(opcoes) <= set(POR_EVENTO['som']))
|
||||
for evento, lista in POR_EVENTO.items():
|
||||
for g in lista:
|
||||
self.assertEqual(validar_intencao({'gesto': g}), g)
|
||||
self.assertNotIn('acenar', POR_EVENTO['sozinho']) # sozinho: nada de gesto "para alguém"
|
||||
|
||||
|
||||
if __name__=='__main__':unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user