eletrotupi / tcc/ commit / 6e80d85

thesis: expand history section as well

Pedro Lucas Porcellis porcellis@eletrotupi.com 14 days ago 6e80d857f64c38cf36e2eff58016410b6cbafd14
Parents: ace6a69
1 file(s) changed
  • monografia/chapters/development.tex +34 -25
monografia/chapters/development.tex
1 1
\chapter{Desenvolvimento}
2 2

3 3
Este capítulo detalha o funcionamento de algumas funcionalidades
4 4
desenvolvidas durante o projeto. Apenas algumas funcionalidades mais
5 5
chaves são abordadas neste capítulo, como o registro de humor, vinculo
▸ 218 unchanged lines
224 224

225 225
% TODO: literatura sobre riscos de auto-monitoramento automatizado de humor / mood-tracking apps e TAB
226 226

227 227
\section{Histórico}
228 228

229 -
Nessa tela é apresentado o histórico de registros de humor, sono, gatilho,
230 -
e ações de cuidado. Como os dados são diferentes, é consultado os
231 -
\textit{endpoints} respectivos de cada dado, paralelamente, e então é
232 -
processado no aplicativo.
229 +

230 +
Nessa tela é apresentado o histórico consolidado de registros de humor,
231 +
sono, gatilho e ações de cuidado (como sessões de terapia), organizados
232 +
cronologicamente e agrupados por dia, conforme a figura
233 +
\ref{fig:screenshot-history}. O usuário pode ainda filtrar a listagem por
234 +
categoria (``Humor'', ``Sono'', ``Gatilho'' e ``Ações de Cuidado''),
235 +
reduzindo o volume de informação exibida.
233 236

234 237
\begin{figure}[H]
235 238
\centering
236 239
\caption{Tela de Histórico}
237 240
\label{fig:screenshot-history}
238 241
\includegraphics[width=0.70\textwidth,height=0.60\textheight,keepaspectratio]{screenshot-history.jpeg}
239 242
\source{O autor, 2026}
240 243
\end{figure}
241 244

242 -
Para fazer isso, é utilizado um pequeno serviço que atua com o padrão
243 -
de \textit{mappers} para transformar os dados de cada \textit{endpoint}
244 -
em um formato comum, que é utilizado pelo restante da tela.
245 +
Como os quatro tipos de dado residem em recursos distintos da API, a
246 +
tela consulta os respectivos \textit{endpoints} em paralelo e, em
247 +
seguida, processa o resultado no próprio aplicativo. Para isso, é
248 +
utilizado um pequeno serviço que atua como \textit{mapper}, transformando
249 +
os dados de cada \textit{endpoint} em um formato comum, apresentado no
250 +
código \ref{lst:history-card}.
251 +

252 +
\newpage
245 253

246 254
\begin{lstlisting}[caption={Formato comum da tela de histórico}, label={lst:history-card}]
247 255
export type HistoryCard = {
248 256
  id: string; // "<category>-<id>" to avoid collisions
249 257
  category: HistoryCategory;
▸ 4 unchanged lines
254 262
  badge?: HistoryBadge;
255 263
  raw: MoodEntry | SleepRecord | Trigger | CareAction;
256 264
};
257 265
\end{lstlisting}
258 266

259 -
Conforme pode-se ver no código \ref{lst:history-card}, o formato comum
260 -
utilizado na tela de histórico, mapeia em essencialmente quatro propriedades
261 -
do dado original, além de uma propriedade adicional para identificar a categoria.
267 +
Após a normalização, os quatro conjuntos de dados são combinados em uma
268 +
única lista ordenada pelo campo \texttt{timestamp} e reagrupados por dia
269 +
para exibição, conforme visto na figura \ref{fig:screenshot-history}, nos
270 +
cabeçalhos ``terça-feira, 14 de julho'' e ``segunda-feira, 13 de julho''.
271 +
Essa unificação é proposital: ao invés de apresentar quatro telas
272 +
separadas por tipo de dado, o histórico busca reconstruir uma narrativa
273 +
única do dia do usuário, aproximando-se do princípio de \textit{Ecological
274 +
Momentary Assessment} já mencionado anteriormente — o contexto de um
275 +
registro de humor (por exemplo, o gatilho ``Interno'' registrado três
276 +
minutos antes, na mesma figura) fica visualmente próximo do evento que
277 +
possivelmente o motivou.
262 278

263 -
A propriedade \texttt{raw} é utilizada para armazenar o dado original,
264 -
permitindo que seja recuperado posteriormente quando necessário. A
265 -
propriedade \texttt{badge} é utilizada para armazenar qual dado é mostrado
266 -
como um ``indicador'' mais importante para aquele dado em específico,
267 -
por exemplo, que um determinado registro de sono foi ``Insuficiente'', se for
268 -
menor que 7 horas, mostrar se existem vínculos com aquele registro em
269 -
especial, ou mostrar qual nível de um determinado registro de humor
270 -
é considerado importante prestar atenção, como ``Ansiedade alta'',
271 -
``Energia alta'', etc. O último é importante também saber, por que uma
272 -
pessoa com TAB, pode estar com a energia alta e significar que ela está
273 -
em um período de mania, o que é útil para se detectar alguma alteração
274 -
ou mudança de ciclos.
275 -

276 -
Vale notar também que o badge é similar ao \textit{badge} que aparece na
277 -
tela de consulta de registros, apresentado na figura \ref{fig:screenshot-consulta-registros}.
279 +
A propriedade \texttt{raw} armazena o dado original, permitindo que a
280 +
listagem redirecione o usuário para a tela de detalhe correta ao tocar em
281 +
um card, independentemente da categoria. Já a propriedade \texttt{badge}
282 +
reaproveita o mesmo mecanismo já descrito na seção de indicadores: para
283 +
um registro de sono, sinaliza se a duração foi insuficiente; para um
284 +
registro de humor, destaca a dimensão mais relevante daquele registro
285 +
(como ``Ansiedade alta'' na figura \ref{fig:screenshot-history}); para um
286 +
gatilho, indica sua categoria, e assim por diante.
278 287

279 288
\FloatBarrier