feat: Add 'atas' (minutes/records) management feature, and implement various improvements across UI, backend logic, and authentication.

This commit is contained in:
2025-12-02 16:37:48 -03:00
parent 05e7f1181d
commit 4bd9e21748
265 changed files with 29156 additions and 26460 deletions

View File

@@ -1,11 +1,5 @@
<script lang="ts">
const {
dueDate,
startedAt,
finishedAt,
status,
expectedDuration
} = $props<{
const { dueDate, startedAt, finishedAt, status, expectedDuration } = $props<{
dueDate: number | undefined;
startedAt: number | undefined;
finishedAt: number | undefined;
@@ -33,9 +27,8 @@
// Verificar se foi dentro ou fora do prazo
const dentroDoPrazo = dueDate ? finishedAt <= dueDate : true;
const diasAtrasado = !dentroDoPrazo && dueDate
? Math.floor((finishedAt - dueDate) / (1000 * 60 * 60 * 24))
: 0;
const diasAtrasado =
!dentroDoPrazo && dueDate ? Math.floor((finishedAt - dueDate) / (1000 * 60 * 60 * 24)) : 0;
return {
tipo: 'concluida',
@@ -88,9 +81,12 @@
</svg>
<span class="text-sm font-medium {info.dentroDoPrazo ? 'text-info' : 'text-error'}">
Concluída em {info.dias > 0 ? `${info.dias} ${info.dias === 1 ? 'dia' : 'dias'} e ` : ''}
{info.horas} {info.horas === 1 ? 'hora' : 'horas'}
{info.horas}
{info.horas === 1 ? 'hora' : 'horas'}
{#if !info.dentroDoPrazo && info.diasAtrasado > 0}
<span> ({info.diasAtrasado} {info.diasAtrasado === 1 ? 'dia' : 'dias'} fora do prazo)</span>
<span>
({info.diasAtrasado} {info.diasAtrasado === 1 ? 'dia' : 'dias'} fora do prazo)</span
>
{/if}
</span>
{:else if info.tipo === 'andamento'}
@@ -112,13 +108,14 @@
<span class="text-sm font-medium {info.atrasado ? 'text-error' : 'text-success'}">
{#if info.atrasado}
{info.dias > 0 ? `${info.dias} ${info.dias === 1 ? 'dia' : 'dias'} e ` : ''}
{info.horas} {info.horas === 1 ? 'hora' : 'horas'} atrasado
{info.horas}
{info.horas === 1 ? 'hora' : 'horas'} atrasado
{:else}
{info.dias > 0 ? `${info.dias} ${info.dias === 1 ? 'dia' : 'dias'} e ` : ''}
{info.horas} {info.horas === 1 ? 'hora' : 'horas'} para concluir
{info.horas}
{info.horas === 1 ? 'hora' : 'horas'} para concluir
{/if}
</span>
{/if}
</div>
{/if}