Linha 67: Linha 67:
= kk=
= kk=


{| class="wikitable"
{| class="wikitable"
|-
|-
! Item !! Data !! Atividades Room Match !! Realizado
! Item !! Data !! Atividades Room Match !! Realizado
|- 1
|- 1
|- 2 || || ||
| 1 || 14/11/2025 || Documentar tópico Investigação ||
|- 3
|- 2 || || ||
|- 4 || || ||
| 2 14/11/2025 Definir Proposta de Projeto
|- 5
|- 3
|- 6 || || ||
| 3 || 14/11/2025 || Validar Visão do Usuário ||
|- 7
|- 4 || || ||
|- 8 || || ||
| 4 14/11/2025 Especificar RFs e RNFs - Fase 2
|- 9
|- 5
| 1 || 14/11/2025 || Documentar tópico Investigação ||
| 5 || 17/11/2025 || Implementar visualização de detalhes ||
| 2 14/11/2025 Definir Proposta de Projeto
|- 6 || || ||
| 3 || 14/11/2025 || Validar Visão do Usuário ||
| 6 Implementar match
| 4 14/11/2025 Especificar RFs e RNFs - Fase 2
|- 7
| 5 || 17/11/2025 || Implementar visualização de detalhes ||
| 7 || || Desenvolver 3o RF ||
| 6 Implementar match
|- 8 || || ||
| 7 || || Desenvolver 3o RF ||
| 8 Desenvolver 4o RF
| 8 Desenvolver 4o RF
|- 9
| 9 || || Incrementar diferencial tecnológico ||
| 9 || || Incrementar diferencial tecnológico ||
|-
|-
|}
|}

Edição das 21h39min de 20 de novembro de 2025

Fase 2


Escopo


  • Desenvolver um sistema que facilite o encontro entre pessoas que estão à procura de um quarto para alugar e as que já possuem o quarto disponível para locação em seus imóveis
  • A proposta é criar uma plataforma digital (via web) que funcione como um matchmaking de moradia, similar ao funcionamento de apps de relacionamento, com base em critérios como localização, orçamento, perfil de convivência e preferências pessoais


Requisitos Funcionais


[RF001] Implementar visualização de detalhes (quarto e perfil)

[RF002] Implementar match


Requisitos Não-Funcionais


Melhores práticas


Single Responsibility Principle - Responsabilidade Única

A classe class UserRepository(BaseRepository) Possui métodos de responsabilidade única como mostrado abaixo:

    def get_user_by_id(self, user_id: int) -> Optional[User]:
        """Busca um usuário pelo ID."""
        stmt = select(User).where(User.id == user_id)
        result = self.execute_stmt(stmt)
        return result.scalar_one_or_none()

Essa função tem uma única responsabilidade que é obter o usuário do repositório não aplicando sobre o usuário nenhum tipo de regra de negócio ou modificação.


Open/Closed Principle - Aberto para Extensão, Fechado para Modificação

def soma(a, b):
    return a + b

Liskov Substitution Principle - Substituição de Liskov

def soma(a, b):
    return a + b

Interface Segregation Principle - Segregação de Interfaces

def soma(a, b):
    return a + b


Dependency Inversion Principle - Inversão de Dependência

def soma(a, b):
    return a + b

kk

Item Data Atividades Room Match Realizado
1 14/11/2025 Documentar tópico Investigação
2 14/11/2025 Definir Proposta de Projeto
3 14/11/2025 Validar Visão do Usuário
4 14/11/2025 Especificar RFs e RNFs - Fase 2
5 17/11/2025 Implementar visualização de detalhes
6 Implementar match
7 Desenvolver 3o RF
8 Desenvolver 4o RF
9 Incrementar diferencial tecnológico