-
Notifications
You must be signed in to change notification settings - Fork 0
Criar model LegalAnalysis e migration para etapa de Análise Jurídica #63
Copy link
Copy link
Closed
Labels
BackendTarefas do BackendTarefas do Backend
Milestone
Description
Objetivo
Criar o model LegalAnalysis que armazena os dados da etapa de Análise Jurídica, incluindo pareceres, certidões, impedimentos e regularidade documental.
Contexto
A etapa de Análise Jurídica é de responsabilidade da ASJUR (Assessoria Jurídica). Nela são verificadas certidões negativas, regularidade fiscal, impedimentos legais e emitido parecer jurídico sobre a aptidão do beneficiário para receber recursos públicos.
Tarefas
Migration
- Criar migration
create_legal_analyses_table:
Schema::create('legal_analyses', function (Blueprint $table) {
$table->id();
$table->foreignId('registration_id')->unique()->constrained()->cascadeOnDelete();
// Campos a serem mapeados com base nas telas de UX
// Estrutura base:
// Certidões e regularidade
$table->boolean('certidao_federal_regular')->nullable();
$table->boolean('certidao_estadual_regular')->nullable();
$table->boolean('certidao_municipal_regular')->nullable();
$table->boolean('certidao_trabalhista_regular')->nullable();
$table->boolean('certidao_fgts_regular')->nullable();
// Impedimentos
$table->boolean('consta_ceis')->default(false); // Cadastro de Empresas Inidôneas
$table->boolean('consta_cnep')->default(false); // Cadastro Nacional de Empresas Punidas
$table->text('impedimentos_observacoes')->nullable();
// Parecer jurídico
$table->enum('parecer', ['favoravel', 'desfavoravel', 'pendente'])->nullable();
$table->text('parecer_texto')->nullable();
$table->foreignId('parecerista_user_id')->nullable()->constrained('users');
$table->date('data_parecer')->nullable();
// JSONB para documentos anexados
$table->jsonb('certidoes_data')->nullable(); // Armazena metadados das certidões
// Controle
$table->boolean('is_draft')->default(true);
$table->foreignId('responsible_user_id')->nullable()->constrained('users');
$table->timestamp('submitted_at')->nullable();
$table->timestamps();
$table->softDeletes();
$table->index(['registration_id', 'parecer']);
});Model
- Criar model
app/Models/LegalAnalysis.php - Adicionar trait
Auditable - Adicionar trait
SoftDeletes - Configurar
$fillable - Configurar
$casts:
protected $casts = [
'certidao_federal_regular' => 'boolean',
'certidao_estadual_regular' => 'boolean',
'certidao_municipal_regular' => 'boolean',
'certidao_trabalhista_regular' => 'boolean',
'certidao_fgts_regular' => 'boolean',
'consta_ceis' => 'boolean',
'consta_cnep' => 'boolean',
'data_parecer' => 'date',
'certidoes_data' => 'array',
'is_draft' => 'boolean',
'submitted_at' => 'datetime',
];Relacionamentos
-
registration()→belongsTo(Registration::class) -
responsibleUser()→belongsTo(User::class, 'responsible_user_id') -
parecerista()→belongsTo(User::class, 'parecerista_user_id')
Métodos de validação e negócio
-
isComplete(): bool→ verifica se análise foi concluída -
getMissingFields(): array→ campos faltantes -
hasImpedimentos(): bool→ retorna true se CEIS ou CNEP -
isRegular(): bool→ retorna true se todas certidões regulares -
canEmitParecer(): bool→ valida se pode emitir parecer
Atualizar Registration
- Adicionar relacionamento em
Registration:
public function legalAnalysis()
{
return $this->hasOne(LegalAnalysis::class);
}Factory e Seeder
- Criar
LegalAnalysisFactory - Configurar estados (favoravel, desfavoravel, com_impedimentos)
Estrutura do JSONB certidoes_data
{
"federal": {
"numero": "123456789",
"data_emissao": "2025-02-01",
"validade": "2025-08-01",
"arquivo_path": "certidoes/federal_123.pdf"
},
"estadual": {
"numero": "CE-987654",
"data_emissao": "2025-02-05",
"validade": "2025-08-05",
"arquivo_path": "certidoes/estadual_987.pdf"
}
}Critérios de Aceite
- Migration executada sem erros
- Model com relacionamentos funcionais
- Trait
Auditableconfigurado - Factory gera dados de parecer favorável e desfavorável
- Métodos de validação funcionam
- Teste passa:
$analysis = LegalAnalysis::factory()
->for($registration)
->state(['parecer' => 'favoravel'])
->create();
expect($analysis->isRegular())->toBeTrue();Dependências
- Migration de
registrationsprecisa existir - Aguardando telas de UX/UI para mapear campos exatos
Observações
- Campos de certidões são boolean para facilitar queries
- Parecer é enum para garantir consistência
- JSONB armazena metadados dos documentos anexados
---
## **Issue #3: Criar model Formalization (Formalização de Processos)**
### Título
Criar model Formalization e migration para etapa de Formalização
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
BackendTarefas do BackendTarefas do Backend
Type
Projects
Status
Done