Menuabrir
EstávelAtualizado em 14 de mai. de 2026, 00:06

Este módulo depende de

3
  • membersFK obrigatório — cada entry é de um membro específico
  • agentsStudent_mirror responde reflexões com perguntas socráticas async
  • intelligenceCrisis detection consome counts agregados (sem conteúdo) de entries

Módulos que dependem deste

2
  • meetingsAuto-gera prompt reflexivo pós-aula
  • intelligenceConta agregadas apenas (sem conteúdo) para crisis detection

Diary (Diário Privado)

Status: 🟢 Estável (escopo restritíssimo — privacidade radical) Code: backend/app/modules/diary UI: frontend/src/app/(diary)/diary Última revisão deste doc: 2026-05-13 por Felipe + Claude Dependências fortes: members (FK obrigatório), agents (student_mirror responde), intelligence (crisis detection — counts agregados only)


1. Identidade

O que faz (uma frase)

Diário reflexivo privado do membro com prompts guiados, respostas IA via student_mirror agent, visualização operador apenas se shared_for_analysis=true, e devolutivas IA aprovadas (workflow similar a surveys).

Por que existe (negócio)

Aluno de Mais Consciente precisa espaço seguro pra reflexão. Sem este módulo:

  • Anotações em Notion/papel sem IA.
  • Sem prompts guiados pós-aula.
  • Sem feedback estruturado do mentor.

Com Diary:

  • Espaço privado por default (admin não vê a menos que aluno marque shared).
  • Student_mirror responde reflexões com perguntas socráticas (sem julgamento).
  • Devolutivas IA criam ponte aluno-mentor.
  • Crisis detection (intelligence) lê counts agregados (não conteúdo) pra alertar tom de crise.

Por que existe (técnico)

  • Privacidade radical: shared_for_analysis=false → invisível pro admin por default. Operador precisa include_private=true explícito (audited).
  • Conteúdo NUNCA cross-tenant.
  • Crisis detection consome só counts (não texto) — intelligence.run_crisis_detection.

Status atual

Em prod, escopo restrito.


2. Cases de uso reais

Case 1: Aluno escreve reflexão diária

UI /diary → seleciona prompt "O que aprendi hoje?" → escreve → salva → student_mirror responde com pergunta reflexiva.

Case 2: Devolutiva pós-jornada

Após journey_assessment, aluno recebe diary_devolutiva (workflow ai_draft → em_revisao → aprovado → enviado → lido) — mentor pode editar antes de aprovar.

Case 3: Crisis detection (privacy-respecting)

Beat intelligence.run_crisis_detectioncounts agregados (sem conteúdo): qtd entries últimos 7d, mood médio, energy_level. Se sinal crítico → alerta sem revelar texto.


3. Oportunidades de negócio

  • Diário guiado por IA: prompts adaptativos baseados em jornada do aluno.
  • Mentoria escalada: devolutivas IA + revisão humana = mentor 1:N.
  • Wellbeing dashboard: agregado anônimo por tenant (sem expor indivíduo).

4. Arquitetura interna

Arquivos


5. Tabelas (3)

diary_entry

ColunaNotas
tenant_id / member_id (FK obrigatório)
kindreflection / chandra_qa / jornada_devolutiva / onboarding
mood / energy_levelNuméricos
themesArray
bodyTexto da entry
replyResposta IA (student_mirror)
shared_for_analysisDefault false — invisível pro admin
favorite / archived
written_atIndexed

diary_prompt

ColunaNotas
theme_code
text"O que aprendeu hoje?"
is_active / sort_order

diary_devolutiva

Workflow ai_draft → em_revisao → aprovado → enviado → lido. mentor_vision + operator_notes privados.

Relacionamentos cross-módulo

DireçãoOutro móduloComo
↗ Lêmembers_member.idFK obrigatório
↗ Lêagents (student_mirror)Resposta IA reply populada async
↘ Escreveintelligence (crisis_detection)Counts agregados (sem conteúdo)

6. API / Endpoints (23)

Admin (5)

MétodoRotaO que faz
GET/api/diary/entriesDefault: shared_for_analysis=true apenas. Use ?include_private=true pra ver tudo (audited)
GET/api/diary/entries/{id}Detail (respeita visibility)
GET/api/diary/statsAgregado
GET/api/diary/me/entriesPróprias do operador

Membro (18)

MétodoRotaO que faz
GET/api/diary/me/entriesPróprias
POST/api/diary/me/entriesCriar
GET/api/diary/me/entries/{id}Detail
PATCH/api/diary/me/entries/{id}Edit own
DELETE/api/diary/me/entries/{id}
GET/api/diary/me/promptsLista prompts ativos
GET/api/diary/me/devolutivasLista devolutivas aprovadas
GET/api/diary/me/devolutivas/{id}Detail (sem mentor_vision)

7. Configuração

Sem env vars. Privacy default: list_entries rejeita private a não ser include_private=true explícito.


8. Operações + Troubleshooting

Sintoma: Operador não vê entries

Causa: Filtro default shared_for_analysis=true. Fix: ?include_private=true (audit log marca).


9. Limitações e débitos técnicos

#Item
1shared_for_analysis=false invisível por default
2mentor_vision NUNCA retornado ao membro
3Crisis detection consome só counts
4Legacy migration fields (legacy_id, legacy_source) pra backfill antigos

10. Histórico

Em prod desde absorção do Diary legacy (Darpana). Foco em privacidade radical desde dia 1.