Skip to content

Remoção de código legado: Information, Address antigo, API REST de perfil #254

@danielhe4rt

Description

@danielhe4rt

Parent

Parte da PRD #250 — Módulo Profile Fase 1.

Contexto

Com o módulo Profile implementado (#251), o Address polimórfico no lugar (#252), e as actions de domínio prontas (#253), o código legado do módulo Identity que tratava de "apresentação" não é mais necessário.

Esta issue faz a limpeza completa — remove todo o código que referencia os models antigos (Information, Address do Identity), a API REST de perfil, e os artefatos relacionados (DTOs, actions, controllers, rotas, testes).

Regra fundamental

Código removido por completo. Tabelas permanecem no banco. As tabelas user_information e user_address ficam como safety net. Nenhum DROP TABLE nesta issue.

O que NÃO remover

  • Tabela user_information (fica no banco)
  • Tabela user_address (fica no banco)
  • Migrations antigas (elas descrevem o histórico do schema)
  • Qualquer coisa do módulo profile novo

O que remover

No módulo Identity (app-modules/identity/)

Models e factories:

  • src/User/Models/Information.php
  • src/User/Models/Address.php
  • database/factories/InformationFactory.php
  • database/factories/AddressFactory.php

Actions e DTOs:

  • src/User/Actions/InformationUserAction.php
  • src/User/Actions/UpdateProfile.php
  • src/User/DTOs/UpdateProfileDTO.php
  • src/User/DTOs/UpsertInformationDTO.php

HTTP layer (API REST):

  • src/User/Http/Controllers/UsersController.php — métodos getProfile() e putProfile() (avaliar se o controller inteiro pode ser removido ou se getUsers()/getUser() ainda são usados)
  • src/User/Http/Requests/UpdateProfileRequest.php
  • src/User/Exceptions/ProfileException.php

Filament schemas:

  • src/Filament/Shared/Schemas/UserInformationForm.php

Rotas:

  • Em routes/user-routes.php: remover as rotas users.profile e users.profile.update (GET/PUT /api/users/profile/{value})
  • Avaliar se outras rotas de /api/users/ também são legado e devem sair

Testes:

  • tests/Feature/FindProfileTest.php
  • tests/Feature/UpdateProfileTest.php

No model User (src/User/Models/User.php):

  • Remover relação information() (retorna HasOne<Information>)
  • Remover relação address() antiga (será substituída pelo morphOne do Address polimórfico — ver Address polimórfico compartilhado #252)

Verificação global

Após a remoção, nenhum arquivo PHP no projeto deve:

  • Importar He4rt\Identity\User\Models\Information
  • Importar He4rt\Identity\User\Models\Address
  • Referenciar user_information como tabela (exceto migrations)
  • Referenciar as rotas users.profile ou users.profile.update

Cenários BDD

Cenário: Nenhum arquivo referencia Information
  Dado que o código legado foi removido
  Quando faço grep por "Information" nos arquivos PHP (exceto migrations e este teste)
  Então zero resultados para o model He4rt\Identity\User\Models\Information

Cenário: Nenhum arquivo referencia Address antigo
  Dado que o código legado foi removido
  Quando faço grep por "He4rt\Identity\User\Models\Address" nos arquivos PHP
  Então zero resultados

Cenário: API REST de perfil não responde
  Quando faço GET /api/users/profile/qualquer-valor
  Então recebo 404
  E a rota users.profile não existe

Cenário: API REST de update de perfil não responde
  Quando faço PUT /api/users/profile/qualquer-valor
  Então recebo 404
  E a rota users.profile.update não existe

Cenário: Tabelas antigas continuam no banco
  Dado que o código foi removido
  Quando verifico o schema do banco
  Então a tabela user_information existe
  E a tabela user_address existe

Cenário: User model não tem relação information()
  Dado que o código legado foi removido
  Quando instancio um User
  Então chamar $user->information() lança erro (método não existe)

Cenário: Testes existentes continuam passando
  Dado que o código legado foi removido
  Quando rodo a suite de testes completa
  Então todos os testes passam (exceto os removidos nesta issue)

Acceptance Criteria

  • Todos os arquivos listados na seção "O que remover" foram deletados
  • Relações information() e address() antiga removidas do User model
  • Relação address() nova (morphOne polimórfico) já está no User model (via Address polimórfico compartilhado #252)
  • Rotas REST de perfil removidas
  • Grep por imports legados retorna zero resultados
  • Tabelas user_information e user_address continuam existindo no banco
  • Nenhuma migration de DROP TABLE foi criada
  • Suite de testes completa passa
  • vendor/bin/pint --dirty --format agent passa sem erros

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    profileProfile moduleready-for-agentFully specified, ready for an AFK agentrefactorCode refactoring

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions