Visão Geral¶
O propósito dos requisitos funcionais é definir o que a plataforma Mural UnB deve oferecer ao usuário em termos de comportamento e funcionalidades observáveis. Abaixo estão os epics já pensados e desdobrados em user stories, critérios de aceitação e exemplos de payloads/endpoint quando aplicável.
🔴 P0 (Crítico / MVP) – funcionalidade essencial para o funcionamento básico.
🟠 P1 (Importante) – relevante, mas pode ser entregue após o MVP.
🟢 P2 (Desejável) – incrementos ou funcionalidades complementares.
Papéis (roles)¶
-
Aluno: usuário principal que consome recomendações e favorita oportunidades.
-
Professor / Orientador: pode solicitar a publicação de oportunidades (opcional, dependendo do MVP).
-
Administrador: gerencia conteúdo, valida publicações e resolve abusos.
Epic: Autenticação¶
US-01 — Cadastro / Login¶
Descrição: Usuário pode criar conta com email e senha | pode fazer login.
Prioridade: P0 🔴
-
Endpoints (ex.):
-
POST /api/auth/register — { name, email, password }
-
POST /api/auth/login — { email, password } -> retorna { access_token, refresh_token, user }
US-02 — OAuth (Google/UnB SSO)¶
Descrição: Login via Google/SSO da universidade (se possível).
Prioridade: P1 🟠
US-03 — Recuperação de senha¶
Descrição: Usuário solicita recuperação por email.
Prioridade: P1 🟠
Critérios: Email com link expirável (15–60 min).
Epic: Perfil & Personalização inicial¶
US-04 — Perfil do Usuário¶
Descrição: Usuário pode ver e editar seu perfil (nome, curso, semestre, interesses).
Prioridade: P0 🔴
Campos sugeridos: name, email (read-only), campus, curso, semestre, interesses.
Critérios: Alterações são salvas e refletidas no feed de recomendações.
US-05 — Onboarding / Personalização do Primeiro Acesso¶
Descrição: Ao criar conta, o usuário responde um fluxo curto para personalizar recomendações.
Prioridade: P0 🔴
Passos: curso e escolher áreas de interesse (tags).
Critérios: A conclusão do onboarding atualiza preferência do usuário e afeta o feed.
Epic: Feed & Recomendação¶
US-06 — Feed personalizado¶
Descrição: Usuários recebem lista de oportunidades ordenada por relevância.
Prioridade: P0 🔴
Exemplo de response: { items: [{ id, oportunidade_object, type, score, tags }] }
US-07 — Favoritar / Bookmark (Salvar)¶
Descrição: Usuário pode favoritar oportunidade; ver lista de favoritos no perfil.
Prioridade: P1 🟠
Critério: Favorito é persistido por usuário; botão alterna estado prédio/filled.
US-08 — Notificações (push / email)¶
Descrição: Notificar usuário sobre novas oportunidades relevantes.
Prioridade: P1 🟠
Critérios: Usuário pode ativar/desativar por canal e por tipo de oportunidade.
Epic: Oportunidade¶
US-09 — Listar oportunidades¶
Descrição: Endpoint público para listar oportunidades com filtros.
Prioridade: P0 🔴
US-10 — Pesquisar oportunidade específica¶
Descrição: Capaz de retornar oportunidades associadas a pesquisa
Prioridade: P0 🔴
Epic: Navbar & Navegação¶
US-11 — Navbar responsiva¶
Descrição: Navbar fixa com acessos: Home, Oportunidades, Favoritos, Perfil, Sobre, Login/Logout.
Prioridade: P0 🔴
Critério: Mostra items de acordo com auth state (login vs logout).
Epic: ETL Dados¶
US-12 — ETL das EJs (FCTE)¶
Descrição: Coletar, transformar e carregar o banco de dados com as empresas juniores da FCTE (scopo inicial).
Prioridade: P0 🔴
Exemplo de estrutura:
EJs {
id: UUID PK
nome: string,
curso: enum(Software, Eletrônica, Aeroespacial, Automotiva, Energia) FK,
campus: string FK,
sobre: string,
tags: FK,
site?: string,
instagram?: string,
}
US-13 — ETL das Laboratórios (FCTE)¶
Descrição: Coletar, transformar e carregar o banco de dados com os laboratórios de pesquisa da FCTE (scopo inicial).
Prioridade: P0 🔴
Exemplo de estrutura:
EJs {
id: UUID PK
nome: string,
subTitulo: string,
curso: enum(Software, Eletrônica, Aeroespacial, Automotiva, Energia) FK,
campus: string FK,
sobre: string,
coordenador: string,
email: string,
tags: FK,
site?: string,
instagram?: string,
}
US-14 — ETL das Equipes de Competição (FCTE)¶
Descrição: Coletar, transformar e carregar o banco de dados com as equipes de competição da FCTE (scopo inicial).
Prioridade: P2 🟢
Exemplo de estrutura:
EJs {
id: UUID PK
nome: string,
subTitulo: string,
curso: enum(Software, Eletrônica, Aeroespacial, Automotiva, Energia) FK,
campus: string FK,
sobre: string,
tags: FK,
site?: string,
instagram?: string,
}
Epic: Recomendação com IA (Banco Vetorizado)¶
US-15 — Microsserviço de Vetorização¶
Descrição: O sistema deve possuir um microsserviço dedicado para armazenar embeddings vetoriais de oportunidades e perfis de usuários.
Prioridade: P0 🔴
Conclusão¶
Este documento estabelece a base funcional da plataforma Mural UnB, detalhando epics, user stories, critérios de aceitação e exemplos técnicos para orientar tanto o desenvolvimento quanto a validação do produto. A priorização (P0, P1, P2) auxilia na definição do MVP, garantindo foco nas funcionalidades essenciais para entrega inicial de valor.
Observação¶
🔖 Para mais detalhes visuais sobre fluxos, protótipos e mapeamento de funcionalidades, consulte o Figma - Hub do Projeto, que está sendo utilizado pela equipe como central de informações.