Fase 2


Escopo


  • Desenvolver um aplicativo para uso dos universitários da faculdade UFU (Universidade Federal de Uberlândia), no qual seja possível definir a grade horária mais compatível com o aluno de acordo com o curso que o mesmo está matriculado e as matérias que ainda estão disponíveis para matrícula, baseando-se na rotina definida pelo aluno.


Requisitos Funcionais


Fase 1 - 2025-1


  • RF01 - Cadastro
    • O sistema deve permitir que o aluno realize o cadastro com nome, e-mail, matrícula e senha


  • RF02 - Login
    • O sistema deve permitir que o usuário realize login na plataforma utilizando seus dados, para ter uma experiencia customizada


  • RF03 - Recuperação de senha
    • O sistema deve permitir que o usuário recupere sua senha perdida por meio de um e-mail secundário ou número de telefone
Grade Curricular: requisitos que se relacionam e interagem com disciplinas, horários, matrícula, carga horária, pré-requisitos em disciplinas. 


  • RF04 - Listar disciplinas disponíveis
    • O sistema deve exibir a lista de disciplinas disponíveis para o semestre atual, deixando para que o usuário escolha entre elas


  • RF05 - Selecionar disciplinas
    • O sistema deve permitir que o usuário selecione e peça a matrícula das disciplinas que ele desejar


  • RF06 - Verificar conflitos entre disciplinas
    • O sistema deve verificar e alertar o usuário de possíveis conflitos de horário ao selecionar as disciplinas desejadas


  • RF07 - Validar Pré-requisitos
    • O sistema deve validar os pré-requisitos antes de permitir a matrícula em uma disciplina


  • RF08 - Verificar carga horária
    • O sistema deve verificar a carga mínima e máxima permitida


  • RF09 - Disponibilidade de vagas
    • O sistema deve informar ao aluno a disponibilidade de vagas nas disciplinas selecionadas


Personalização de Grade 


  • RF10 - Preferencias de horários
    • O sistema deve permitir que o aluno defina preferencias de horários e dias livres


  • RF11 - Opções diferentes de grade curricular
    • O sistema deve permitir que o aluno visualize diferentes opções de grades antes de confirmar a escolha


Ajuste e Modificação 


  • RF12 - Edição da grade
    • sistema deve permitir que o aluno modifique sua grade, adicionando ou removendo disciplinas dentro do período de ajuste acadêmico


  • RF13 - Exclusão de disciplinas
    • O sistema deve alertar o aluno caso o trancamento ou exclusão de uma disciplina comprometa a progressão ou organização da grade


Fase 2 - 2025-2

  • RF01: Modelar o Banco de Dados
  • RF01: Criar o Banco de Dados


Requisitos Não-Funcionais


  • RNF01 - Interface Amigável [Usabilidade]
    • O sistema deve possuir uma interface intuitiva e de fácil uso para estudantes sem conhecimento técnico.


  • RNF02 - Responsividade
    • A interface deve ser responsiva, permitindo o uso em diferentes dispositivos (computadores, tablets e smartphones).


  • RNF03 - Disponibilidade
    • O sistema deve ter uma disponibilidade de 99,5%, garantindo que os alunos possam acessar a qualquer momento


  • RNF04 - Auto-Recuperação
    • Deve possuir um mecanismo de recuperação automática em caso de falha.


  • RNF05 - Tempo de Resposta [Desempenho ]
    • O sistema deve processar a simulação da grade curricular em no máximo 2 segundos.


  • RNF06 - Atualização em Tempo Real [Desempenho]
    • A integração com o sistema deve ocorrer em tempo real, garantindo informações atualizadas sobre disciplinas e vagas Segurança


  • RNF07 - Legalmente dentro dos padrões
    • O sistema deve estar em conformidade com a legislação vigente sobre proteção de dados (LGPD).


  • RNF08 - Criptografia de Dados
    • Os dados dos usuários devem ser armazenados de forma criptografada.


  • RNF09 - Suporte para Atualizações [Distribuição]
    • Deve oferecer suporte para atualizações automáticas sem perda de dados.


  • RNF10 - Orientação a Objetos [Padrões]
    • O código deve ser feito totalmente orientado a objetos, sendo a linguagem de escolha C#, para maior compatibilidade com as demais ferramentas já utilizadas e para maior escalabilidade.


  • RNF11 - Sistema Operacional [Hardware e software]
    • O sistema deve ser compatível com servidores Linux e Windows.


Melhores Práticas


1) Uso de modelos Pydantic, garantindo padronização validação e conversão dos dados

  • class TimeSlot(BaseModel):
    start: str
    end: str

class DaySchedule(BaseModel):

    day: str
    available: bool
    timeSlots: List[TimeSlot]

class UploadedSubject(BaseModel):

    name: str
    schedule: str
    credits: int
    difficulty: int

class FormData(BaseModel):

    subjectCount: int
    preferenceStrategy: str
    prioritizeDependencies: bool
    includeSaturday: bool
    weeklySchedule: List[DaySchedule]
    additionalNotes: Optional[str] = ""
    uploadedSubjects: List[UploadedSubject]
    totalAvailableHours: float

2)Padrão de Nome Snake Case

def normalize(lst): async def submit_preferences(form_data: FormData): getCollegeGradeFromFile(subjects_list)

3)Documentação por modulo:

""" CHATGPT INTEGRATION MODULE

This module provides AI-powered subject advisory services using OpenAI's ChatGPT.

4) Separação de servidores, front e back rodam separados

5)Nomenclatura auto explicativa

const [showPassword, setShowPassword] = useState(false)
const [isLoading, setIsLoading] = useState(false)
const [error, setError] = useState("")
const [success, setSuccess] = useState("")

6) Tratamento de erros


catch (err) {
  if (err instanceof Error) {
    if (err.message.includes("401")) {
      setError("Invalid email or password.")
    } else if (err.message.includes("500")) {
      setError("Server error.")
    } else if (err.message.includes("fetch")) {
      setError("Unable to connect to server.")
    } else {
      setError(err.message || "An unexpected error occurred.")
    }
  }
}

Evolução do projeto


Item Data College Helper Realizado
1 14/11/2025 Documentar Investigação e Visão 100%
2 14/11/2025 Criar Diagramas Comp/Implantação 100%
3 14/11/2025 Definir Proposta de Projeto 100%
4 14/11/2025 Validar Visão do Usuário 100%
5 17/11/2025 Especificar RFs e RNFs - Fase 2 100%
6 17/11/2025 RF01: Modelar o BD 80%
7 01/12/2025 Melhores Práticas
8 01/12/2025 RF01: Modelar o BD
9 RF02: Criar o BD
10 Desenvolver 3o RF
11 Desenvolver 4o RF
12 Incrementar diferencial tecnológico