cacic-fct / fct-app

Aplicativo de eventos dos alunos
https://fctapp.cacic.dev.br
Other
8 stars 4 forks source link

Esquematizar banco de dados #183

Open Yudi opened 6 months ago

Yudi commented 6 months ago

Esquema atual do Firestore disponível em https://docs.fctapp.cacic.dev.br

O esquema novo deve contemplar o máximo possível dos campos do atuais, para paridade.

Além disso, deve contemplar o Remote config.

Remote config

O Remote Config é usado para configurar o aplicativo de maneira dinâmica e remota, sem precisar fazer commits ou um novo release.


calendarItemViewDefault: boolean — Se a visão padrão do calendário deve ser a de lista

calendarTabEnabled: boolean — Mostrar botão da aba calendário

eventsTabEnabled: boolean — Mostrar botão da aba de Grandes Eventos

mapTabEnabled: boolean — Mostrar botão da aba mapa

registerPrompt: boolean — Se a função "CompareUserdataVersion" deve ser executada e, consequentemente, se a exibição da tela de registro deve ser forçada ao usuário

placesMap: { — Lista de lugares que é exibida na criação de um evento
    ["key": string]: {
        "name": string — Para exibição na lista seletora na página de criação
        "description": string — Na exibição do evento fica "name - description"
        "lat": number — Latitude do pin no mapa
        "lon": number — Longitude
    }
}

professors: string[] = ["email@unesp.br"] — Lista dos e-mails dos professores

Correções

Erros do esquema do Firestore que devem ser corrigidos:

Salies commented 6 months ago

Arquivo schema disponível em https://github.com/cacic-fct/fct-app/blob/angular-backend/backend/schema/schema.erd Para visualizar, utilize a extensão ERD Editor no VS Code.

Salies commented 6 months ago

Primeira versão completa do schema no commit 026c0d0d549ce23bb47ae852ef249b0eeb8e68d9. Ainda é necessário verificar se ele contempla tudo o que é necessário; e ver como funciona a autenticação via Supabase.

Assim que cumprir essas pendências, passo para verificação dos demais membros. Aceito feedback intermediário, claro, caso alguém se disponha.

Yudi commented 6 months ago

@GuiCT - que queria remodelar os dados – gostaria de dar alguma sugestão?

unnamed-2024-04-20T04_23_28

Yudi commented 6 months ago

Renomeei todos os visible_for_status para visible_for_associate_status, para evitar ambiguidades com "status".

Adicionei short_description ao event, pois é diferente do description.

Único campo phone seguindo o formato internacional ao invés de DDD e número


Como o sistema é pequeno e são esperados poucos usuários, tentei normalizar a base ao máximo. Caso seja previsto um impacto na eficiência, podemos mudar.

O servidor será robusto. Está certo em priorizar legibilidade.

Para otimizar o banco, assumi a organização e comportamento da SECOMPP como é atualmente.

Acredito que esteja suficientemente agnóstico.

payment_info — markdown ou html

Melhor não injetar HTML, pra evitar ter que ficar validando e fazer sanitize. Só Markdown é suficiente pra essa aplicação.


Falta contemplar o Remote Config, que eu esqueci de colocar no comentário inicial da issue, mas pode deixar para depois, porque não é urgente.

E a armazenagem dos certificados, que pode ser deixada para depois da SECOMPP.

Yudi commented 5 months ago

Adicionada a informação de que CREATED_BY e UPDATED_BY devem ser informações comuns

Na tabela user:

Na tabela unesp_user

Penso que devemos usar text ao invés de int para facilitar a legibilidade. tier e auth_level

Na tabela event:

Adicionadas as tabelas:

Tabelas marcadas como Draft, pois precisam de revisão pelo @Salies.


Alterada relação unesp_user 1-n claims para user 1-n claims

Penso que precisaremos trabalhar com permissões mais granulares ao invés de claims brandas.

Exemplo 1: pessoas que estão escaneando presença não deveriam ter permissão para ver informações de outros usuários ou criar, editar ou deletar eventos. Exemplo 2: Quem está ministrando um minicurso poderia ter a permissão de editar o seu evento, escanear presenças e visualizar os inscritos.

Isso se tornará crítico, pois haverá muitas pessoas ajudando em diferentes áreas agora que a SECOMPP conta para as horas de extensão obrigatórias.

Yudi commented 5 months ago

Esquema atual do Firestore disponível em https://cacic-fct.github.io/fct-app-docs

Yudi commented 3 months ago

Esquema movido para a branch angular-backend https://github.com/cacic-fct/fct-app/blob/angular-backend/backend/schema/schema.erd

Novas especificações adicionadas no comentário principal da issue