Created
June 14, 2024 12:03
-
-
Save renatocron/444ded8be1efebd54d8c088eb7a07260 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
generator client { | |
provider = "prisma-client-js" | |
previewFeatures = ["views", "relationJoins"] | |
} | |
datasource db { | |
provider = "postgresql" | |
url = env("DATABASE_URL") | |
} | |
model Pessoa { | |
id Int @id @default(autoincrement()) | |
email String @unique | |
senha String | |
nome_exibicao String | |
nome_completo String | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int? | |
qtde_senha_invalida Int @default(0) | |
senha_atualizada_em DateTime? @default(now()) @db.Timestamptz(6) | |
senha_bloqueada Boolean @default(false) | |
senha_bloqueada_em DateTime? @default(now()) @db.Timestamptz(6) | |
desativado Boolean @default(false) | |
desativado_em DateTime? | |
desativado_por Int? | |
desativado_motivo String? | |
pessoa_fisica_id Int? | |
atualizador Pessoa? @relation("AtualizadorPessoas", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("CriadorPessoas", fields: [criado_por], references: [id]) | |
desativador Pessoa? @relation("DesativadorPessoas", fields: [desativado_por], references: [id]) | |
pessoa_fisica PessoaFisica? @relation(fields: [pessoa_fisica_id], references: [id]) | |
PessoasQueAtualizei Pessoa[] @relation("AtualizadorPessoas") | |
PessoasQueCriei Pessoa[] @relation("CriadorPessoas") | |
PessoasQueDesativei Pessoa[] @relation("DesativadorPessoas") | |
PessoaPerfil PessoaPerfil[] | |
PessoaSessoesAtivas PessoaSessaoAtiva[] | |
OrgaoQueCriei Orgao[] @relation("Criador") | |
OrgaoQueRemovi Orgao[] @relation("Removedor") | |
OrgaoQueAtualizei Orgao[] @relation("Atualizador") | |
TipoOrgaoQueCriei TipoOrgao[] @relation("Criador") | |
TipoOrgaoQueRemovi TipoOrgao[] @relation("Removedor") | |
TipoOrgaoQueAtualizei TipoOrgao[] @relation("Atualizador") | |
PerfilAcessoQueCriei PerfilAcesso[] @relation("Criador") | |
PerfilAcessoQueRemovi PerfilAcesso[] @relation("Removedor") | |
PerfilAcessoQueAtualizei PerfilAcesso[] @relation("Atualizador") | |
OdsQueCriei Ods[] @relation("Criador") | |
OdsQueRemovi Ods[] @relation("Removedor") | |
OdsQueAtualizei Ods[] @relation("Atualizador") | |
SubTemaQueCriei SubTema[] @relation("Criador") | |
SubTemaQueRemovi SubTema[] @relation("Removedor") | |
SubTemaQueAtualizei SubTema[] @relation("Atualizador") | |
processoSeiQueCriei ProjetoRegistroSei[] @relation("Criador") | |
processoSeiQueRemovi ProjetoRegistroSei[] @relation("Removedor") | |
processoSeiQueAtualizei ProjetoRegistroSei[] @relation("Atualizador") | |
EixoQueCriei MacroTema[] @relation("Criador") | |
EixoQueRemovi MacroTema[] @relation("Removedor") | |
EixoQueAtualizei MacroTema[] @relation("Atualizador") | |
PDMQueCriei Pdm[] @relation("Criador") | |
PDMQueDesativei Pdm[] @relation("Desativador") | |
PDMQueAtualizei Pdm[] @relation("Atualizador") | |
PDMQueRemovi Pdm[] @relation("Removedor") | |
FormulaCompostaQueCriei FormulaComposta[] @relation("Criador") | |
FormulaCompostaQueDesativei FormulaComposta[] @relation("Removedor") | |
FormulaCompostaQueAtualizei FormulaComposta[] @relation("Atualizador") | |
OEQueCriei Tema[] @relation("Criador") | |
OEQueDesativei Tema[] @relation("Removedor") | |
OEQueAtualizei Tema[] @relation("Atualizador") | |
TagQueCriei Tag[] @relation("Criador") | |
TagQueDesativei Tag[] @relation("Removedor") | |
TagQueAtualizei Tag[] @relation("Atualizador") | |
FRQueCriei FonteRecurso[] @relation("Criador") | |
FRQueDesativei FonteRecurso[] @relation("Removedor") | |
FRQueAtualizei FonteRecurso[] @relation("Atualizador") | |
TipoDocQueCriei TipoDocumento[] @relation("Criador") | |
TipoDocQueDesativei TipoDocumento[] @relation("Removedor") | |
TipoDocQueAtualizei TipoDocumento[] @relation("Atualizador") | |
RegiaoQueCriei Regiao[] @relation("Criador") | |
RegiaoQueDesativei Regiao[] @relation("Removedor") | |
RegiaoQueAtualizei Regiao[] @relation("Atualizador") | |
ArquivoQueCriei Arquivo[] @relation("Criador") | |
ArquivosQueAtualizei Arquivo[] @relation("Atualizador") | |
ArquivoDocQueCriei ArquivoDocumento[] @relation("Criador") | |
ArquivoDocQueDesativei ArquivoDocumento[] @relation("Removedor") | |
ArquivoDocQueAtualizei ArquivoDocumento[] @relation("Atualizador") | |
PPArquivoDocQueCriei ProjetoDocumento[] @relation("Criador") | |
PPArquivoDocQueDesativei ProjetoDocumento[] @relation("Removedor") | |
PPArquivoDocQueAtualizei ProjetoDocumento[] @relation("Atualizador") | |
MetaQueCriei Meta[] @relation("Criador") | |
MetaQueDesativei Meta[] @relation("Desativador") | |
MetaQueAtualizei Meta[] @relation("Atualizador") | |
IndicadorQueCriei Indicador[] @relation("Criador") | |
IndicadorQueRemovi Indicador[] @relation("Removedor") | |
IndicadorQueAtualizei Indicador[] @relation("Atualizador") | |
UnidadeQueCriei UnidadeMedida[] @relation("Criador") | |
UnidadeQueRemovi UnidadeMedida[] @relation("Removedor") | |
UnidadeQueAtualizei UnidadeMedida[] @relation("Atualizador") | |
IndicadorVariavel IndicadorVariavel[] @relation("Desativador") | |
IniciativasQueCriei Iniciativa[] @relation("Criador") | |
IniciativasQueRemovi Iniciativa[] @relation("Removedor") | |
IniciativasQueAtualizei Iniciativa[] @relation("Atualizador") | |
IniciativasQueSouResp IniciativaResponsavel[] @relation("IniciativaPessoaResp") | |
AtividadesQueCriei Atividade[] @relation("Criador") | |
AtividadesQueRemovi Atividade[] @relation("Removedor") | |
AtividadesQueAtualizei Atividade[] @relation("Atualizador") | |
AtividadesQueSouResp AtividadeResponsavel[] @relation("AtividadePessoaResp") | |
VariavelResponsavel VariavelResponsavel[] | |
AtualizouSerieVariavel SerieVariavel[] @relation("Atualizador") | |
ConferiuSerieVariavel SerieVariavel[] @relation("Conferidor") | |
CronogramaOrgao CronogramaOrgao[] | |
CronogramasQueCriei Cronograma[] @relation("Criador") | |
CronogramasQueRemovi Cronograma[] @relation("Removedor") | |
CronogramasQueAtualizei Cronograma[] @relation("Atualizador") | |
PortfolioQueCriei Portfolio[] @relation("Criador") | |
PortfolioQueRemovi Portfolio[] @relation("Removedor") | |
PortfolioQueAtualizei Portfolio[] @relation("Atualizador") | |
EtapasQueCriei Etapa[] @relation("Criador") | |
EtapasQueRemovi Etapa[] @relation("Removedor") | |
EtapasQueAtualizei Etapa[] @relation("Atualizador") | |
PlanoAcaoMonitoramentoQueCriei PlanoAcaoMonitoramento[] @relation("Criador") | |
PlanoAcaoMonitoramentoQueAtualizei PlanoAcaoMonitoramento[] @relation("Atualizador") | |
PlanoAcaoMonitoramentoQueRemovi PlanoAcaoMonitoramento[] @relation("Removedor") | |
TiposDeTransferenciaQueCriei TransferenciaTipo[] @relation("Criador") | |
TiposDeTransferenciaQueAtualizei TransferenciaTipo[] @relation("Atualizador") | |
TiposDeTransferenciaQueRemovi TransferenciaTipo[] @relation("Removedor") | |
WorkflowsQueCriei Workflow[] @relation("Criador") | |
WorkflowsQueAtualizei Workflow[] @relation("Atualizador") | |
WorkflowsQueRemovi Workflow[] @relation("Removedor") | |
EtapasDeWorkflowsQueCriei WorkflowEtapa[] @relation("Criador") | |
EtapasDeWorkflowsQueAtualizei WorkflowEtapa[] @relation("Atualizador") | |
EtapasDeWorkflowsQueRemovi WorkflowEtapa[] @relation("Removedor") | |
FasesDeWorkflowsQueCriei WorkflowFase[] @relation("Criador") | |
FasesDeWorkflowsQueAtualizei WorkflowFase[] @relation("Atualizador") | |
FasesDeWorkflowsQueRemovi WorkflowFase[] @relation("Removedor") | |
SituacoesDeWorkflowsQueCriei WorkflowSituacao[] @relation("Criador") | |
SituacoesDeWorkflowsQueAtualizei WorkflowSituacao[] @relation("Atualizador") | |
SituacoesDeWorkflowsQueRemovi WorkflowSituacao[] @relation("Removedor") | |
PaineisQueCriei Painel[] @relation("Criador") | |
PaineisQueRemovi Painel[] @relation("Removedor") | |
PaineisQueAtualizei Painel[] @relation("Atualizador") | |
PessoaAcessoPdm PessoaAcessoPdm[] | |
GruposDePaineisQueCriei GrupoPainel[] @relation("Criador") | |
GruposDePaineisQueRemovi GrupoPainel[] @relation("Removedor") | |
GruposDePaineisQueParticipo PessoaGrupoPainel[] | |
VariavelCicloFisicoQualitativoCriador VariavelCicloFisicoQualitativo[] @relation("criador") | |
VariavelCicloFisicoQualitativoRemovedor VariavelCicloFisicoQualitativo[] @relation("removedor") | |
VariavelCicloFisicoDocumentoCriador VariavelCicloFisicoDocumento[] @relation("criador") | |
VariavelCicloFisicoDocumentoRemovedor VariavelCicloFisicoDocumento[] @relation("removedor") | |
PedidoComplementacaoCriador PedidoComplementacao[] @relation("criador") | |
PedidoComplementacaoAtendeu PedidoComplementacao[] @relation("atendeu") | |
PedidoComplementacaoRemovedor PedidoComplementacao[] @relation("removedor") | |
MetaCicloFisicoAnaliseCriador MetaCicloFisicoAnalise[] @relation("criador") | |
MetaCicloFisicoAnaliseRemovedor MetaCicloFisicoAnalise[] @relation("removedor") | |
MetaCicloFisicoFechamentoCriador MetaCicloFisicoFechamento[] @relation("criador") | |
MetaCicloFisicoFechamentoRemovedor MetaCicloFisicoFechamento[] @relation("removedor") | |
FormulaCompostaCicloFisicoQualitativoCriador FormulaCompostaCicloFisicoQualitativo[] @relation("criador") | |
FormulaCompostaCicloFisicoQualitativoRemovedor FormulaCompostaCicloFisicoQualitativo[] @relation("removedor") | |
FormulaCompostaCicloFisicoDocumentoCriador FormulaCompostaCicloFisicoDocumento[] @relation("criador") | |
FormulaCompostaCicloFisicoDocumentoRemovedor FormulaCompostaCicloFisicoDocumento[] @relation("removedor") | |
MetaCicloFisicoRiscoCriador MetaCicloFisicoRisco[] @relation("criador") | |
MetaCicloFisicoRiscoRemovedor MetaCicloFisicoRisco[] @relation("removedor") | |
MetaCicloFisicoAnaliseDocumentoCriador MetaCicloFisicoAnaliseDocumento[] @relation("criador") | |
MetaCicloFisicoAnaliseDocumentoRemovedor MetaCicloFisicoAnaliseDocumento[] @relation("removedor") | |
EtapaResponsavel EtapaResponsavel[] | |
MetaOrcamentoCriados OrcamentoPrevisto[] @relation("criador") | |
MetaOrcamentoRemovidos OrcamentoPrevisto[] @relation("removedor") | |
MetaOrcamentoAtualizados OrcamentoPrevisto[] @relation("atualizador") | |
OrcamentoPlanejadoCriados OrcamentoPlanejado[] @relation("criador") | |
OrcamentoPlanejadoRemovidos OrcamentoPlanejado[] @relation("removedor") | |
OrcamentoRealizadoCriados OrcamentoRealizado[] @relation("criador") | |
OrcamentoRealizadoRemovidos OrcamentoRealizado[] @relation("removedor") | |
OrcamentoRealizadoItem OrcamentoRealizadoItem[] @relation("sobrescritor") | |
RelatorioQueFiz Relatorio[] @relation("criador") | |
RelatorioQueRemovi Relatorio[] @relation("removedor") | |
ProjetoLicoesAprendidasQCriei ProjetoLicaoAprendida[] @relation("criador") | |
ProjetoLicoesAprendidasQRemovi ProjetoLicaoAprendida[] @relation("removedor") | |
AditamentosQueCriei DistribuicaoRecursoAditamento[] | |
ppResponsavel Projeto[] @relation("ppResponsavel") | |
ppQueCriei Projeto[] @relation("criador") | |
ppSelecionado Projeto[] @relation("ppSelecionado") | |
ppEm_planejamento Projeto[] @relation("ppEm_planejamento") | |
ppArquivado Projeto[] @relation("ppArquivado") | |
ppSuspenso Projeto[] @relation("ppSuspenso") | |
ppRestaurou Projeto[] @relation("ppRestaurou") | |
ppValidado Projeto[] @relation("ppValidado") | |
ppFinalizouPlan Projeto[] @relation("ppFinalizouPlan") | |
ppCancelou Projeto[] @relation("ppCancelou") | |
ppReiniciou Projeto[] @relation("ppReiniciou") | |
ppIniciou Projeto[] @relation("ppIniciou") | |
ppTerminou Projeto[] @relation("ppTerminou") | |
RiscosQueCriei ProjetoRisco[] @relation("Criador") | |
RiscosQueRemovi ProjetoRisco[] @relation("Removedor") | |
RiscosQueEditei ProjetoRisco[] @relation("Atualizador") | |
PlanosDeAcaoQueCriei PlanoAcao[] @relation("Criador") | |
PlanosDeAcaoQueRemovi PlanoAcao[] @relation("Removedor") | |
PlanosDeAcaoQueEditei PlanoAcao[] @relation("Atualizador") | |
EncaminhamentosQueCriei ProjetoAcompanhamentoItem[] @relation("Criador") | |
EncaminhamentosQueRemovi ProjetoAcompanhamentoItem[] @relation("Removedor") | |
EncaminhamentosQueEditei ProjetoAcompanhamentoItem[] @relation("Atualizador") | |
ProjetoEquipeQueEstou ProjetoEquipe[] @relation("fk") | |
ProjetoEquipeQueRemovi ProjetoEquipe[] @relation("Removedor") | |
ProjetoEquipeQueCriei ProjetoEquipe[] @relation("Criador") | |
OrcamentoPrevistoZeradoQCriei OrcamentoPrevistoZerado[] @relation("Criador") | |
OrcamentoPrevistoZeradoQRemovi OrcamentoPrevistoZerado[] @relation("Removedor") | |
ImportacaoLog ImportacaoOrcamento[] | |
IndicadorFormulaComposta IndicadorFormulaComposta[] @relation("Desativador") | |
TiposAcompanhamentoQueCriei AcompanhamentoTipo[] @relation("Criador") | |
TiposAcompanhamentoQueAtualizei AcompanhamentoTipo[] @relation("Atualizador") | |
TiposAcompanhamentoQueRemovi AcompanhamentoTipo[] @relation("Removedor") | |
PessoaAcessoPdmValido PessoaAcessoPdmValido? | |
MetasQueSouResp view_meta_pessoa_responsavel[] | |
MetasQueSouRespNaCp view_meta_pessoa_responsavel_na_cp[] | |
MetasQueSouRespOuNao MetaResponsavel[] @relation("MetaPessoaResp") | |
PdmOrcamentoRealizadoConfig PdmOrcamentoRealizadoConfig[] | |
view_meta_responsavel_orcamento view_meta_responsavel_orcamento[] | |
variavel_suspensa_log VariavelSuspensaoLog[] | |
PessoaSessao PessoaSessao[] | |
PessoaAtividadeLog PessoaAtividadeLog[] | |
GrupoPortfolioQueCriei GrupoPortfolio[] @relation("Criador") | |
GrupoPortfolioQueAtualizei GrupoPortfolio[] @relation("Atualizador") | |
GrupoPortfoliQueRemovi GrupoPortfolio[] @relation("Removedor") | |
ProjetoGrupoPortfolioQueCriei ProjetoGrupoPortfolio[] @relation("Criador") | |
ProjetoGrupoPortfolioQueRemovi ProjetoGrupoPortfolio[] @relation("Removedor") | |
PortfolioGrupoPortfolioQueCriei PortfolioGrupoPortfolio[] @relation("Criador") | |
PortfolioGrupoPortfolioQueRemovi PortfolioGrupoPortfolio[] @relation("Removedor") | |
GrupoPortfolioPessoa GrupoPortfolioPessoa[] | |
projetosCompartilhadosEmPortfolioQueCriei PortfolioProjetoCompartilhado[] @relation("Criador") | |
projetosCompartilhadosEmPortfolioQueRemovi PortfolioProjetoCompartilhado[] @relation("Removedor") | |
projetosCompartilhadosEmPortfolioQueAtualizei PortfolioProjetoCompartilhado[] @relation("Atualizador") | |
partidosQueCriei Partido[] @relation("Criador") | |
partidosQueAtualizei Partido[] @relation("Atualizador") | |
partidosQueRemovi Partido[] @relation("Removedor") | |
bancadasQueCriei Bancada[] @relation("Criador") | |
bancadasQueAtualizei Bancada[] @relation("Atualizador") | |
bancadasQueRemovi Bancada[] @relation("Removedor") | |
parlamentaresQueCriei Parlamentar[] @relation("Criador") | |
parlamentaresQueAtualizei Parlamentar[] @relation("Atualizador") | |
parlamentaresQueRemovi Parlamentar[] @relation("Removedor") | |
mandatosQueCriei ParlamentarMandato[] @relation("Criador") | |
mandatosQueAtualizei ParlamentarMandato[] @relation("Atualizador") | |
mandatosQueRemovi ParlamentarMandato[] @relation("Removedor") | |
equipeParlamentarQueCriei ParlamentarEquipe[] @relation("Criador") | |
equipeParlamentarQueAtualizei ParlamentarEquipe[] @relation("Atualizador") | |
equipeParlamentarQueRemovi ParlamentarEquipe[] @relation("Removedor") | |
eleicaoComparecimentoQueCriei EleicaoComparecimento[] @relation("Criador") | |
eleicaoComparecimentoQueAtualizei EleicaoComparecimento[] @relation("Atualizador") | |
eleicaoComparecimentoQueRemovi EleicaoComparecimento[] @relation("Removedor") | |
mandatoRepresentatividadesQueCriei MandatoRepresentatividade[] @relation("Criador") | |
mandatoRepresentatividadesQueAtualizei MandatoRepresentatividade[] @relation("Atualizador") | |
mandatoRepresentatividadesQueRemovi MandatoRepresentatividade[] @relation("Removedor") | |
transferenciasQueCriei Transferencia[] @relation("Criador") | |
transferenciasQueAtualizei Transferencia[] @relation("Atualizador") | |
transferenciasQueRemovi Transferencia[] @relation("Removedor") | |
transferenciaAnexoQueCriei TransferenciaAnexo[] @relation("Criador") | |
transferenciaAnexoQueAtualizei TransferenciaAnexo[] @relation("Atualizador") | |
transferenciaAnexoQueRemovi TransferenciaAnexo[] @relation("Removedor") | |
distribuicoesRecursoQueCriei DistribuicaoRecurso[] @relation("Criador") | |
distribuicoesRecursoQueAtualizei DistribuicaoRecurso[] @relation("Atualizador") | |
distribuicoesRecursoQueRemovi DistribuicaoRecurso[] @relation("Removedor") | |
distribuicoesRecursoSEIQueCriei DistribuicaoRecursoSei[] @relation("Criador") | |
distribuicoesRecursoSEIQueAtualizei DistribuicaoRecursoSei[] @relation("Atualizador") | |
distribuicoesRecursoSEIQueRemovi DistribuicaoRecursoSei[] @relation("Removedor") | |
fluxosWorkflowQueCriei Fluxo[] @relation("Criador") | |
fluxosWorkflowQueAtualizei Fluxo[] @relation("Atualizador") | |
fluxosWorkflowQueRemovi Fluxo[] @relation("Removedor") | |
fasesFluxoWorkflowQueCriei FluxoFase[] @relation("Criador") | |
fasesFluxoWorkflowQueAtualizei FluxoFase[] @relation("Atualizador") | |
fasesFluxoWorkflowQueRemovi FluxoFase[] @relation("Removedor") | |
tarefasFluxoWorkflowQueCriei FluxoTarefa[] @relation("Criador") | |
tarefasFluxoWorkflowQueAtualizei FluxoTarefa[] @relation("Atualizador") | |
tarefasFluxoWorkflowQueRemovi FluxoTarefa[] @relation("Removedor") | |
tarefasWorkflowQueCriei WorkflowTarefa[] @relation("Criador") | |
tarefasWorkflowQueAtualizei WorkflowTarefa[] @relation("Atualizador") | |
tarefasWorkflowQueRemovi WorkflowTarefa[] @relation("Removedor") | |
transferenciaAndamentoQueCriei TransferenciaAndamento[] @relation("Criador") | |
transferenciaAndamentoQueAtualizei TransferenciaAndamento[] @relation("Atualizador") | |
transferenciaAndamentoQueRemovi TransferenciaAndamento[] @relation("Removedor") | |
transferenciaAndamentoQueSouResponsavel TransferenciaAndamento[] | |
transferenciaAndamentoTarefaQueCriei TransferenciaAndamentoTarefa[] @relation("Criador") | |
transferenciaAndamentoTarefaQueAtualizei TransferenciaAndamentoTarefa[] @relation("Atualizador") | |
transferenciaAndamentoTarefaQueRemovi TransferenciaAndamentoTarefa[] @relation("Removedor") | |
task_queue task_queue[] | |
GeoEnderecoReferenciaqQueCriei GeoLocalizacaoReferencia[] @relation("criador") | |
GeoEnderecoReferenciaqQueRemovid GeoLocalizacaoReferencia[] @relation("removedor") | |
GrupoPainelExternoQueCriei GrupoPainelExterno[] @relation("Criador") | |
GrupoPainelExternoQueAtualizei GrupoPainelExterno[] @relation("Atualizador") | |
GrupoPainelExternoQueRemovi GrupoPainelExterno[] @relation("Removedor") | |
GrupoPainelExternoPessoa GrupoPainelExternoPessoa[] | |
PainelExternoGrupoPainelExternoQueRemovi PainelExternoGrupoPainelExterno[] @relation("Removedor") | |
PainelExternoGrupoPainelExternoQueCriei PainelExternoGrupoPainelExterno[] @relation("Criador") | |
PainelExternoQueCriei PainelExterno[] @relation("Criador") | |
PainelExternoQueAtualizei PainelExterno[] @relation("Atualizador") | |
PainelExternoQueRemovi PainelExterno[] @relation("Removedor") | |
LogGenerico LogGenerico[] | |
TarefaCronogramaQCriei TarefaCronograma[] @relation("criador") | |
TarefaCronogramaQRemovi TarefaCronograma[] @relation("removedor") | |
ProjetoEtapaQCriei ProjetoEtapa[] @relation("Criador") | |
ProjetoEtapaQRemovi ProjetoEtapa[] @relation("Removedor") | |
ProjetoEtapaQAtualizei ProjetoEtapa[] @relation("Atualizador") | |
Nota Nota[] @relation("Resp") | |
NotaEnderecamentoQSouEnderecado NotaEnderecamento[] @relation("Enderecado") | |
NotaEnderecamentoQCriei NotaEnderecamento[] @relation("Criador") | |
NotaEnderecamentoQRemovi NotaEnderecamento[] @relation("Removedor") | |
NotaEnderecamentoRespostaQCriei NotaEnderecamentoResposta[] @relation("Criador") | |
NotaEnderecamentoRespostaQRemovi NotaEnderecamentoResposta[] @relation("Removedor") | |
NotaQCriei Nota[] @relation("Criador") | |
NotaQRemovi Nota[] @relation("Removedor") | |
BlocoNotaQCriei BlocoNota[] @relation("Criador") | |
BlocoNotaQRemovi BlocoNota[] @relation("Removedor") | |
BlocoNotaQAtualizei BlocoNota[] @relation("Atualizador") | |
VariavelCategoricaQCriei VariavelCategorica[] @relation("Criador") | |
VariavelCategoricaQRemovi VariavelCategorica[] @relation("Removedor") | |
VariavelCategoricaQAtualizei VariavelCategorica[] @relation("Atualizador") | |
VariavelCategoricaValorQCriei VariavelCategoricaValor[] @relation("Criador") | |
VariavelCategoricaValorQRemovi VariavelCategoricaValor[] @relation("Removedor") | |
VariavelCategoricaValorQAtualizei VariavelCategoricaValor[] @relation("Atualizador") | |
GruposTematicosQueCriei GrupoTematico[] @relation("Criador") | |
GruposTematicosQueRemovi GrupoTematico[] @relation("Removedor") | |
GruposTematicosQueAtualizei GrupoTematico[] @relation("Atualizador") | |
TipoIntervencaoQueCriei TipoIntervencao[] @relation("Criador") | |
TipoIntervencaoQueRemovi TipoIntervencao[] @relation("Removedor") | |
TipoIntervencaoQueAtualizei TipoIntervencao[] @relation("Atualizador") | |
EquipamentosQueCriei Equipamento[] @relation("Criador") | |
EquipamentosQueRemovi Equipamento[] @relation("Removedor") | |
EquipamentosQueAtualizei Equipamento[] @relation("Atualizador") | |
StatusesDistribuicaoQueCriei TransferenciaTipoDistribuicaoStatus[] @relation("Criador") | |
StatusesDistribuicaoQueRemovi TransferenciaTipoDistribuicaoStatus[] @relation("Removedor") | |
StatusesDistribuicaoQueAtualizei TransferenciaTipoDistribuicaoStatus[] @relation("Atualizador") | |
view_atividade_pessoa_responsavel view_atividade_pessoa_responsavel[] | |
view_iniciativa_pessoa_responsavel view_iniciativa_pessoa_responsavel[] | |
ViewNotaComOrdemQCriei ViewNotas[] @relation("Criador") | |
ViewNotaComOrdemQRemovi ViewNotas[] @relation("Removedor") | |
ViewNotaComOrdemQSouResp ViewNotas[] @relation("Resp") | |
PdmPerfil PdmPerfil[] @relation("fk") | |
PdmPerfilQueDesativei PdmPerfil[] @relation("Removedor") | |
PdmPerfilQueCriei PdmPerfil[] @relation("Criador") | |
ProjetoRegiaoQCriei ProjetoRegiao[] @relation("Criador") | |
ProjetoRegiaoQAtualizei ProjetoRegiao[] @relation("Atualizador") | |
ProjetoRegiaoQRemovi ProjetoRegiao[] @relation("Removedor") | |
@@index([email]) | |
@@map("pessoa") | |
} | |
model LogGenerico { | |
id Int @id @default(autoincrement()) | |
contexto String | |
ip String @db.Inet | |
log String | |
pessoa_sessao_id Int? | |
pessoa_id Int? | |
pessoa Pessoa? @relation(fields: [pessoa_id], references: [id]) | |
pessoa_sessao PessoaSessao? @relation(fields: [pessoa_sessao_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
@@map("log_generico") | |
} | |
model PrivilegioModulo { | |
id Int @id @default(autoincrement()) | |
codigo String @unique | |
descricao String | |
privilegio Privilegio[] | |
modulo_sistema ModuloSistema @default(SMAE) | |
@@map("privilegio_modulo") | |
} | |
model Orgao { | |
id Int @id @default(autoincrement()) | |
sigla String @default("-") | |
descricao String | |
tipo_orgao_id Int | |
tipo_orgao TipoOrgao @relation(fields: [tipo_orgao_id], references: [id]) | |
pessoa_fisica PessoaFisica[] | |
cnpj String? | |
email String? | |
secretario_responsavel String? | |
oficial Boolean @default(false) | |
nivel Int @default(1) | |
parente_id Int? | |
OrgaoAcima Orgao? @relation("Parente", fields: [parente_id], references: [id]) | |
OrgaosAbaixo Orgao[] @relation("Parente") | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
meta_orgao MetaOrgao[] | |
meta_responsavel MetaResponsavel[] | |
Variavel Variavel[] | |
iniciativa_orgao IniciativaOrgao[] | |
iniciativa_responsavel IniciativaResponsavel[] | |
atividade_orgao AtividadeOrgao[] | |
atividade_responsavel AtividadeResponsavel[] | |
CronogramaOrgao CronogramaOrgao[] | |
tarefas Tarefa[] | |
PlanoAcao PlanoAcao[] | |
projetos_participando ProjetoOrgaoParticipante[] | |
PortifolioOrgao PortfolioOrgao[] | |
orgao_responsavel Projeto[] @relation("orgao_responsavel") | |
orgao_origem Projeto[] @relation("orgao_origem") | |
orgao_executor Projeto[] @relation("orgao_executor") | |
projetos_geridos Projeto[] @relation("orgao_gestor") | |
GrupoPortfolio GrupoPortfolio[] | |
GrupoPortfolioPessoa GrupoPortfolioPessoa[] | |
ProjetoEquipe ProjetoEquipe[] | |
GrupoPainelExterno GrupoPainelExterno[] | |
GrupoPainelExternoPessoa GrupoPainelExternoPessoa[] | |
TransferenciasOrgao Transferencia[] @relation("orgao_concedente") | |
TransferenciasSecretaria Transferencia[] @relation("secretaria_concedente") | |
distribuicao_recursos DistribuicaoRecurso[] | |
Nota Nota[] | |
NotaEnderecamento NotaEnderecamento[] | |
transferenciaAndamento TransferenciaAndamento[] | |
transferenciaAndamentoTarefa TransferenciaAndamentoTarefa[] | |
PdmOrcamentoRealizadoConfig PdmOrcamentoRealizadoConfig[] | |
ViewNotaComOrdem ViewNotas[] | |
PdmPerfil PdmPerfil[] | |
Pdm Pdm[] | |
@@map("orgao") | |
} | |
model PerfilAcesso { | |
id Int @id @default(autoincrement()) | |
nome String | |
descricao String? | |
modulos_sistemas ModuloSistema[] @default([SMAE]) | |
autogerenciavel Boolean @default(true) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
perfil_privilegio PerfilPrivilegio[] | |
pessoa_perfil PessoaPerfil[] | |
@@map("perfil_acesso") | |
} | |
model PerfilPrivilegio { | |
id Int @id @default(autoincrement()) | |
perfil_acesso_id Int | |
privilegio_id Int | |
perfil_acesso PerfilAcesso @relation(fields: [perfil_acesso_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
privilegio Privilegio @relation(fields: [privilegio_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
@@unique([perfil_acesso_id, privilegio_id]) | |
@@map("perfil_privilegio") | |
} | |
model PessoaFisica { | |
id Int @id @default(autoincrement()) | |
cargo String? | |
lotacao String? | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
pessoa Pessoa[] | |
registro_funcionario String? | |
cpf String? | |
@@map("pessoa_fisica") | |
} | |
model PessoaPerfil { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
perfil_acesso_id Int | |
perfil_acesso PerfilAcesso @relation(fields: [perfil_acesso_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
@@index([pessoa_id]) | |
@@map("pessoa_perfil") | |
} | |
model PessoaSessaoAtiva { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
pessoa_sessao PessoaSessao @relation(fields: [id], references: [id]) | |
@@map("pessoa_sessao_ativa") | |
} | |
model Privilegio { | |
id Int @id @default(autoincrement()) | |
nome String | |
codigo String @unique | |
modulo_id Int | |
modulo PrivilegioModulo @relation(fields: [modulo_id], references: [id]) | |
perfil_privilegio PerfilPrivilegio[] | |
@@map("privilegio") | |
} | |
model TipoOrgao { | |
id Int @id @default(autoincrement()) | |
descricao String | |
orgao Orgao[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("tipo_orgao") | |
} | |
model EmaildbConfig { | |
id Int @id @default(autoincrement()) | |
from String | |
template_resolver_class String @db.VarChar(60) | |
template_resolver_config Json @default("{}") @db.Json | |
email_transporter_class String @db.VarChar(60) | |
email_transporter_config Json @default("{}") @db.Json | |
delete_after Unsupported("interval") @default(dbgenerated("'10 years'::interval")) | |
EmaildbQueue EmaildbQueue[] | |
@@map("emaildb_config") | |
} | |
model EmaildbQueue { | |
id String @id @db.Uuid | |
config_id Int | |
created_at DateTime @default(now()) @db.Timestamp(6) | |
template String | |
to String | |
subject String | |
variables Json @db.Json | |
sent Boolean? | |
updated_at DateTime? @db.Timestamp(6) | |
visible_after DateTime? @db.Timestamp(6) | |
errmsg String? | |
emaildb_config EmaildbConfig @relation(fields: [config_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
AvisoEmailDisparos AvisoEmailDisparos[] | |
@@map("emaildb_queue") | |
} | |
model Ods { | |
id Int @id @default(autoincrement()) | |
numero Int | |
titulo String | |
descricao String | |
eh_status_pdm Boolean @default(false) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Tag Tag[] | |
@@map("ods") | |
} | |
enum TipoPdm { | |
PDM | |
PS | |
} | |
model Pdm { | |
id Int @id @default(autoincrement()) | |
nome String | |
descricao String? | |
data_inicio DateTime? @db.Date() | |
data_fim DateTime? @db.Date() | |
data_publicacao DateTime? @db.Date() | |
periodo_do_ciclo_participativo_inicio DateTime? @db.Date() | |
periodo_do_ciclo_participativo_fim DateTime? @db.Date() | |
ativo Boolean @default(false) | |
prefeito String | |
equipe_tecnica String? | |
possui_macro_tema Boolean @default(true) | |
possui_tema Boolean @default(true) | |
possui_sub_tema Boolean @default(true) | |
possui_contexto_meta Boolean @default(true) | |
possui_complementacao_meta Boolean @default(true) | |
possui_iniciativa Boolean @default(false) | |
possui_atividade Boolean @default(false) | |
rotulo_macro_tema String @default("Macro Tema") | |
rotulo_tema String @default("Tema") | |
rotulo_sub_tema String @default("Sub Tema") | |
rotulo_contexto_meta String @default("Contexto") | |
rotulo_complementacao_meta String @default("Complementação") | |
rotulo_iniciativa String @default("Iniciativa") | |
rotulo_atividade String @default("Atividade") | |
nivel_orcamento NivelOrcamento @default(Meta) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
desativado_por Int? | |
desativado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
considerar_atraso_apos DateTime? @db.Date() | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
desativador Pessoa? @relation("Desativador", fields: [desativado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Eixo MacroTema[] | |
Tag Tag[] | |
ObjetivoEstrategico Tema[] | |
ArquivoDocumento ArquivoDocumento[] | |
SubTema SubTema[] | |
Meta Meta[] | |
tipo TipoPdm @default(PDM) | |
paineis_de_meta Painel[] | |
ps_admin_cps Json @default("[]") @db.Json | |
orcamento_dia_abertura Int @default(1) @db.SmallInt | |
orcamento_dia_fechamento Int @default(20) @db.SmallInt | |
monitoramento_orcamento Boolean @default(true) | |
legislacao_de_instituicao String? | |
pdm_anteriores Int[] @default([]) | |
orgao_admin_id Int? | |
orgao_admin Orgao? @relation(fields: [orgao_admin_id], references: [id]) | |
logo String? | |
arquivo_logo_id Int? | |
ArquivoLogo Arquivo? @relation(fields: [arquivo_logo_id], references: [id]) | |
CicloFasesPdmConfig CicloFasesPdmConfig[] | |
CicloFisico CicloFisico[] | |
PdmOrcamentoConfig PdmOrcamentoConfig[] | |
Relatorio Relatorio[] | |
PdmDotacaoPlanejado PdmDotacaoPlanejado[] | |
PdmDotacaoRealizado PdmDotacaoRealizado[] | |
PdmDotacaoProcesso PdmDotacaoProcesso[] | |
PdmDotacaoProcessoNota PdmDotacaoProcessoNota[] | |
ImportacaoLog ImportacaoOrcamento[] | |
// index continua existindo para quem é PDM | |
// create unique index ix_pdm_uniq_ativo on pdm(ativo) where ativo=true and tipo='PDM'; | |
PdmPerfil PdmPerfil[] | |
@@index([ativo]) | |
@@map("pdm") | |
} | |
enum PdmPerfilTipo { | |
ADMIN | |
CP | |
PONTO_FOCAL | |
} | |
model PdmPerfil { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
tipo PdmPerfilTipo | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("fk", fields: [pessoa_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("pdm_perfil") | |
} | |
model PdmOrcamentoRealizadoControleConcluido { | |
id Int @id @default(autoincrement()) | |
ano_referencia Int | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
criado_em DateTime | |
// sobre qual dia foi feito a abertura (setar concluido=false) | |
referencia_dia_abertura Int? @db.SmallInt | |
// sobre qual dia foi feito a abertura (setar concluido=true) | |
referencia_dia_fechamento Int? @db.SmallInt | |
// marcar se a execução foi marcada como concluida nessa data | |
execucao_concluida Boolean @default(false) | |
@@map("pdm_orcamento_realizado_controle_concluido") | |
} | |
model MacroTema { | |
id Int @id @default(autoincrement()) | |
descricao String | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Meta Meta[] | |
@@map("eixo") | |
} | |
model SubTema { | |
id Int @id @default(autoincrement()) | |
descricao String | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Meta Meta[] | |
@@map("subtema") | |
} | |
model FonteRecurso { | |
// deprecated, precisamos remover os endpoints futuramente | |
id Int @id @default(autoincrement()) | |
fonte String | |
sigla String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("fonte_recurso") | |
} | |
model TipoDocumento { | |
id Int @id @default(autoincrement()) | |
codigo String | |
titulo String | |
descricao String? | |
extensoes String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Arquivo Arquivo[] | |
@@map("tipo_documento") | |
} | |
model Tag { | |
id Int @id @default(autoincrement()) | |
descricao String | |
icone String? | |
arquivo_icone_id Int? | |
ArquivoIcone Arquivo? @relation(fields: [arquivo_icone_id], references: [id]) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ods_id Int? | |
ods Ods? @relation(fields: [ods_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
meta_tag MetaTag[] | |
iniciativa_tag IniciativaTag[] | |
atividade_tag AtividadeTag[] | |
@@index([pdm_id]) | |
@@map("tag") | |
} | |
model ProjetoEtapa { | |
id Int @id @default(autoincrement()) | |
descricao String | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Projeto Projeto[] | |
@@map("projeto_etapa") | |
} | |
model Tema { | |
id Int @id @default(autoincrement()) | |
descricao String | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Meta Meta[] | |
@@index([pdm_id]) | |
@@map("objetivo_estrategico") | |
} | |
model Regiao { | |
id Int @id @default(autoincrement()) | |
descricao String | |
shapefile String? | |
nivel Int | |
codigo String? | |
parente_id Int? | |
pdm_codigo_sufixo String? | |
arquivo_shapefile_id Int? | |
ArquivoShapefile Arquivo? @relation(fields: [arquivo_shapefile_id], references: [id]) | |
RegiaoAcima Regiao? @relation("Parente", fields: [parente_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
RegioesAbaixo Regiao[] @relation("Parente") | |
Variavel Variavel[] | |
Etapa Etapa[] | |
Projetos Projeto[] | |
GeoCamadaRegiao GeoCamadaRegiao[] | |
eleicoesComparecimento EleicaoComparecimento[] | |
mandatoRepresentatividade MandatoRepresentatividade[] | |
ProjetoRegiao ProjetoRegiao[] | |
@@index([parente_id]) | |
@@map("regiao") | |
} | |
model Arquivo { | |
id Int @id @default(autoincrement()) | |
tipo String | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
atualizado_por Int? | |
atualizado_em DateTime? | |
caminho String | |
nome_original String | |
mime_type String? | |
tamanho_bytes Int | |
descricao String? | |
tipo_documento_id Int? | |
diretorio_caminho String? | |
TipoDocumento TipoDocumento? @relation(fields: [tipo_documento_id], references: [id]) | |
Tag Tag[] | |
Regiao Regiao[] | |
ArquivoDocumento ArquivoDocumento[] | |
Pdm Pdm[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
MetaCicloFisicoAnaliseDocumento MetaCicloFisicoAnaliseDocumento[] | |
Relatorio Relatorio[] | |
projeto_documentos ProjetoDocumento[] | |
fotosParlamentar Parlamentar[] | |
ImportacaoLogInput ImportacaoOrcamento[] @relation("input") | |
ImportacaoLogOutput ImportacaoOrcamento[] @relation("output") | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
transferencia_anexos TransferenciaAnexo[] | |
@@map("arquivo") | |
} | |
model Diretorio { | |
id Int @id @default(autoincrement()) | |
caminho String | |
projeto_id Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
transferencia_id Int? | |
transferencia Transferencia? @relation(fields: [transferencia_id], references: [id]) | |
@@index([projeto_id]) | |
@@index([transferencia_id]) | |
@@map("diretorio") | |
} | |
model ArquivoDocumento { | |
id Int @id @default(autoincrement()) | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
pdm_id Int? | |
pdm Pdm? @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([arquivo_id]) | |
@@index([pdm_id]) | |
@@map("arquivo_documento") | |
} | |
model Meta { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
status String | |
codigo String | |
titulo String | |
contexto String? | |
complemento String? | |
macro_tema_id Int? | |
macro_tema MacroTema? @relation(fields: [macro_tema_id], references: [id]) | |
tema_id Int? | |
tema Tema? @relation(fields: [tema_id], references: [id]) | |
sub_tema_id Int? | |
sub_tema SubTema? @relation(fields: [sub_tema_id], references: [id]) | |
ativo Boolean @default(false) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ciclo_fisico_id Int? | |
ciclo_fisico CicloFisico? @relation(fields: [ciclo_fisico_id], references: [id]) | |
ciclo_fase_id Int? | |
ciclo_fase CicloFisicoFase? @relation(fields: [ciclo_fase_id], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
reovedor Pessoa? @relation("Desativador", fields: [removido_por], references: [id]) | |
meta_orgao MetaOrgao[] | |
meta_responsavel MetaResponsavel[] | |
indicador Indicador[] | |
iniciativa Iniciativa[] | |
meta_tag MetaTag[] | |
cronograma Cronograma[] | |
painel_conteudo PainelConteudo[] | |
StatusMetaCicloFisico StatusMetaCicloFisico[] | |
StatusVariavelCicloFisico StatusVariavelCicloFisico[] | |
VariavelCicloFisicoQualitativo VariavelCicloFisicoQualitativo[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
MetaCicloFisicoAnalise MetaCicloFisicoAnalise[] | |
MetaCicloFisicoAnaliseDocumento MetaCicloFisicoAnaliseDocumento[] | |
MetaCicloFisicoRisco MetaCicloFisicoRisco[] | |
MetaCicloFisicoFechamento MetaCicloFisicoFechamento[] | |
MetaOrcamento OrcamentoPrevisto[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
projetos Projeto[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
FormulaCompostaCicloFisicoQualitativo FormulaCompostaCicloFisicoQualitativo[] | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
PdmOrcamentoRealizadoConfig PdmOrcamentoRealizadoConfig[] | |
MetaStatusConsolidadoCf MetaStatusConsolidadoCf[] | |
ViewMetaPessoaResponsavelNaCp view_meta_pessoa_responsavel_na_cp[] | |
MetaStatusAtrasoConsolidadoMes MetaStatusAtrasoConsolidadoMes[] | |
MetaStatusAtrasoVariavel MetaStatusAtrasoVariavel[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
PdmOrcamentoRealizadoControleConcluido PdmOrcamentoRealizadoControleConcluido[] | |
@@index([pdm_id]) | |
@@map("meta") | |
} | |
model MetaTag { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
tag_id Int | |
tag Tag @relation(fields: [tag_id], references: [id]) | |
@@index([meta_id]) | |
@@index([tag_id]) | |
@@map("meta_tag") | |
} | |
model MetaOrgao { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
responsavel Boolean | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([orgao_id]) | |
@@index([meta_id]) | |
@@map("meta_orgao") | |
} | |
model MetaResponsavel { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("MetaPessoaResp", fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
coordenador_responsavel_cp Boolean | |
@@unique([pessoa_id, meta_id, coordenador_responsavel_cp]) | |
@@index([pessoa_id]) | |
@@index([meta_id]) | |
@@map("meta_responsavel") | |
} | |
enum Polaridade { | |
Neutra | |
Positiva | |
Negativa | |
} | |
enum NivelOrcamento { | |
Meta | |
Iniciativa | |
Atividade | |
} | |
enum Periodicidade { | |
Mensal | |
Bimestral | |
Trimestral | |
Quadrimestral | |
Semestral | |
Anual | |
Quinquenal | |
Secular | |
} | |
model Indicador { | |
id Int @id @default(autoincrement()) | |
meta_id Int? | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa_id Int? | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade_id Int? | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
formula String? | |
formula_compilada String? | |
acumulado_valor_base Decimal? @default(0) @db.Decimal(65, 30) | |
acumulado_usa_formula Boolean @default(false) | |
codigo String | |
titulo String | |
periodicidade Periodicidade | |
polaridade Polaridade @default(Neutra) | |
regionalizavel Boolean @default(false) | |
nivel_regionalizacao Int? | |
inicio_medicao DateTime @db.Date() | |
fim_medicao DateTime @db.Date() | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
contexto String? | |
complemento String? | |
casas_decimais Int? @db.SmallInt | |
recalculando Boolean @default(false) | |
recalculo_erro String? | |
recalculo_tempo Decimal? | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
IndicadorVariavelOrigem IndicadorVariavel[] @relation("Origem") | |
IndicadorVariavel IndicadorVariavel[] @relation("FK") | |
SerieIndicador SerieIndicador[] | |
formula_variaveis IndicadorFormulaVariavel[] | |
painel_conteudo PainelConteudo[] | |
FormulaCompostaOrigem IndicadorFormulaComposta[] @relation("Origem") | |
FormulaComposta IndicadorFormulaComposta[] @relation("FK") | |
IndicadorFormulaCompostaEmUso IndicadorFormulaCompostaEmUso[] | |
@@index([meta_id]) | |
@@index([iniciativa_id]) | |
@@index([atividade_id]) | |
@@map("indicador") | |
} | |
model IndicadorFormulaVariavel { | |
id Int @id @default(autoincrement()) | |
referencia String | |
indicador_id Int | |
indicador Indicador @relation(fields: [indicador_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
janela Int | |
usar_serie_acumulada Boolean @default(false) | |
@@unique([indicador_id, referencia]) | |
@@index([variavel_id]) | |
@@map("indicador_formula_variavel") | |
} | |
model IndicadorFormulaCompostaEmUso { | |
/// tabela de controle, apenas para o sistema encontrar rapidamente quais indicadores | |
// ele necessita atualizar ou não deixar apagar a formula composta | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation(fields: [indicador_id], references: [id]) | |
formula_composta_id Int | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
@@index([formula_composta_id]) | |
@@map("indicador_formula_composta_em_uso") | |
} | |
enum Serie { | |
Previsto | |
PrevistoAcumulado | |
Realizado | |
RealizadoAcumulado | |
} | |
model UnidadeMedida { | |
id Int @id @default(autoincrement()) | |
sigla String | |
descricao String | |
Variavel Variavel[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("unidade_medida") | |
} | |
model VariavelResponsavel { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
@@unique([pessoa_id, variavel_id]) | |
@@index([pessoa_id]) | |
@@index([variavel_id]) | |
@@map("variavel_responsavel") | |
} | |
model FormulaComposta { | |
id Int @id @default(autoincrement()) | |
titulo String | |
formula String | |
formula_compilada String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
nivel_regionalizacao Int? | |
mostrar_monitoramento Boolean @default(false) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
FormulaCompostaVariavel FormulaCompostaVariavel[] | |
IndicadorFormulaComposta IndicadorFormulaComposta[] | |
IndicadorFormulaCompostaEmUso IndicadorFormulaCompostaEmUso[] | |
FormulaCompostaCicloFisicoQualitativo FormulaCompostaCicloFisicoQualitativo[] | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
@@map("formula_composta") | |
} | |
model FormulaCompostaVariavel { | |
id Int @id @default(autoincrement()) | |
referencia String | |
formula_composta_id Int | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
janela Int | |
usar_serie_acumulada Boolean @default(false) | |
@@unique([formula_composta_id, referencia]) | |
@@index([variavel_id]) | |
@@map("formula_composta_variavel") | |
} | |
model Variavel { | |
id Int @id @default(autoincrement()) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
regiao_id Int? | |
//a regiao por agora, o usuario precisa criar cada uma das variaveis manualmente | |
regiao Regiao? @relation(fields: [regiao_id], references: [id]) | |
titulo String | |
// qual é o valor que o valor base se refere | |
ano_base Int? | |
valor_base Decimal @db.Decimal(65, 30) // onde o grafico começa | |
periodicidade Periodicidade | |
unidade_medida_id Int | |
unidade_medida UnidadeMedida @relation(fields: [unidade_medida_id], references: [id]) | |
variavel_categorica_id Int? | |
variavel_categorica VariavelCategorica? @relation(fields: [variavel_categorica_id], references: [id]) | |
codigo String | |
supraregional Boolean @default(false) | |
mostrar_monitoramento Boolean @default(true) | |
suspendida_em DateTime? @db.Timestamptz(6) | |
// ficam null quando a Periodicidade é a mesma do indicador | |
// quando for diferente, é necessário preencher para saber qual é o mês de base | |
inicio_medicao DateTime? @db.Date() | |
fim_medicao DateTime? @db.Date() | |
casas_decimais Int @default(0) @db.SmallInt | |
// usar para calculcar as agregações, por exemplo na média ponderada | |
// acho que pode ser um valor e não uma porcentagem, e ai o sistema calcula a porcentagem sozinho | |
// de acordo com o numero de variaveis | |
acumulativa Boolean @default(false) | |
// quando true, o sistema vai calcular automaticamente a serie acumulativa | |
// quando false, o usuario precisa preencher, mas sempre via ter as 4 series, correto? | |
serie_variavel SerieVariavel[] | |
variavel_responsavel VariavelResponsavel[] | |
indicador_variavel IndicadorVariavel[] | |
indicador_formula_variavel IndicadorFormulaVariavel[] | |
PainelConteudoDetalhe PainelConteudoDetalhe[] | |
StatusVariavelCicloFisico StatusVariavelCicloFisico[] | |
// quanto tempo leva para o preenchimento da variavel | |
// geralmente é 1, ou seja, numa variavel mensal, no ciclo de novembro, se preenche os valores de outubro | |
atraso_meses Int @default(1) @db.Integer | |
VariavelCicloFisicoQualitativo VariavelCicloFisicoQualitativo[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
PedidoComplementacao PedidoComplementacao[] | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
FormulaCompostaVariavel FormulaCompostaVariavel[] | |
suspensao_log VariavelSuspensaoLog[] | |
suspensao_controle VariavelSuspensaControle[] | |
MetaStatusAtrasoVariavel MetaStatusAtrasoVariavel[] | |
Etapa Etapa[] | |
@@index([regiao_id]) | |
@@map("variavel") | |
} | |
model VariavelSuspensaoLog { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
suspendida Boolean | |
criado_em DateTime @db.Timestamptz(6) | |
previo_status_mostrar_monitoramento Boolean @default(true) | |
@@map("variavel_suspensao_log") | |
} | |
model VariavelSuspensaControle { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
ciclo_fisico_base_id Int | |
ciclo_fisico_corrente_id Int | |
ciclo_fisico_base CicloFisico @relation("CicloFisicoBase", fields: [ciclo_fisico_base_id], references: [id]) | |
ciclo_fisico_corrente CicloFisico @relation("CicloFisicoCorrente", fields: [ciclo_fisico_corrente_id], references: [id]) | |
serie Serie | |
valor_antigo Decimal? @db.Decimal(65, 30) | |
valor_novo Decimal? @db.Decimal(65, 30) | |
processado_em DateTime @db.Timestamptz(6) | |
@@unique([variavel_id, ciclo_fisico_corrente_id, serie]) | |
@@map("variavel_suspensa_controle") | |
} | |
// cria relacionamento com um indicador (ou iniciativa que ainda nao existe) com a variavel | |
model IndicadorVariavel { | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation("FK", fields: [indicador_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
indicador_origem_id Int? | |
indicador_origem Indicador? @relation("Origem", fields: [indicador_origem_id], references: [id]) | |
desativado Boolean @default(false) | |
desativado_em DateTime? | |
desativado_por Int? | |
desativador Pessoa? @relation("Desativador", fields: [desativado_por], references: [id]) | |
@@index([variavel_id], map: "idx_indicador_variavel_variavel") | |
@@index([indicador_id], map: "idx_indicador_variavel_indicador") | |
@@map("indicador_variavel") | |
} | |
model IndicadorFormulaComposta { | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation("FK", fields: [indicador_id], references: [id]) | |
formula_composta_id Int | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
indicador_origem_id Int? | |
indicador_origem Indicador? @relation("Origem", fields: [indicador_origem_id], references: [id]) | |
desativado Boolean @default(false) | |
desativado_em DateTime? | |
desativado_por Int? | |
desativador Pessoa? @relation("Desativador", fields: [desativado_por], references: [id]) | |
@@index([formula_composta_id], map: "idx_indicador_fc_formula_composta_id") | |
@@index([indicador_id], map: "idx_indicador_fc_indicador_id") | |
@@map("indicador_formula_composta") | |
} | |
// valores calculados pelo sistema, deixar vazio por enquanto Lucas | |
model SerieIndicador { | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation(fields: [indicador_id], references: [id]) | |
serie Serie | |
data_valor DateTime @db.Date() | |
valor_nominal Float @db.DoublePrecision | |
ha_conferencia_pendente Boolean @default(false) | |
@@index([serie, indicador_id, data_valor], map: "idx_serie_indicador_indicador_id_data_valor") | |
@@index([indicador_id, data_valor], map: "idx_indicador_indicador_id_data_valor") | |
@@map("serie_indicador") | |
} | |
enum TipoVariavelCategorica { | |
Binaria | |
Cronograma | |
Qualitativa | |
} | |
model VariavelCategorica { | |
id Int @id @default(autoincrement()) | |
tipo TipoVariavelCategorica | |
titulo String | |
descricao String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
valores VariavelCategoricaValor[] | |
Variavel Variavel[] | |
SerieVariavel SerieVariavel[] | |
@@index([titulo]) | |
@@map("variavel_categorica") | |
} | |
model VariavelCategoricaValor { | |
id Int @id @default(autoincrement()) | |
titulo String | |
valor_variavel Int | |
descricao String? | |
ordem Int @default(0) | |
variavel_categorica_id Int | |
variavel_categorica VariavelCategorica @relation(fields: [variavel_categorica_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
SerieVariavel SerieVariavel[] | |
@@unique([variavel_categorica_id, valor_variavel]) | |
@@unique([variavel_categorica_id, id]) | |
@@map("variavel_categorica_valor") | |
} | |
model SerieVariavel { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
serie Serie | |
data_valor DateTime @db.Date() | |
valor_nominal Decimal @db.Decimal(65, 30) | |
variavel_categorica_id Int? | |
variavel_categorica VariavelCategorica? @relation(fields: [variavel_categorica_id], references: [id]) | |
variavel_categorica_valor_id Int? | |
variavel_categorica_valor VariavelCategoricaValor? @relation(fields: [variavel_categorica_id, variavel_categorica_valor_id], references: [variavel_categorica_id, id]) | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
conferida Boolean @default(true) | |
conferida_por Int? | |
conferida_em DateTime? | |
conferidor Pessoa? @relation("Conferidor", fields: [conferida_por], references: [id]) | |
ciclo_fisico_id Int? | |
@@index([variavel_id, data_valor]) | |
@@index([serie, variavel_id, data_valor], map: "idx_serie_variavel_variavel_id_data_valor") | |
@@map("serie_variavel") | |
} | |
model Iniciativa { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
codigo String | |
titulo String | |
contexto String? | |
complemento String? | |
compoe_indicador_meta Boolean | |
status String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ativo Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
iniciativa_orgao IniciativaOrgao[] | |
iniciativa_responsavel IniciativaResponsavel[] | |
iniciativa_tag IniciativaTag[] | |
Indicador Indicador[] | |
atividade Atividade[] | |
Cronograma Cronograma[] | |
PainelConteudoDetalhe PainelConteudoDetalhe[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
MetaOrcamento OrcamentoPrevisto[] | |
projetos Projeto[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
@@index([meta_id]) | |
@@map("iniciativa") | |
} | |
model IniciativaTag { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
tag_id Int | |
tag Tag @relation(fields: [tag_id], references: [id]) | |
@@index([iniciativa_id]) | |
@@map("iniciativa_tag") | |
} | |
model IniciativaOrgao { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
responsavel Boolean | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([iniciativa_id]) | |
@@index([orgao_id]) | |
@@map("iniciativa_orgao") | |
} | |
model IniciativaResponsavel { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("IniciativaPessoaResp", fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
coordenador_responsavel_cp Boolean | |
@@unique([pessoa_id, iniciativa_id, coordenador_responsavel_cp]) | |
@@index([iniciativa_id]) | |
@@index([orgao_id]) | |
@@map("iniciativa_responsavel") | |
} | |
model Atividade { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
codigo String | |
titulo String | |
contexto String? | |
complemento String? | |
compoe_indicador_iniciativa Boolean | |
status String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ativo Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atividade_orgao AtividadeOrgao[] | |
atividade_responsavel AtividadeResponsavel[] | |
atividade_tag AtividadeTag[] | |
Indicador Indicador[] | |
Cronograma Cronograma[] | |
PainelConteudoDetalhe PainelConteudoDetalhe[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
MetaOrcamento OrcamentoPrevisto[] | |
projetos Projeto[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
@@index([iniciativa_id]) | |
@@map("atividade") | |
} | |
model AtividadeTag { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
atividade Atividade @relation(fields: [atividade_id], references: [id]) | |
tag_id Int | |
tag Tag @relation(fields: [tag_id], references: [id]) | |
@@index([atividade_id]) | |
@@map("atividade_tag") | |
} | |
model AtividadeOrgao { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
atividade Atividade @relation(fields: [atividade_id], references: [id]) | |
responsavel Boolean | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([atividade_id]) | |
@@index([orgao_id]) | |
@@map("atividade_orgao") | |
} | |
model AtividadeResponsavel { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
atividade Atividade @relation(fields: [atividade_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("AtividadePessoaResp", fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
coordenador_responsavel_cp Boolean | |
@@unique([pessoa_id, atividade_id, coordenador_responsavel_cp]) | |
@@index([atividade_id]) | |
@@index([orgao_id]) | |
@@map("atividade_responsavel") | |
} | |
model Cronograma { | |
id Int @id @default(autoincrement()) | |
meta_id Int? | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa_id Int? | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade_id Int? | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
descricao String? | |
observacao String? | |
inicio_previsto DateTime? @db.Date() | |
termino_previsto DateTime? @db.Date() | |
inicio_real DateTime? @db.Date() | |
termino_real DateTime? @db.Date() | |
regionalizavel Boolean | |
nivel_regionalizacao Int? | |
CronogramaOrgao CronogramaOrgao[] | |
CronogramaEtapa CronogramaEtapa[] | |
// percentual_execucao // calculado a partir dos filhos (todos, incluindo as etapas (nivel 1/reais) herdadas) | |
percentual_execucao Int? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ativo Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
etapa Etapa[] | |
@@index([atividade_id]) | |
@@index([iniciativa_id]) | |
@@index([meta_id]) | |
@@map("cronograma") | |
} | |
model Etapa { | |
id Int @id @default(autoincrement()) | |
etapa_pai_id Int? | |
etapa_pai Etapa? @relation("EtapaPai", fields: [etapa_pai_id], references: [id]) | |
etapa_filha Etapa[] @relation("EtapaPai") | |
regiao_id Int? | |
regiao Regiao? @relation(fields: [regiao_id], references: [id]) | |
cronograma_id Int | |
cronograma Cronograma @relation(fields: [cronograma_id], references: [id]) | |
titulo String? | |
nivel String? | |
descricao String? | |
inicio_previsto DateTime? @db.Date() | |
termino_previsto DateTime? @db.Date() | |
inicio_real DateTime? @db.Date() | |
termino_real DateTime? @db.Date() | |
prazo_inicio DateTime? | |
prazo_termino DateTime? | |
status String? | |
CronogramaEtapa CronogramaEtapa[] | |
peso Int? | |
percentual_execucao Int? | |
n_filhos_imediatos Int? | |
// quando o n_filhos_imediatos===0 entao, os dois acima sao informados | |
// se não, são calculados pela trigger, usando a formula | |
// %execucao pai = round( (%execucao * nvl(peso) )/(soma dos pesos dos filhos) ) | |
// Boolean que indica se endereço (GeoLocalizacaoReferencia) é obrigatório para encerrar etapa. | |
endereco_obrigatorio Boolean @default(false) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
variavel_id Int? | |
variavel Variavel? @relation(fields: [variavel_id], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
responsaveis EtapaResponsavel[] | |
GeoLocalizacaoReferencia GeoLocalizacaoReferencia[] | |
@@index([regiao_id]) | |
@@index([etapa_pai_id]) | |
@@index([cronograma_id]) | |
@@map("etapa") | |
} | |
model EtapaResponsavel { | |
id Int @id @default(autoincrement()) | |
etapa_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
etapa Etapa @relation(fields: [etapa_id], references: [id]) | |
@@unique([pessoa_id, etapa_id], name: "etapa_pessoa_uniq") | |
@@index([pessoa_id]) | |
@@index([etapa_id]) | |
@@map("etapa_responsavel") | |
} | |
model CronogramaOrgao { | |
id Int @id @default(autoincrement()) | |
cronograma_id Int | |
cronograma Cronograma @relation(fields: [cronograma_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@index([cronograma_id]) | |
@@index([orgao_id]) | |
@@map("cronograma_orgao") | |
} | |
enum CronogramaEtapaNivel { | |
Etapa | |
Fase | |
SubFase | |
} | |
model CronogramaEtapa { | |
id Int @id @default(autoincrement()) | |
cronograma_id Int | |
cronograma Cronograma @relation(fields: [cronograma_id], references: [id]) | |
etapa_id Int | |
etapa Etapa @relation(fields: [etapa_id], references: [id]) | |
nivel CronogramaEtapaNivel | |
ordem Int | |
inativo Boolean @default(false) | |
data_inativacao DateTime? @db.Timestamptz(6) | |
@@unique([cronograma_id, etapa_id], name: "CronogramaEtapaUniq") | |
@@index([cronograma_id]) | |
@@index([etapa_id]) | |
@@map("cronograma_etapa") | |
} | |
model Painel { | |
id Int @id @default(autoincrement()) | |
nome String | |
periodicidade Periodicidade | |
ativo Boolean @default(true) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
mostrar_planejado_por_padrao Boolean @default(true) | |
mostrar_acumulado_por_padrao Boolean @default(true) | |
mostrar_indicador_por_padrao Boolean @default(true) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
painel_conteudo PainelConteudo[] | |
grupos PainelGrupoPainel[] | |
@@index([pdm_id]) | |
@@map("painel") | |
} | |
enum Periodo { | |
Corrente | |
Anteriores | |
Todos | |
EntreDatas | |
} | |
model PainelConteudo { | |
id Int @id @default(autoincrement()) | |
painel_id Int | |
painel Painel @relation(fields: [painel_id], references: [id]) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
periodicidade Periodicidade | |
periodo Periodo @default(Todos) | |
periodo_valor Int? | |
periodo_inicio DateTime? @db.Date | |
periodo_fim DateTime? @db.Date | |
mostrar_planejado Boolean | |
mostrar_acumulado Boolean | |
mostrar_indicador Boolean | |
mostrar_acumulado_periodo Boolean @default(false) | |
ordem Int? | |
detalhes PainelConteudoDetalhe[] | |
indicador Indicador? @relation(fields: [indicador_id], references: [id]) | |
indicador_id Int? | |
@@index([painel_id]) | |
@@index([meta_id]) | |
@@map("painel_conteudo") | |
} | |
enum PainelConteudoTipoDetalhe { | |
Variavel | |
Iniciativa | |
Atividade | |
} | |
model PainelConteudoDetalhe { | |
id Int @id @default(autoincrement()) | |
variavel_id Int? | |
variavel Variavel? @relation(fields: [variavel_id], references: [id]) | |
iniciativa_id Int? | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade_id Int? | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
painel_conteudo_id Int | |
painel_conteudo PainelConteudo @relation(fields: [painel_conteudo_id], references: [id], onDelete: Cascade) | |
pai_id Int? | |
pai PainelConteudoDetalhe? @relation("fk", fields: [pai_id], references: [id], onDelete: Cascade) | |
mostrar_indicador Boolean | |
ordem Int? | |
tipo PainelConteudoTipoDetalhe | |
filhos PainelConteudoDetalhe[] @relation("fk") | |
@@index([painel_conteudo_id]) | |
@@index([pai_id]) | |
@@map("painel_conteudo_detalhe") | |
} | |
model GrupoPainel { | |
id Int @id @default(autoincrement()) | |
nome String @unique | |
ativo Boolean @default(true) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
pessoas PessoaGrupoPainel[] | |
paineis PainelGrupoPainel[] | |
@@map("grupo_painel") | |
} | |
model PessoaGrupoPainel { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
grupo_painel_id Int | |
grupo_painel GrupoPainel @relation(fields: [grupo_painel_id], references: [id]) | |
@@index([pessoa_id]) | |
@@index([grupo_painel_id]) | |
@@map("pessoa_grupo_painel") | |
} | |
model PainelGrupoPainel { | |
id Int @id @default(autoincrement()) | |
painel_id Int | |
painel Painel @relation(fields: [painel_id], references: [id]) | |
grupo_painel_id Int | |
grupo_painel GrupoPainel @relation(fields: [grupo_painel_id], references: [id]) | |
@@index([painel_id]) | |
@@index([grupo_painel_id]) | |
@@map("painel_grupos") | |
} | |
enum CicloFase { | |
Coleta | |
Analise | |
Risco | |
Fechamento | |
} | |
// tabela de origem dos intervalos padrões | |
model CicloFasesBase { | |
id Int @id @default(autoincrement()) | |
ciclo_fase CicloFase @unique | |
n_dias_do_inicio_mes Int | |
duracao Int // quando negativo, vai subtrair do final do mes | |
@@map("ciclo_fases_base") | |
} | |
// se um dia quiser sobre-escrever em um PDM | |
model CicloFasesPdmConfig { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ciclo_fase CicloFase | |
n_dias_do_inicio_mes Int | |
duracao Int | |
@@map("ciclo_fases_pdm_config") | |
} | |
// ciclos após abertura | |
model CicloFisico { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
data_ciclo DateTime @db.Date() | |
ciclo_fase_atual_id Int? | |
CicloFaseAtual CicloFisicoFase? @relation("atual", fields: [ciclo_fase_atual_id], references: [id]) | |
ativo Boolean @default(false) | |
acordar_ciclo_em DateTime? | |
acordar_ciclo_errmsg String? | |
acordar_ciclo_executou_em DateTime? | |
fases CicloFisicoFase[] @relation("fk") | |
metas Meta[] | |
StatusMetaCicloFisico StatusMetaCicloFisico[] | |
StatusVariavelCicloFisico StatusVariavelCicloFisico[] | |
VariavelCicloFisicoQualitativo VariavelCicloFisicoQualitativo[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
PedidoComplementacao PedidoComplementacao[] | |
MetaCicloFisicoAnalise MetaCicloFisicoAnalise[] | |
MetaCicloFisicoAnaliseDocumento MetaCicloFisicoAnaliseDocumento[] | |
MetaCicloFisicoRisco MetaCicloFisicoRisco[] | |
MetaCicloFisicoFechamento MetaCicloFisicoFechamento[] | |
FormulaCompostaCicloFisicoQualitativo FormulaCompostaCicloFisicoQualitativo[] | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
VariaveisSuspensasCicloBase VariavelSuspensaControle[] @relation("CicloFisicoBase") | |
VariaveisSuspensasCicloCorrente VariavelSuspensaControle[] @relation("CicloFisicoCorrente") | |
MetaStatusConsolidadoCf MetaStatusConsolidadoCf[] | |
// create unique index ix_ciclo_fisico_uniq_ativo on ciclo_fisico(ativo) where ativo=true; | |
// existe mais um index aqui, que não está no prisma que não suporta partial index | |
@@index([pdm_id]) | |
@@index([data_ciclo]) | |
@@map("ciclo_fisico") | |
} | |
// data de cada uma das fases | |
model CicloFisicoFase { | |
id Int @id @default(autoincrement()) | |
ciclo_fisico_id Int | |
ciclo_fisico CicloFisico @relation("fk", fields: [ciclo_fisico_id], references: [id]) | |
cf_estou_em_usos CicloFisico[] @relation("atual") | |
data_inicio DateTime @db.Date() | |
data_fim DateTime @db.Date() | |
ciclo_fase CicloFase | |
metas Meta[] | |
@@index([ciclo_fisico_id]) | |
@@map("ciclo_fisico_fase") | |
} | |
model PessoaAcessoPdm { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int @unique | |
metas_cronograma Int[] | |
metas_variaveis Int[] | |
variaveis Int[] | |
cronogramas_etapas Int[] | |
data_ciclo DateTime? @db.Date | |
perfil String | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@index([pessoa_id]) | |
@@map("pessoa_acesso_pdm") | |
} | |
// diz se as linhas no pessoa_acesso_pdm estão válidas ou não | |
model PessoaAcessoPdmValido { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int @unique | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@index([pessoa_id]) | |
@@map("pessoa_acesso_pdm_valido") | |
} | |
model MetaCicloFisicoAnalise { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
informacoes_complementares String? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("meta_ciclo_fisico_analise") | |
} | |
model MetaCicloFisicoAnaliseDocumento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ciclo_fisico_id]) | |
@@map("meta_ciclo_fisico_analise_documento") | |
} | |
model MetaCicloFisicoRisco { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
detalhamento String? /// HTML | |
ponto_de_atencao String? /// HTML | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("meta_ciclo_fisico_risco") | |
} | |
model MetaCicloFisicoFechamento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
comentario String? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("meta_ciclo_fisico_fechamento") | |
} | |
model VariavelCicloFisicoQualitativo { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
variavel_id Int | |
referencia_data DateTime @db.Date | |
analise_qualitativa String? | |
enviado_para_cp Boolean | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("variavel_ciclo_fisico_qualitativo") | |
} | |
model FormulaCompostaCicloFisicoQualitativo { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
formula_composta_id Int | |
referencia_data DateTime @db.Date /// data do ciclo | |
analise_qualitativa String? | |
// no momento não há regra de negocio que usa esse campo, só guarda o status de qual botão foi clicado | |
// não tem processo de perdir revisão apenas de uma formula-composta | |
enviado_para_cp Boolean | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("formula_composta_ciclo_fisico_qualitativo") | |
} | |
model FormulaCompostaCicloFisicoDocumento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
formula_composta_id Int | |
referencia_data DateTime @db.Date /// data do ciclo | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([ciclo_fisico_id, formula_composta_id]) | |
@@map("formula_composta_ciclo_fisico_documento") | |
} | |
model PedidoComplementacao { | |
id Int @id @default(autoincrement()) | |
ciclo_fisico_id Int | |
variavel_id Int | |
pedido String | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
atendido Boolean | |
atendido_em DateTime? | |
atendido_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaAtendeu Pessoa? @relation("atendeu", fields: [atendido_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([ciclo_fisico_id, variavel_id, ultima_revisao]) | |
@@map("variavel_ciclo_fisico_pedido_complementacao") | |
} | |
model VariavelCicloFisicoDocumento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
variavel_id Int | |
referencia_data DateTime @db.Date | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([ciclo_fisico_id, variavel_id]) | |
@@map("variavel_ciclo_fisico_documento") | |
} | |
model StatusVariavelCicloFisico { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
variavel_id Int | |
aguarda_cp Boolean @default(false) | |
aguarda_complementacao Boolean @default(false) | |
conferida Boolean @default(false) | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
@@index([variavel_id]) | |
@@index([ciclo_fisico_id]) | |
@@map("status_variavel_ciclo_fisico") | |
} | |
model StatusMetaCicloFisico { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
pessoa_id Int | |
status_coleta String @default("") | |
// nao atualizadas = uma ou mais variaveis não preenchida | |
// aguardando complementação = uma ou mais variavel aguarda complementação | |
// não conferidas = uma ou mais variavel não foi conferida | |
// outros = qualquer uma não categorizada acima | |
status_cronograma String @default("") | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
@@index([pessoa_id]) | |
@@index([ciclo_fisico_id]) | |
@@map("status_meta_ciclo_fisico") | |
} | |
model PdmOrcamentoConfig { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
ano_referencia Int | |
previsao_custo_disponivel Boolean @default(true) | |
planejado_disponivel Boolean @default(false) | |
execucao_disponivel Boolean @default(false) | |
execucao_disponivel_meses Int[] @default([3, 6, 9, 12]) | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
@@index([pdm_id]) | |
@@map("meta_orcamento_config") | |
} | |
model PdmOrcamentoRealizadoConfig { | |
id Int @id @default(autoincrement()) | |
ano_referencia Int | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
ultima_revisao Boolean? | |
atualizado_em DateTime | |
atualizado_por Int | |
atualizador Pessoa @relation(fields: [atualizado_por], references: [id]) | |
execucao_concluida Boolean @default(false) | |
@@unique([meta_id, ano_referencia, orgao_id, ultima_revisao]) | |
@@map("pdm_orcamento_realizado_config") | |
} | |
model OrcamentoPrevisto { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
versao_anterior_id Int? @unique | |
ultima_revisao Boolean @default(false) | |
ano_referencia Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
custo_previsto Float @db.DoublePrecision | |
parte_dotacao String @default("") | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("atualizador", fields: [atualizado_por], references: [id]) | |
versao_anterior OrcamentoPrevisto? @relation("versao_anterior", fields: [versao_anterior_id], references: [id]) | |
versao_seguinte OrcamentoPrevisto? @relation("versao_anterior") | |
@@index([meta_id, ano_referencia]) | |
@@map("meta_orcamento") | |
} | |
model DotacaoPlanejado { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
val_orcado_inicial Decimal @db.Decimal(15, 2) | |
val_orcado_atualizado Decimal @db.Decimal(15, 2) | |
saldo_disponivel Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao]) | |
@@map("dotacao_planejado") | |
} | |
model PdmDotacaoPlanejado { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
pressao_orcamentaria Boolean | |
soma_valor_planejado Decimal @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao]) | |
@@map("pdm_dotacao_planejado") | |
} | |
model PortfolioDotacaoPlanejado { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
pressao_orcamentaria Boolean | |
soma_valor_planejado Decimal @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao]) | |
@@map("portfolio_dotacao_planejado") | |
} | |
model DotacaoRealizado { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
empenho_liquido Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao]) | |
@@map("dotacao_realizado") | |
} | |
model PdmDotacaoRealizado { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao]) | |
@@map("pdm_dotacao_realizado") | |
} | |
model PortfolioDotacaoRealizado { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao]) | |
@@map("portfolio_dotacao_realizado") | |
} | |
model DotacaoProcesso { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
dotacao_processo String | |
empenho_liquido Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao, dotacao_processo]) | |
@@map("dotacao_processo") | |
} | |
model PdmDotacaoProcesso { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao, dotacao_processo]) | |
@@map("pdm_dotacao_processo") | |
} | |
model PortfolioDotacaoProcesso { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao, dotacao_processo]) | |
@@map("portfolio_dotacao_processo") | |
} | |
model DotacaoProcessoNota { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
dotacao_processo String | |
dotacao_processo_nota String | |
empenho_liquido Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao, dotacao_processo, dotacao_processo_nota]) | |
@@map("dotacao_processo_nota") | |
} | |
model PdmDotacaoProcessoNota { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
dotacao_processo_nota String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao, dotacao_processo, dotacao_processo_nota]) | |
@@map("pdm_dotacao_processo_nota") | |
} | |
model PortfolioDotacaoProcessoNota { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
dotacao_processo_nota String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao, dotacao_processo, dotacao_processo_nota]) | |
@@map("portfolio_dotacao_processo_nota") | |
} | |
model OrcamentoPlanejado { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
valor_planejado Decimal @db.Decimal(15, 2) | |
ano_referencia Int | |
dotacao String | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id]) | |
@@index([projeto_id]) | |
@@index([ano_referencia, meta_id]) | |
@@index([ano_referencia, iniciativa_id]) | |
@@index([ano_referencia, atividade_id]) | |
@@index([ano_referencia, dotacao]) | |
@@map("orcamento_planejado") | |
} | |
model OrcamentoPrevistoZerado { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
ano_referencia Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("orcamento_previsto_zerado") | |
} | |
model OrcamentoRealizadoItem { | |
id Int @id @default(autoincrement()) | |
valor_empenho Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
percentual_empenho Decimal? @db.Decimal(7, 4) | |
percentual_liquidado Decimal? @db.Decimal(7, 4) | |
mes Int | |
mes_corrente Boolean @default(false) | |
/// data compilada a partir do ano/mes | |
data_referencia DateTime @db.Date() | |
sobrescrito_em DateTime? | |
sobrescrito_por Int? | |
sobrescritor Pessoa? @relation("sobrescritor", fields: [sobrescrito_por], references: [id]) | |
OrcamentoRealizado OrcamentoRealizado @relation(fields: [orcamento_realizado_id], references: [id]) | |
orcamento_realizado_id Int | |
@@index([orcamento_realizado_id]) | |
@@map("orcamento_realizado_item") | |
} | |
model OrcamentoRealizado { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
processo String? | |
nota_empenho String? | |
dotacao_complemento String? | |
soma_valor_empenho Decimal @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @db.Decimal(15, 2) | |
itens OrcamentoRealizadoItem[] | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id]) | |
@@index([projeto_id]) | |
@@index([ano_referencia, projeto_id]) | |
@@index([ano_referencia, meta_id]) | |
@@index([ano_referencia, dotacao]) | |
@@map("orcamento_realizado") | |
} | |
model SofEntidade { | |
ano Int @id | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
dados Json @default("{}") @db.Json | |
// marca se acontecer erro ao atualizar a materialized view | |
errmsg String? | |
@@map("sof_entidade") | |
} | |
model TextoConfig { | |
id Int @id @default(1) | |
bemvindo_email String | |
tos String | |
@@map("texto_config") | |
} | |
enum TipoRelatorio { | |
Consolidado | |
Analitico | |
} | |
enum FonteRelatorio { | |
Orcamento | |
Indicadores | |
MonitoramentoMensal | |
PrevisaoCusto | |
Projeto | |
Projetos | |
ProjetoStatus | |
ProjetoPrevisaoCusto | |
ProjetoOrcamento | |
Parlamentares | |
Transferencias | |
} | |
model Relatorio { | |
id Int @id @default(autoincrement()) | |
pdm_id Int? | |
parametros Json @default("{}") @db.Json | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int? | |
arquivo_id Int | |
removido_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
tipo TipoRelatorio? // não deu certo remover, o prisma não cria o Enum pq não ta sendo usado! | |
fonte FonteRelatorio | |
criador Pessoa? @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
pdm Pdm? @relation(fields: [pdm_id], references: [id]) | |
ProjetoRelatorioFila ProjetoRelatorioFila[] | |
@@index([pdm_id, criado_em, removido_em]) | |
@@index([fonte, criado_em]) | |
@@map("relatorio") | |
} | |
enum ProjetoFase { | |
Registro | |
Planejamento | |
Acompanhamento | |
Encerramento | |
} | |
enum ProjetoStatus { | |
Registrado // Arquivado ou Priorizado caso seja priorizado | |
Selecionado // Arquivado ou EmPlanejamento caso seja Aprovado | |
EmPlanejamento // Arquivado ou Validado caso o iniciado | |
Planejado // vai para o SEI o arquivo do relatorio | |
Validado // EmSuspensao ou EmFechamento caso fechado | |
EmAcompanhamento // Suspenso, fechado | |
Suspenso // Volta pra EmAcompanhamento ou Fechado | |
Fechado // vai para o SEI o arquivo do relatorio | |
MDO_NaoIniciada | |
MDO_EmAndamento | |
MDO_Concluida | |
MDO_Paralisada | |
} | |
model Portfolio { | |
id Int @id @default(autoincrement()) | |
titulo String | |
Projeto Projeto[] | |
orgaos PortfolioOrgao[] | |
tipo_projeto TipoProjeto @default(PP) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
nivel_maximo_tarefa Int @default(5) @db.SmallInt | |
nivel_regionalizacao Int @default(1) @db.SmallInt | |
orcamento_execucao_disponivel_meses Int[] @default([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) | |
descricao String @default("") | |
/// data informada pelo usuario | |
data_criacao DateTime? @db.Date | |
// Boolean que indica se portfolio é "template" | |
// Ou seja, utilizado para clonagem | |
modelo_clonagem Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
ProjetoNumerosSequenciais ProjetoNumeroSequencial[] | |
PortfolioDotacaoPlanejado PortfolioDotacaoPlanejado[] | |
PortfolioDotacaoRealizado PortfolioDotacaoRealizado[] | |
PortfolioDotacaoProcesso PortfolioDotacaoProcesso[] | |
PortfolioDotacaoProcessoNota PortfolioDotacaoProcessoNota[] | |
ImportacaoLog ImportacaoOrcamento[] | |
PortfolioGrupoPortfolio PortfolioGrupoPortfolio[] | |
projetosCompartilhados PortfolioProjetoCompartilhado[] | |
@@map("portfolio") | |
} | |
model PortfolioOrgao { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int @map("portifolio_id") | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([portfolio_id]) | |
@@map("portifolio_orgao") | |
} | |
enum CategoriaProcessoSei { | |
Encerramento | |
Aprovacao | |
Manual | |
} | |
model ProjetoRegistroSei { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
categoria CategoriaProcessoSei | |
processo_sei String | |
descricao String? | |
link String? | |
comentarios String? | |
observacoes String? | |
// Link, descrição, metadados | |
registro_sei_info Json @default("{}") | |
registro_sei_errmsg String? | |
criado_em DateTime? | |
criado_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_registro_sei") | |
} | |
enum TipoProjeto { | |
PP | |
MDO | |
} | |
model Projeto { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
tipo TipoProjeto @default(PP) | |
portfolios_compartilhados PortfolioProjetoCompartilhado[] | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
projeto_etapa_id Int? | |
projeto_etapa ProjetoEtapa? @relation(fields: [projeto_etapa_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
regiao_id Int? | |
regiao Regiao? @relation(fields: [regiao_id], references: [id]) | |
logradouro_tipo String? | |
logradouro_nome String? | |
logradouro_numero String? | |
logradouro_cep String? | |
codigo String? // abre apenas depois de priorizado | |
previsao_custo Float? | |
nome String | |
objeto String /// HTML | |
objetivo String /// HTML | |
origem_tipo ProjetoOrigemTipo @default(Outro) | |
origem_eh_pdm Boolean @default(false) | |
origem_outro String? | |
meta_codigo String? | |
publico_alvo String /// HTML | |
previsao_inicio DateTime? @db.Date() // data de inicio é o ponto fixo, entao se mudar a duracao no frontend, ajusta o final | |
previsao_termino DateTime? @db.Date() | |
previsao_duracao Int? | |
ano_orcamento Int[] @default([]) | |
risco_maximo String? | |
qtde_riscos Int @default(0) | |
mdo_detalhamento String? | |
mdo_programa_habitacional String? | |
mdo_observacoes String? | |
mdo_n_unidades_habitacionais Int? | |
mdo_n_familias_beneficiadas Int? | |
grupo_tematico_id Int? | |
mdo_previsao_inauguracao DateTime? @db.Date() | |
grupo_tematico GrupoTematico? @relation(fields: [grupo_tematico_id], references: [id]) | |
tipo_intervencao_id Int? | |
tipo_intervencao TipoIntervencao? @relation(fields: [tipo_intervencao_id], references: [id]) | |
equipamento_id Int? | |
equipamento Equipamento? @relation(fields: [equipamento_id], references: [id]) | |
orgao_executor_id Int? | |
orgao_executor Orgao? @relation("orgao_executor", fields: [orgao_executor_id], references: [id]) | |
orgao_origem_id Int? | |
orgao_origem Orgao? @relation("orgao_origem", fields: [orgao_origem_id], references: [id]) | |
status ProjetoStatus | |
fase ProjetoFase | |
arquivado Boolean @default(false) | |
eh_prioritario Boolean @default(false) | |
// Fase=Registro | |
resumo String // campo livre | |
escopo String? @ignore | |
principais_etapas String? | |
principais_etapas_antigo String? @ignore // valor do antigo principais_etapas read-only apos Fase=Registro | |
// Fase=Planejamento | |
nao_escopo String? /// HTML | |
// Fase=Detalhamento, required pra entrar na fase Planejamento | |
secretario_responsavel String? | |
secretario_executivo String? | |
coordenador_ue String? | |
orgao_gestor_id Int | |
orgao_gestor Orgao @relation("orgao_gestor", fields: [orgao_gestor_id], references: [id]) | |
responsaveis_no_orgao_gestor Int[] @default([]) | |
orgao_responsavel_id Int? | |
orgao_responsavel Orgao? @relation("orgao_responsavel", fields: [orgao_responsavel_id], references: [id]) | |
responsavel_id Int? | |
responsavel Pessoa? @relation("ppResponsavel", fields: [responsavel_id], references: [id]) | |
// fornecido pelo user | |
data_aprovacao DateTime? @db.Date | |
data_revisao DateTime? @db.Date | |
versao String? | |
registrado_em DateTime | |
registrado_por Int | |
pessoaQRegistrou Pessoa? @relation("criador", fields: [registrado_por], references: [id]) | |
// quem moveu de EmRegistro para EmDetalhamento | |
selecionado_em DateTime? | |
selecionado_por Int? | |
pessoaQSelecionou Pessoa? @relation("ppSelecionado", fields: [selecionado_por], references: [id]) | |
// quem moveu de EmDetalhamento para EmPlanejamento | |
em_planejamento_em DateTime? | |
em_planejamento_por Int? | |
pessoaQPlanejou Pessoa? @relation("ppEm_planejamento", fields: [em_planejamento_por], references: [id]) | |
// quem arquivou, vindo de qualquer lugar | |
arquivado_em DateTime? | |
arquivado_por Int? | |
pessoaQArquivou Pessoa? @relation("ppArquivado", fields: [arquivado_por], references: [id]) | |
// quem suspendeu (vindo do EmExecucao indo pro EmSuspensao) | |
suspenso_em DateTime? | |
suspenso_por Int? | |
pessoaQSuspendeu Pessoa? @relation("ppSuspenso", fields: [suspenso_por], references: [id]) | |
restaurado_em DateTime? | |
restaurado_por Int? | |
pessoaQRestaurou Pessoa? @relation("ppRestaurou", fields: [restaurado_por], references: [id]) | |
validado_em DateTime? | |
validado_por Int? | |
pessoaQValidado Pessoa? @relation("ppValidado", fields: [validado_por], references: [id]) | |
finalizou_planejamento_em DateTime? | |
finalizou_planejamento_por Int? | |
pessoaQFinalizouPlan Pessoa? @relation("ppFinalizouPlan", fields: [finalizou_planejamento_por], references: [id]) | |
// quem migrou de EmSuspensao indo EmFechamento | |
cancelado_em DateTime? | |
cancelado_por Int? | |
pessoaQCancelou Pessoa? @relation("ppCancelou", fields: [cancelado_por], references: [id]) | |
// quem migrou de EmSuspensao indo EmExecucao | |
reiniciado_em DateTime? | |
reiniciado_por Int? | |
pessoaQReiniciou Pessoa? @relation("ppReiniciou", fields: [reiniciado_por], references: [id]) | |
// quem migrou de EmPlanejamento para EmExecucao | |
iniciado_em DateTime? | |
iniciado_por Int? | |
pessoaQIniciou Pessoa? @relation("ppIniciou", fields: [iniciado_por], references: [id]) | |
// quem migrou de EmExecucao para EmFechamento | |
terminado_em DateTime? | |
terminado_por Int? | |
pessoaQTerminou Pessoa? @relation("ppTerminou", fields: [terminado_por], references: [id]) | |
premissas ProjetoPremissa[] // depois de selecionado | |
restricoes ProjetoRestricao[] // depois de selecionado | |
licoes_aprendidas ProjetoLicaoAprendida[] // só na execucao | |
fonte_recursos ProjetoFonteRecurso[] // sempre | |
documentos ProjetoDocumento[] // sempre | |
TarefaCronograma TarefaCronograma[] // depois de EmPlanejamento | |
ProjetoRisco ProjetoRisco[] // depois de EmPlanejamento | |
ProjetoAcompanhamento ProjetoAcompanhamento[] // depois de EmAcompanhamento | |
orgaos_participantes ProjetoOrgaoParticipante[] // sempre | |
removido_em DateTime? | |
removido_por Int? | |
ProjetoRegistroSei ProjetoRegistroSei[] | |
ProjetoRelatorioFila ProjetoRelatorioFila[] | |
ProjetoNumerosSequenciais ProjetoNumeroSequencial[] | |
MetaOrcamento OrcamentoPrevisto[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
Diretorio Diretorio[] | |
ProjetoGrupoPortfolio ProjetoGrupoPortfolio[] | |
equipe ProjetoEquipe[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
// Módulo de gestão de obras | |
gruposTematicos ProjetoGrupoTematico[] | |
tiposIntervencao ProjetoTipoIntervencao[] | |
equipamentos ProjetoEquipamento[] | |
ProjetoRegiao ProjetoRegiao[] | |
@@index([removido_em]) | |
@@map("projeto") | |
} | |
model ProjetoRegiao { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
regiao_id Int | |
regiao Regiao @relation(fields: [regiao_id], references: [id]) | |
// criado em, atualizando em, removido em | |
criado_por Int | |
criado_em DateTime | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizado_por Int? | |
atualizado_em DateTime? | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removido_por Int? | |
removido_em DateTime? | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_regiao") | |
} | |
model PortfolioProjetoCompartilhado { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
criado_por Int | |
criado_em DateTime | |
removido_por Int? | |
removido_em DateTime? | |
// Colunas de atualização não são utilizadas por agora. | |
// Mas se pedirem para dados adicionais neste relacionamento | |
// Já teremos estes campos prontos. | |
atualizado_por Int? | |
atualizado_em DateTime? | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
@@map("portfolio_projeto_compartilhado") | |
} | |
model ProjetoEquipe { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
pessoa_id Int | |
orgao_id Int | |
criado_por Int | |
criado_em DateTime | |
removido_por Int? | |
removido_em DateTime? | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
pessoa Pessoa @relation("fk", fields: [pessoa_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_equipe") | |
} | |
model AcompanhamentoTipo { | |
id Int @id @default(autoincrement()) | |
nome String | |
tipo_projeto TipoProjeto @default(PP) | |
criado_por Int? | |
criado_em DateTime? | |
atualizado_por Int? | |
atualizado_em DateTime? | |
removido_por Int? | |
removido_em DateTime? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
acompanhamentos ProjetoAcompanhamento[] | |
@@map("acompanhamento_tipo") | |
} | |
enum ProjetoMotivoRelatorio { | |
MudancaDeStatus | |
ProjetoSelecionado | |
ProjetoPlanejado | |
ProjetoEncerrado | |
} | |
model ProjetoRelatorioFila { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
congelado_em DateTime? @map("locked_at") | |
executado_em DateTime? | |
relatorio_id Int? | |
relatorio Relatorio? @relation(fields: [relatorio_id], references: [id]) | |
motivado_relatorio ProjetoMotivoRelatorio @default(MudancaDeStatus) | |
@@index([projeto_id]) | |
@@map("projeto_relatorio_fila") | |
} | |
enum ProjetoOrigemTipo { | |
PdmSistema | |
PdmAntigo | |
Outro | |
} | |
model ProjetoOrgaoParticipante { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_orgao_participante") | |
} | |
model ProjetoPremissa { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
premissa String | |
@@index([projeto_id]) | |
@@map("projeto_premissa") | |
} | |
model ProjetoRestricao { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
restricao String | |
@@index([projeto_id]) | |
@@map("projeto_restricao") | |
} | |
model ProjetoLicaoAprendida { | |
id Int @id @default(autoincrement()) | |
data_registro DateTime | |
responsavel String | |
sequencial Int | |
projeto_id Int | |
criado_por Int | |
criado_em DateTime | |
removido_por Int? | |
removido_em DateTime? | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
descricao String | |
observacao String? | |
contexto String? | |
resultado String? | |
@@index([projeto_id]) | |
@@map("projeto_licao_aprendida") | |
} | |
model ProjetoFonteRecurso { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
fonte_recurso_cod_sof String | |
fonte_recurso_ano Int | |
valor_percentual Float? | |
valor_nominal Float? | |
requer_revisao_sof Boolean @default(false) | |
criado_em DateTime @default(now()) | |
atualizado_em DateTime @default(now()) | |
@@index([projeto_id]) | |
@@map("projeto_fonte_recurso") | |
} | |
model ProjetoDocumento { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
arquivo_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
descricao String? | |
data DateTime? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_documento") | |
} | |
model ProjetoNumeroSequencial { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano Int | |
valor Int | |
@@unique([projeto_id, portfolio_id]) | |
@@unique([projeto_id]) | |
@@map("projeto_numero_sequencial") | |
} | |
model Tarefa { | |
id Int @id @default(autoincrement()) | |
tarefa_cronograma TarefaCronograma @relation(fields: [tarefa_cronograma_id], references: [id]) | |
tarefa_cronograma_id Int | |
orgao_id Int? | |
tarefa_pai_id Int? | |
tarefa_pai Tarefa? @relation("tarefa_pai", fields: [tarefa_pai_id], references: [id]) | |
filhos Tarefa[] @relation("tarefa_pai") | |
orgao Orgao? @relation(fields: [orgao_id], references: [id]) | |
tarefa String // 60 chars | |
descricao String | |
recursos String /// pessoas que executam a task, não necessariamente dentro do SMAE | |
numero Int | |
nivel Int @db.SmallInt | |
// pode calcular se o termino estiver null, | |
// mas o inicio sempre precisa existir pra fazer as contas, ou seja, se estiver null, é ignorado na | |
// parte de buscar o minimo | |
inicio_planejado DateTime? @db.Date() // data de inicio é o ponto fixo, entao se mudar a duracao no frontend, ajusta o final | |
termino_planejado DateTime? @db.Date() | |
duracao_planejado Int? | |
n_dep_inicio_planejado Int @default(0) @db.SmallInt | |
n_dep_termino_planejado Int @default(0) @db.SmallInt | |
ordem_topologica_inicio_planejado Int[] | |
ordem_topologica_termino_planejado Int[] | |
inicio_real DateTime? @db.Date() | |
termino_real DateTime? @db.Date() | |
duracao_real Int? | |
inicio_planejado_calculado Boolean @default(false) | |
termino_planejado_calculado Boolean @default(false) | |
duracao_planejado_calculado Boolean @default(false) | |
db_projecao_inicio DateTime? @map("projecao_inicio") @db.Date() | |
db_projecao_termino DateTime? @map("projecao_termino") @db.Date() | |
db_projecao_atraso Int? @map("projecao_atraso") | |
n_filhos_imediatos Int @default(0) | |
custo_estimado Float? | |
custo_real Float? | |
eh_marco Boolean @default(false) | |
// calculado no caso dos nós, mas é o % realizado de fato, no caso das folhas | |
// formula: soma (duracao prevista * nvl(percentual realizado, 0) / 100) / (soma das duracoes previstas) | |
percentual_concluido Float? | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
dependencias TarefaDependente[] @relation("dependencias") | |
ref_dependentes TarefaDependente[] @relation("ref_dependentes") | |
RiscoTarefa RiscoTarefa[] | |
AvisoEmail AvisoEmail[] | |
// Colunas de mapeamento para fases e tarefas do Workflow da transferência. | |
transferencia_fase_id Int? | |
transferencia_fase TransferenciaAndamento? @relation(fields: [transferencia_fase_id], references: [id]) | |
transferencia_tarefa_id Int? | |
transferencia_tarefa TransferenciaAndamentoTarefa? @relation(fields: [transferencia_tarefa_id], references: [id]) | |
@@unique([transferencia_fase_id]) | |
@@unique([transferencia_tarefa_id]) | |
@@index([tarefa_pai_id]) | |
@@index([tarefa_cronograma_id, removido_em]) | |
@@index([tarefa_pai_id, removido_em]) | |
@@map("tarefa") | |
} | |
// end2start -- > start_time is preceding task max(end_time) + latency (in days) | |
// start2start --> start_time is preceding task max(start_time) + + latency (in days) | |
// start2end -- > end_time is preceding task preceding task max(start_time) + latencia | |
// end2end --> end_time is preceding task preceding task max(end_time) + latencia | |
enum TarefaDependenteTipo { | |
termina_pro_inicio | |
inicia_pro_inicio | |
inicia_pro_termino | |
termina_pro_termino | |
} | |
model TarefaDependente { | |
id Int @id @default(autoincrement()) | |
tarefa_id Int | |
dependencia_tarefa_id Int | |
tipo TarefaDependenteTipo | |
latencia Int | |
tarefa Tarefa @relation("dependencias", fields: [tarefa_id], references: [id]) | |
tarefas_dependente Tarefa @relation("ref_dependentes", fields: [dependencia_tarefa_id], references: [id]) | |
@@map("tarefa_dependente") | |
} | |
model TarefaCronograma { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
transferencia_id Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
transferencia Transferencia? @relation(fields: [transferencia_id], references: [id]) | |
// calculado pelo cronograma | |
previsao_inicio DateTime? @db.Date() | |
previsao_termino DateTime? @db.Date() | |
previsao_duracao Int? | |
realizado_inicio DateTime? @db.Date() | |
realizado_termino DateTime? @db.Date() | |
realizado_duracao Int? | |
realizado_custo Float? | |
projecao_termino DateTime? @db.Date() | |
tolerancia_atraso Int @default(0) // em dias | |
em_atraso Boolean @default(false) | |
atraso Int? | |
percentual_concluido Int? // calculado | |
percentual_atraso Int? | |
status_cronograma String? | |
previsao_custo Float? | |
criado_em DateTime? | |
criado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
// data em que o sistema deve novamente calcular os atrasos automaticamente | |
tarefas_proximo_recalculo DateTime @default(now()) | |
criador Pessoa? @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
Tarefa Tarefa[] | |
AvisoEmail AvisoEmail[] | |
@@index([projeto_id]) | |
@@index([transferencia_id]) | |
@@map("tarefa_cronograma") | |
} | |
model ProjetoRisco { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
titulo String @default("(sem título)") | |
codigo Int | |
registrado_em DateTime | |
descricao String? | |
causa String? | |
consequencia String? | |
probabilidade Int? | |
impacto Int? | |
status_risco StatusRisco | |
// calculados | |
nivel Int? // probabilidade * impacto | |
grau Int? // cada nivel vai dar um grau diferente | |
resposta String? | |
RiscoTarefa RiscoTarefa[] | |
ProjetoAcompanhamentoRisco ProjetoAcompanhamentoRisco[] | |
planos_de_acao PlanoAcao[] | |
/// lista de planos de ação sem data de terminimo, populado via trigger | |
planos_de_acao_sem_dt_term Int[] | |
risco_tarefa_outros String? // String deve ser preenchida caso o user queira informar um "risco_tarefa" que seja de fora do PDM | |
removido_em DateTime? | |
removido_por Int? | |
criado_em DateTime | |
criado_por Int | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_risco") | |
} | |
// de 0 até N tarefas | |
model RiscoTarefa { | |
id Int @id @default(autoincrement()) | |
tarefa_id Int | |
tarefa Tarefa @relation(fields: [tarefa_id], references: [id]) | |
projeto_risco_id Int | |
risco ProjetoRisco @relation(fields: [projeto_risco_id], references: [id]) | |
@@index([tarefa_id]) | |
@@index([projeto_risco_id]) | |
@@map("risco_tarefa") | |
} | |
model PlanoAcao { | |
id Int @id @default(autoincrement()) | |
projeto_risco_id Int | |
projeto_risco ProjetoRisco @relation(fields: [projeto_risco_id], references: [id]) | |
contramedida String | |
prazo_contramedida DateTime? @db.Date() // data do termino previsto | |
custo Float? | |
custo_percentual Float? // custo em relacao ao projeto todo, coalesce(custo_real, custo_estimado) -- eu acho | |
medidas_de_contingencia String | |
orgao_id Int? | |
orgao Orgao? @relation(fields: [orgao_id], references: [id]) | |
responsavel String? | |
PlanoAcaoMonitoramento PlanoAcaoMonitoramento[] | |
contato_do_responsavel String? | |
data_termino DateTime? @db.Date() | |
removido_em DateTime? | |
removido_por Int? | |
criado_em DateTime | |
criado_por Int | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
@@index([projeto_risco_id]) | |
@@map("plano_acao") | |
} | |
enum StatusRisco { | |
SemInformacao | |
Aumentando | |
Estatico | |
Diminuindo | |
SobControle | |
ConcluiHdo @map("Fechado") | |
} | |
// desenhado no MER como Monitoramento_Risco | |
model PlanoAcaoMonitoramento { | |
id Int @id @default(autoincrement()) | |
plano_acao_id Int | |
plano_acao PlanoAcao @relation(fields: [plano_acao_id], references: [id]) | |
data_afericao DateTime @db.Date() | |
descricao String | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([plano_acao_id, data_afericao]) | |
@@index([plano_acao_id, ultima_revisao]) | |
@@map("plano_acao_monitoramento") | |
} | |
model ProjetoAcompanhamentoItem { | |
id Int @id @default(autoincrement()) | |
projeto_acompanhamento_id Int | |
projeto_acompanhamento ProjetoAcompanhamento @relation(fields: [projeto_acompanhamento_id], references: [id]) | |
// Campo para facilitar busca direto no banco e retorno da API. | |
// Definição do campo: ordemProjetoAcompanhamento + '.' + ordemProjetoAcompanhamentoItem | |
numero_identificador String | |
encaminhamento String? | |
responsavel String? | |
prazo_encaminhamento DateTime? @db.Date() | |
prazo_realizado DateTime? @db.Date() | |
ordem Int @db.SmallInt | |
// Campos de criação aceitam null, pois versão inicial foi feita sem estes timestamps. | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
criado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([projeto_acompanhamento_id]) | |
@@map("projeto_acompanhamento_item") | |
} | |
// durante a fase de EmExecução, a cada 15 dias eles criam esse acompanhamento | |
model ProjetoAcompanhamento { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
acompanhanmento_tipo_id Int? // TODO fixo typo | |
acompanhamento_tipo AcompanhamentoTipo? @relation(fields: [acompanhanmento_tipo_id], references: [id], onDelete: SetNull) | |
ordem Int @db.SmallInt | |
data_registro DateTime @db.Date() | |
participantes String | |
detalhamento String? | |
observacao String? | |
detalhamento_status String? | |
pontos_atencao String? | |
pauta String? | |
apresentar_no_relatorio Boolean? | |
cronograma_paralisado Boolean @default(false) | |
criado_em DateTime | |
criado_por Int | |
atualizado_em DateTime @default(now()) | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
ProjetoAcompanhamentoRisco ProjetoAcompanhamentoRisco[] | |
ProjetoAcompanhamentoItem ProjetoAcompanhamentoItem[] | |
@@index([projeto_id, data_registro]) | |
@@map("projeto_acompanhamento") | |
} | |
// de 0 até N riscos pro acompanhamento | |
model ProjetoAcompanhamentoRisco { | |
id Int @id @default(autoincrement()) | |
projeto_risco_id Int | |
projeto_risco ProjetoRisco @relation(fields: [projeto_risco_id], references: [id]) | |
projeto_acompanhamento_id Int | |
projeto_acompanhamento ProjetoAcompanhamento @relation(fields: [projeto_acompanhamento_id], references: [id]) | |
@@map("projeto_acompanhamento_risco") | |
} | |
model MetabasePermissao { | |
id Int @id @default(autoincrement()) | |
permissao String | |
configuracao Json @default("{}") @db.Json | |
metabase_url String | |
metabase_token String | |
ordem Int | |
titulo String | |
@@map("metabase_permissao") | |
} | |
model ImportacaoOrcamento { | |
id Int @id @default(autoincrement()) | |
arquivo_id Int | |
arquivo Arquivo @relation("input", fields: [arquivo_id], references: [id]) | |
saida_arquivo_id Int? | |
saida_arquivo Arquivo? @relation("output", fields: [saida_arquivo_id], references: [id]) | |
pdm_id Int? | |
pdm Pdm? @relation(fields: [pdm_id], references: [id]) | |
portfolio_id Int? | |
portfolio Portfolio? @relation(fields: [portfolio_id], references: [id]) | |
// required ter um criador, pq é required saber quem subiu os dados | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
congelado_em DateTime? @db.Timestamptz(6) | |
processado_em DateTime? @db.Timestamptz(6) | |
processado_errmsg String? | |
linhas_importadas Int? | |
linhas_recusadas Int? | |
criador Pessoa @relation(fields: [criado_por], references: [id]) | |
@@index([criado_em, pdm_id]) | |
@@index([criado_em, portfolio_id]) | |
@@map("importacao_orcamento") | |
} | |
model api_request_log { | |
created_at DateTime @default(now()) @db.Timestamp(6) | |
cf_ray String | |
request_num Int | |
ip String @db.Inet | |
response_time Int | |
response_size Int | |
req_method String | |
req_path String | |
req_host String | |
req_headers String? /// @encrypted?mode=strict | |
req_query String? /// @encrypted?mode=strict | |
req_body String? /// @encrypted?mode=strict | |
req_body_size Int? | |
res_code Int @db.SmallInt | |
created_pessoa_id Int? | |
@@unique([created_at, cf_ray, request_num]) | |
} | |
view view_api_request_log { | |
created_at DateTime @default(now()) @db.Timestamp(6) | |
cf_ray String | |
request_num Int | |
request_date DateTime @db.Date | |
req_path_clean String | |
ip String @db.Inet | |
response_time Int | |
response_size Int | |
req_method String | |
req_path String | |
req_host String | |
req_headers String? | |
req_query String? | |
req_body String? | |
req_body_size Int? | |
res_code Int @db.SmallInt | |
created_pessoa_id Int? | |
@@unique([created_at, cf_ray, request_num]) | |
} | |
// view que já faz o join dos registros da meta_orgao onde responsavel=true | |
view view_meta_pessoa_responsavel { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
} | |
view view_atividade_pessoa_responsavel { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
iniciativa_id Int | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
} | |
view view_iniciativa_pessoa_responsavel { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
} | |
// view que já faz o join o filtro onde PDM.coordenador_responsavel_cp=true | |
view view_meta_pessoa_responsavel_na_cp { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
orgao_id Int | |
} | |
// view que já faz o join da view_meta_pessoa_responsavel + tbm a pessoa tem o privilegio | |
// CadastroMeta.orcamento ou CadastroMeta.administrador_orcamento | |
view view_meta_responsavel_orcamento { | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@unique([meta_id, pessoa_id]) | |
} | |
// isso aqui estava faltando, era pra ter desde o inicio, cada login/logout | |
model PessoaSessao { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
criado_em DateTime | |
criado_ip String @db.Inet | |
removido_em DateTime? | |
removido_ip String? @db.Inet | |
PessoaSessaoAtiva PessoaSessaoAtiva[] | |
PessoaAtividadeLog PessoaAtividadeLog[] | |
LogGenerico LogGenerico[] | |
@@index([pessoa_id]) | |
@@map("pessoa_sessao") | |
} | |
// tracking de quem está "online" no sistema, não é pra saber o que fez ou não | |
model PessoaAtividadeLog { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
ip String @db.Inet | |
pessoa_sessao_id Int | |
pessoa_sessao PessoaSessao @relation(fields: [pessoa_sessao_id], references: [id]) | |
criado_em DateTime | |
@@index([criado_em]) | |
@@map("pessoa_atividade_log") | |
} | |
model GrupoPortfolio { | |
id Int @id @default(autoincrement()) | |
titulo String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
tipo_projeto TipoProjeto @default(PP) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
ProjetoGrupoPortfolio ProjetoGrupoPortfolio[] | |
PortfolioGrupoPortfolio PortfolioGrupoPortfolio[] | |
GrupoPortfolioPessoa GrupoPortfolioPessoa[] | |
@@index([titulo]) | |
@@map("grupo_portfolio") | |
} | |
model GrupoPortfolioPessoa { | |
id Int @id @default(autoincrement()) | |
grupo_portfolio_id Int | |
orgao_id Int | |
pessoa_id Int | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
grupo_portfolio GrupoPortfolio @relation(fields: [grupo_portfolio_id], references: [id]) | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@map("grupo_portfolio_pessoa") | |
} | |
model ProjetoGrupoPortfolio { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
grupo_portfolio_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
GrupoPortfolio GrupoPortfolio @relation(fields: [grupo_portfolio_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("projeto_grupo_portfolio") | |
} | |
model PortfolioGrupoPortfolio { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
grupo_portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
GrupoPortfolio GrupoPortfolio @relation(fields: [grupo_portfolio_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("portfolio_grupo_portfolio") | |
} | |
enum task_type { | |
echo | |
refresh_mv | |
refresh_meta | |
aviso_email | |
aviso_email_cronograma_tp | |
aviso_email_nota | |
refresh_transferencia | |
refresh_indicador | |
importacao_parlamentar | |
} | |
enum task_status { | |
pending | |
running | |
completed | |
errored | |
} | |
model task_queue { | |
id Int @id @default(autoincrement()) | |
type task_type | |
status task_status @default(pending) | |
params Json @default("{}") | |
output Json @default("{}") | |
pessoa_id Int? | |
criador Pessoa? @relation(fields: [pessoa_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamp(6) | |
iniciou_em DateTime? @db.Timestamp(6) | |
terminou_em DateTime? @db.Timestamp(6) | |
removido_em DateTime? @db.Timestamp(6) | |
trabalhou_em DateTime? @db.Timestamp(6) | |
erro_em DateTime? @db.Timestamp(6) | |
erro_mensagem String? | |
@@index([status]) | |
@@index([criado_em]) | |
} | |
model feature_flag { | |
id Int @id @default(autoincrement()) | |
panorama Boolean @default(false) | |
mf_v2 Boolean @default(false) | |
} | |
model MetaStatusConsolidadoCf { | |
meta_id Int @id | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
ciclo_fisico_id Int | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
fase CicloFase | |
variaveis_total Int[] | |
variaveis_preenchidas Int[] | |
variaveis_enviadas Int[] | |
variaveis_conferidas Int[] | |
variaveis_aguardando_complementacao Int[] | |
cronograma_total Int[] | |
cronograma_atraso_fim Int[] | |
cronograma_atraso_inicio Int[] | |
orcamento_total Int[] | |
orcamento_pendentes Int[] | |
orcamento_preenchido Int[] | |
analise_qualitativa_enviada Boolean? | |
risco_enviado Boolean? | |
fechamento_enviado Boolean? | |
pendente_cp Boolean | |
pendente_cp_variavel Boolean @default(false) | |
pendente_cp_cronograma Boolean @default(false) | |
orcamento_pendente Boolean @default(false) | |
atualizado_em DateTime | |
@@map("meta_status_consolidado_cf") | |
} | |
model MetaStatusAtrasoConsolidadoMes { | |
meta_id Int | |
mes DateTime @db.Date | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variaveis_atrasadas Int | |
orcamento_atrasados Int | |
@@id([meta_id, mes]) | |
@@map("meta_status_atraso_consolidado_mes") | |
} | |
model MetaStatusAtrasoVariavel { | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
meses_atrasados DateTime[] @db.Date | |
@@id([meta_id, variavel_id]) | |
@@map("meta_status_atraso_variavel") | |
} | |
view view_etapa_rel_meta { | |
etapa_id Int @id | |
meta_id Int | |
atividade_id Int? | |
iniciativa_id Int? | |
@@map("view_etapa_rel_meta") | |
} | |
view view_etapa_rel_meta_indicador { | |
etapa_id Int @id @default(autoincrement()) | |
tipo String | |
meta_id Int? | |
atividade_id Int? | |
iniciativa_id Int? | |
indicador_id Int? | |
@@map("view_etapa_rel_meta_indicador") | |
} | |
model GeoLocalizacao { | |
id Int @id @default(autoincrement()) | |
tipo GeoReferenciaTipo | |
endereco_exibicao String | |
geom_geojson Json | |
metadata Json | |
lat Float @db.DoublePrecision | |
lon Float @db.DoublePrecision | |
criado_em DateTime @default(now()) @db.Timestamp(6) | |
GeoEnderecoCamada GeoLocalizacaoCamada[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
@@map("geo_localizacao") | |
} | |
model GeoCamadaConfig { | |
id Int @id @default(autoincrement()) | |
tipo_camada String // eg: distrito_municipal | |
chave_camada String // eg: pro caso do distrito_municipal=cd_identificador_subprefeitura | |
titulo_camada String // eg: pro caso do distrito_municipal=nm_distrito_municipal | |
descricao String @default("") | |
nivel_regionalizacao Int? | |
cor String? | |
simplificar_em Float? @db.DoublePrecision | |
GeoCamada GeoCamada[] | |
@@unique([tipo_camada]) | |
@@map("geo_camada_config") | |
} | |
model GeoCamada { | |
id Int @id @default(autoincrement()) | |
tipo_camada String | |
codigo String | |
titulo String | |
nivel_regionalizacao Int? | |
geo_camada_config Int | |
config GeoCamadaConfig @relation(fields: [geo_camada_config], references: [id]) | |
geom_geojson_original Json /// versao original | |
geom_geojson Json /// versão simplificada | |
GeoCamadaRegiao GeoCamadaRegiao[] | |
GeoEnderecoCamada GeoLocalizacaoCamada[] | |
@@unique([tipo_camada, codigo]) | |
@@map("geo_camada") | |
} | |
model GeoCamadaRegiao { | |
id Int @id @default(autoincrement()) | |
regiao_id Int | |
geo_camada_id Int | |
geo_camada GeoCamada @relation(fields: [geo_camada_id], references: [id]) | |
regiao Regiao @relation(fields: [regiao_id], references: [id]) | |
@@map("geo_camada_regiao") | |
} | |
model GeoLocalizacaoCamada { | |
id Int @id @default(autoincrement()) | |
geo_localizacao_id Int | |
geo_camada_id Int | |
geo_localizacao GeoLocalizacao @relation(fields: [geo_localizacao_id], references: [id]) | |
geo_camada GeoCamada @relation(fields: [geo_camada_id], references: [id]) | |
@@map("geo_localizacao_camada") | |
} | |
enum GeoReferenciaTipo { | |
Endereco | |
} | |
model GeoLocalizacaoReferencia { | |
id Int @id @default(autoincrement()) | |
geo_localizacao_id Int | |
criador_por Int? | |
removido_por Int? | |
tipo GeoReferenciaTipo | |
projeto_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
meta_id Int? | |
etapa_id Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
etapa Etapa? @relation(fields: [etapa_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamp(6) | |
removido_em DateTime? @db.Timestamp(6) | |
geo_localizacao GeoLocalizacao @relation(fields: [geo_localizacao_id], references: [id]) | |
criador Pessoa? @relation("criador", fields: [criador_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@map("geo_localizacao_referencia") | |
} | |
model GrupoPainelExterno { | |
id Int @id @default(autoincrement()) | |
titulo String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
modulo_sistema ModuloSistema @default(SMAE) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
GrupoPainelExternoPessoa GrupoPainelExternoPessoa[] | |
PainelExternoGrupoPainelExterno PainelExternoGrupoPainelExterno[] | |
@@index([titulo]) | |
@@map("grupo_painel_externo") | |
} | |
model GrupoPainelExternoPessoa { | |
id Int @id @default(autoincrement()) | |
grupo_painel_externo_id Int | |
orgao_id Int | |
pessoa_id Int | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
grupo_painel_externo GrupoPainelExterno @relation(fields: [grupo_painel_externo_id], references: [id]) | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@map("grupo_painel_externo_pessoa") | |
} | |
model PainelExternoGrupoPainelExterno { | |
id Int @id @default(autoincrement()) | |
painel_externo_id Int | |
grupo_painel_externo_id Int | |
PainelExterno PainelExterno @relation(fields: [painel_externo_id], references: [id]) | |
GrupoPainelExterno GrupoPainelExterno @relation(fields: [grupo_painel_externo_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("painel_externo_grupo_painel_externo") | |
} | |
model PainelExterno { | |
id Int @id @default(autoincrement()) | |
titulo String | |
descricao String? | |
modulo_sistema ModuloSistema @default(SMAE) | |
link String | |
link_dominio String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
PainelExternoGrupoPainelExterno PainelExternoGrupoPainelExterno[] | |
@@index([removido_em]) | |
@@map("painel_externo") | |
} | |
model Partido { | |
id Int @id @default(autoincrement()) | |
nome String | |
sigla String | |
numero Int | |
observacao String? | |
fundacao DateTime? @db.Timestamptz(6) | |
encerramento DateTime? @db.Timestamptz(6) | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
mandatos_candidatura ParlamentarMandato[] @relation("candidatura") | |
mandatos_atual ParlamentarMandato[] @relation("atual") | |
bancadas BancadaPartido[] | |
transferencias Transferencia[] | |
@@map("partido") | |
} | |
model Bancada { | |
id Int @id @default(autoincrement()) | |
nome String | |
sigla String | |
descricao String? | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
partidos BancadaPartido[] | |
@@map("bancada") | |
} | |
model BancadaPartido { | |
id Int @id @default(autoincrement()) | |
bancada_id Int | |
bancada Bancada @relation(fields: [bancada_id], references: [id]) | |
partido_id Int | |
partido Partido @relation(fields: [partido_id], references: [id]) | |
@@unique([bancada_id, partido_id]) | |
@@map("bancada_partido") | |
} | |
enum ModuloSistema { | |
SMAE | |
PDM | |
CasaCivil | |
Projetos | |
PlanoSetorial | |
MDO | |
} | |
enum EleicaoTipo { | |
Municipal | |
Estadual | |
} | |
model Eleicao { | |
id Int @id @default(autoincrement()) | |
tipo EleicaoTipo | |
ano Int | |
atual_para_mandatos Boolean | |
mandatos ParlamentarMandato[] | |
comparecimentos EleicaoComparecimento[] | |
@@unique([tipo, ano]) | |
@@map("eleicao") | |
} | |
enum DadosEleicaoNivel { | |
Estado | |
Municipio | |
Subprefeitura | |
} | |
model EleicaoComparecimento { | |
id Int @id @default(autoincrement()) | |
eleicao_id Int | |
eleicao Eleicao @relation(fields: [eleicao_id], references: [id]) | |
// Este enum facilitará muito a legibilidade do código | |
// Uma vez que bastará verificar por ele ao invés de verificar pelos 3 IDs (estado, municipio e subprefeitura). | |
nivel DadosEleicaoNivel | |
valor Int | |
regiao_id Int | |
regiao Regiao @relation(fields: [regiao_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("eleicao_comparecimento") | |
} | |
model Parlamentar { | |
id Int @id @default(autoincrement()) | |
nome String | |
nome_popular String | |
nascimento DateTime? @db.Date() | |
telefone String? | |
email String? | |
em_atividade Boolean @default(false) | |
uf_nascimento ParlamentarUF? | |
foto_upload_id Int? | |
foto Arquivo? @relation(fields: [foto_upload_id], references: [id]) | |
cargo_mais_recente ParlamentarCargo? | |
partido_mais_recente String? | |
mandatos ParlamentarMandato[] | |
equipe ParlamentarEquipe[] | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
transferencias Transferencia[] | |
view_ranking_transferencias ViewRankingTransferenciaParlamentar[] | |
@@map("parlamentar") | |
} | |
enum ParlamentarCargo { | |
Senador | |
DeputadoEstadual | |
DeputadoFederal | |
Vereador | |
} | |
enum ParlamentarSuplente { | |
PrimeiroSuplente | |
SegundoSuplente | |
TerceiroSuplente | |
QuartoSuplente | |
QuintoSuplente | |
} | |
enum ParlamentarUF { | |
AC | |
AL | |
AP | |
AM | |
BA | |
CE | |
DF | |
ES | |
GO | |
MA | |
MT | |
MS | |
MG | |
PA | |
PB | |
PR | |
PE | |
PI | |
RJ | |
RN | |
RS | |
RO | |
RR | |
SC | |
SP | |
SE | |
TO | |
} | |
model ParlamentarMandato { | |
id Int @id @default(autoincrement()) | |
parlamentar_id Int | |
parlamentar Parlamentar @relation(fields: [parlamentar_id], references: [id]) | |
eleicao_id Int | |
eleicao Eleicao @relation(fields: [eleicao_id], references: [id]) | |
partido_candidatura_id Int | |
partido_candidatura Partido @relation("candidatura", fields: [partido_candidatura_id], references: [id]) | |
partido_atual_id Int | |
partido_atual Partido @relation("atual", fields: [partido_atual_id], references: [id]) | |
atuacao String? | |
biografia String? | |
telefone String? | |
email String? | |
gabinete String? | |
eleito Boolean | |
cargo ParlamentarCargo | |
uf ParlamentarUF | |
suplencia ParlamentarSuplente? | |
endereco String? | |
votos_estado BigInt? | |
votos_capital BigInt? | |
votos_interior BigInt? | |
// Nas bases, como por exemplo do TSE, cada candidato tem um código. | |
codigo_identificador String? | |
mandato_principal_id Int? | |
mandato_principal ParlamentarMandato? @relation("Suplentes", fields: [mandato_principal_id], references: [id]) | |
suplentes ParlamentarMandato[] @relation("Suplentes") | |
representatividade MandatoRepresentatividade[] | |
equipe ParlamentarEquipe[] | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("parlamentar_mandato") | |
} | |
enum ParlamentarEquipeTipo { | |
Assessor | |
Contato | |
} | |
model ParlamentarEquipe { | |
id Int @id @default(autoincrement()) | |
parlamentar_id Int | |
parlamentar Parlamentar @relation(fields: [parlamentar_id], references: [id]) | |
mandato_id Int? | |
mandato ParlamentarMandato? @relation(fields: [mandato_id], references: [id]) | |
tipo ParlamentarEquipeTipo | |
nome String | |
telefone String | |
email String | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("parlamentar_equipe") | |
} | |
enum MunicipioTipo { | |
Capital | |
Interior | |
} | |
model MandatoRepresentatividade { | |
id Int @id @default(autoincrement()) | |
regiao_id Int | |
regiao Regiao @relation(fields: [regiao_id], references: [id]) | |
mandato_id Int | |
mandato ParlamentarMandato @relation(fields: [mandato_id], references: [id]) | |
nivel DadosEleicaoNivel | |
municipio_tipo MunicipioTipo? | |
numero_votos Int | |
ranking Int? | |
// Valor será calculado com base em rows da tabela EleicaoComparecimento | |
pct_participacao Float? @db.DoublePrecision | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("mandato_representatividade") | |
} | |
enum TransferenciaTipoCategoria { | |
Discricionaria | |
Impositiva | |
} | |
enum TransferenciaTipoEsfera { | |
Federal | |
Estadual | |
} | |
model TransferenciaTipo { | |
id Int @id @default(autoincrement()) | |
nome String | |
categoria TransferenciaTipoCategoria | |
esfera TransferenciaTipoEsfera | |
transferencias Transferencia[] | |
workflows Workflow[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
statuses_distribuicao TransferenciaTipoDistribuicaoStatus[] | |
@@map("transferencia_tipo") | |
} | |
enum TransferenciaInterface { | |
TransfereGov | |
SemPapel | |
} | |
model Transferencia { | |
id Int @id @default(autoincrement()) | |
tipo_id Int | |
tipo TransferenciaTipo @relation(fields: [tipo_id], references: [id]) | |
orgao_concedente_id Int | |
orgao_concedente Orgao @relation("orgao_concedente", fields: [orgao_concedente_id], references: [id]) | |
secretaria_concedente_id Int? | |
secretaria_concedente Orgao? @relation("secretaria_concedente", fields: [secretaria_concedente_id], references: [id]) | |
// secretaria_concedente por agora é uma string livre. Mas existe a possibilidade de virar um relacionamento. | |
// Portanto, mantendo as cols de rel. | |
secretaria_concedente_str String? | |
parlamentar_id Int? | |
parlamentar Parlamentar? @relation(fields: [parlamentar_id], references: [id]) | |
partido_id Int? | |
partido Partido? @relation(fields: [partido_id], references: [id]) | |
workflow_id Int? | |
workflow Workflow? @relation(fields: [workflow_id], references: [id]) | |
objeto String | |
interface TransferenciaInterface? | |
identificador String | |
esfera TransferenciaTipoEsfera | |
clausula_suspensiva Boolean? | |
clausula_suspensiva_vencimento DateTime? @db.Date() | |
empenho Boolean? | |
pendente_preenchimento_valores Boolean @default(true) | |
valor Decimal? @default(0) @db.Decimal(15, 2) | |
valor_total Decimal? @default(0) @db.Decimal(15, 2) | |
valor_contrapartida Decimal? @default(0) @db.Decimal(15, 2) | |
cargo ParlamentarCargo? | |
ano Int? | |
emenda String? | |
dotacao String? | |
demanda String? | |
programa String? | |
banco_fim String? | |
normativa String? | |
conta_fim String? | |
agencia_fim String? | |
observacoes String? | |
detalhamento String? | |
banco_aceite String? | |
conta_aceite String? | |
nome_programa String? | |
agencia_aceite String? | |
emenda_unitaria String? | |
gestor_contrato String? | |
ordenador_despesa String? | |
numero_identificacao String? | |
vetores_busca Unsupported("tsvector")? | |
nivel_maximo_tarefa Int @default(5) @db.SmallInt | |
// Cols para facilitar processamento de dashboard. | |
workflow_finalizado Boolean @default(false) | |
workflow_etapa_atual_id Int? | |
workflow_etapa_atual WorkflowEtapa? @relation(fields: [workflow_etapa_atual_id], references: [id]) | |
workflow_fase_atual_id Int? | |
workflow_fase_atual WorkflowFase? @relation(fields: [workflow_fase_atual_id], references: [id]) | |
prejudicada Boolean @default(false) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
anexos TransferenciaAnexo[] | |
diretorios Diretorio[] | |
TarefaCronograma TarefaCronograma[] | |
distribuicao_recursos DistribuicaoRecurso[] | |
andamentoWorkflow TransferenciaAndamento[] | |
TransferenciaStatusConsolidado TransferenciaStatusConsolidado[] | |
ViewNotasTransferencias ViewNotasTransferencias[] | |
ViewDashboardAnalise ViewTransferenciaAnalise[] | |
@@map("transferencia") | |
} | |
model TransferenciaAnexo { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
arquivo_id Int | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
descricao String? | |
data DateTime? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([transferencia_id]) | |
@@map("transferencia_anexo") | |
} | |
model DistribuicaoRecurso { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
orgao_gestor_id Int | |
orgao_gestor Orgao @relation(fields: [orgao_gestor_id], references: [id]) | |
nome String? | |
objeto String | |
valor Decimal @default(0) @db.Decimal(15, 2) | |
valor_total Decimal @default(0) @db.Decimal(15, 2) | |
valor_contrapartida Decimal @default(0) @db.Decimal(15, 2) | |
empenho Boolean | |
data_empenho DateTime? @db.Date() | |
programa_orcamentario_estadual String? | |
programa_orcamentario_municipal String? | |
dotacao String? | |
proposta String? | |
contrato String? | |
convenio String? | |
assinatura_termo_aceite DateTime? @db.Date() | |
assinatura_municipio DateTime? @db.Date() | |
assinatura_estado DateTime? @db.Date() | |
vigencia DateTime? @db.Date() | |
conclusao_suspensiva DateTime? @db.Date() | |
// caso seja criado um aditamento, será criada uma nota com um aviso por email na transferência | |
// e toda vez que a vigência for alterada, será alterada a data de vigência do aviso e data da nota | |
nota_id Int? | |
nota Nota? @relation(fields: [nota_id], references: [id]) | |
aviso_email_id Int? | |
aviso_email AvisoEmail? @relation(fields: [aviso_email_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
registros_sei DistribuicaoRecursoSei[] | |
aditamentos DistribuicaoRecursoAditamento[] | |
@@map("distribuicao_recurso") | |
} | |
model DistribuicaoRecursoAditamento { | |
id Int @id @default(autoincrement()) | |
distribuicao_recurso_id Int | |
distribuicao_recurso DistribuicaoRecurso @relation(fields: [distribuicao_recurso_id], references: [id]) | |
data_vigencia DateTime @db.Date() | |
data_vigencia_corrente DateTime @db.Date() | |
justificativa String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criador Pessoa @relation(fields: [criado_por], references: [id]) | |
@@map("distribuicao_recurso_aditamento") | |
} | |
model DistribuicaoRecursoSei { | |
id Int @id @default(autoincrement()) | |
distribuicao_recurso_id Int | |
distribuicao_recurso DistribuicaoRecurso @relation(fields: [distribuicao_recurso_id], references: [id]) | |
nome String? | |
processo_sei String | |
registro_sei_info Json @default("{}") | |
registro_sei_errmsg String? | |
criado_em DateTime? | |
criado_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
@@map("distribuicao_recurso_sei") | |
} | |
model Workflow { | |
id Int @id @default(autoincrement()) | |
transferencia_tipo_id Int | |
transferencia_tipo TransferenciaTipo @relation(fields: [transferencia_tipo_id], references: [id]) | |
nome String | |
ativo Boolean | |
inicio DateTime @db.Date() | |
termino DateTime? @db.Date() | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
etapasFluxo Fluxo[] | |
transferencias Transferencia[] | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([transferencia_tipo_id, ativo]) | |
@@map("workflow") | |
} | |
model WorkflowEtapa { | |
id Int @id @default(autoincrement()) | |
etapa_fluxo String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
fluxoSaida Fluxo[] @relation("EtapaSaida") | |
fluxoDestino Fluxo[] @relation("EtapaDestino") | |
transferenciaAndamento TransferenciaAndamento[] | |
// Esta relação fica na table de transferências para facilitar processamento de dashboard. | |
transferencias Transferencia[] | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_etapa") | |
} | |
model WorkflowFase { | |
id Int @id @default(autoincrement()) | |
fase String | |
fluxos FluxoFase[] | |
transferenciaAndamento TransferenciaAndamento[] | |
// Esta relação fica na table de transferências para facilitar processamento de dashboard. | |
transferencias Transferencia[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_fase") | |
} | |
enum WorkflowSituacaoTipo { | |
NaoIniciado | |
EmAndamento | |
Suspenso | |
Cancelado | |
ConcluidoComSucesso | |
EncerradoSemSucesso | |
Terminal | |
} | |
model WorkflowSituacao { | |
id Int @id @default(autoincrement()) | |
situacao String | |
tipo_situacao WorkflowSituacaoTipo | |
fasesWorkflow FluxoFaseSituacao[] | |
transferenciaAndamento TransferenciaAndamento[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_situacao") | |
} | |
model WorkflowTarefa { | |
id Int @id @default(autoincrement()) | |
tarefa_fluxo String | |
fluxoTarefas FluxoTarefa[] | |
transferenciaAndamentoTarefa TransferenciaAndamentoTarefa[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_tarefa") | |
} | |
model Fluxo { | |
id Int @id @default(autoincrement()) | |
workflow_id Int | |
workflow Workflow @relation(fields: [workflow_id], references: [id]) | |
fluxo_etapa_de_id Int | |
fluxo_etapa_de WorkflowEtapa @relation("EtapaSaida", fields: [fluxo_etapa_de_id], references: [id]) | |
fluxo_etapa_para_id Int | |
fluxo_etapa_para WorkflowEtapa @relation("EtapaDestino", fields: [fluxo_etapa_para_id], references: [id]) | |
ordem Int | |
fases FluxoFase[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([workflow_id, fluxo_etapa_de_id, fluxo_etapa_para_id]) | |
@@map("fluxo") | |
} | |
enum WorkflowResponsabilidade { | |
Propria | |
OutroOrgao | |
} | |
model FluxoFase { | |
id Int @id @default(autoincrement()) | |
fluxo_id Int | |
fluxo Fluxo @relation(fields: [fluxo_id], references: [id]) | |
fase_id Int | |
fase WorkflowFase @relation(fields: [fase_id], references: [id]) | |
ordem Int | |
responsabilidade WorkflowResponsabilidade | |
tarefas FluxoTarefa[] | |
situacoes FluxoFaseSituacao[] | |
marco Boolean @default(false) | |
duracao Int? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([fluxo_id, fase_id]) | |
@@map("fluxo_fase") | |
} | |
model FluxoFaseSituacao { | |
id Int @id @default(autoincrement()) | |
fluxo_fase_id Int | |
fluxo_fase FluxoFase @relation(fields: [fluxo_fase_id], references: [id]) | |
situacao_id Int | |
situacao WorkflowSituacao @relation(fields: [situacao_id], references: [id]) | |
@@map("fluxo_fase_situacao") | |
} | |
model FluxoTarefa { | |
id Int @id @default(autoincrement()) | |
workflow_tarefa_id Int | |
workflow_tarefa WorkflowTarefa @relation(fields: [workflow_tarefa_id], references: [id]) | |
fluxo_fase_id Int | |
fluxo_fase FluxoFase @relation(fields: [fluxo_fase_id], references: [id]) | |
responsabilidade WorkflowResponsabilidade | |
ordem Int | |
marco Boolean @default(false) | |
duracao Int? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([workflow_tarefa_id, fluxo_fase_id]) | |
@@map("fluxo_tarefa") | |
} | |
model TransferenciaAndamento { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
workflow_etapa_id Int | |
workflow_etapa WorkflowEtapa @relation(fields: [workflow_etapa_id], references: [id]) | |
workflow_fase_id Int | |
workflow_fase WorkflowFase @relation(fields: [workflow_fase_id], references: [id]) | |
workflow_situacao_id Int? | |
workflow_situacao WorkflowSituacao? @relation(fields: [workflow_situacao_id], references: [id]) | |
orgao_responsavel_id Int? | |
orgao_responsavel Orgao? @relation(fields: [orgao_responsavel_id], references: [id]) | |
pessoa_responsavel_id Int? | |
pessoa_responsavel Pessoa? @relation(fields: [pessoa_responsavel_id], references: [id]) | |
data_inicio DateTime? @db.Date() | |
data_termino DateTime? @db.Date() | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
tarefas TransferenciaAndamentoTarefa[] | |
tarefaEspelhada Tarefa[] | |
@@index([transferencia_id, workflow_etapa_id, workflow_fase_id]) | |
@@map("transferencia_andamento") | |
} | |
model TransferenciaAndamentoTarefa { | |
id Int @id @default(autoincrement()) | |
transferencia_andamento_id Int | |
transferencia_andamento TransferenciaAndamento @relation(fields: [transferencia_andamento_id], references: [id]) | |
workflow_tarefa_fluxo_id Int | |
workflow_tarefa WorkflowTarefa @relation(fields: [workflow_tarefa_fluxo_id], references: [id]) | |
orgao_responsavel_id Int? | |
orgao_responsavel Orgao? @relation(fields: [orgao_responsavel_id], references: [id]) | |
feito Boolean @default(false) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
tarefaEspelhada Tarefa[] | |
@@index([transferencia_andamento_id, workflow_tarefa_fluxo_id]) | |
@@map("transferencia_andamento_tarefa") | |
} | |
enum TipoAviso { | |
CronogramaTerminoPlanejado | |
Nota | |
} | |
enum AvisoPeriodo { | |
Dias | |
Semanas | |
Meses | |
Anos | |
} | |
model AvisoEmail { | |
id Int @id @default(autoincrement()) | |
tipo TipoAviso | |
tarefa_cronograma_id Int? | |
tarefa_id Int? | |
nota_id Int? | |
tarefa_cronograma TarefaCronograma? @relation(fields: [tarefa_cronograma_id], references: [id]) | |
tarefa Tarefa? @relation(fields: [tarefa_id], references: [id]) | |
nota Nota? @relation(fields: [nota_id], references: [id]) | |
com_copia String[] | |
numero Int | |
numero_periodo AvisoPeriodo | |
recorrencia_dias Int @default(0) | |
ativo Boolean | |
executou_em DateTime @default(now()) @db.Date | |
executou_em_ts DateTime @default(now()) | |
ultimo_envio_em DateTime? | |
AvisoEmailDisparos AvisoEmailDisparos[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
DistribuicaoRecurso DistribuicaoRecurso[] | |
@@map("aviso_email") | |
} | |
model AvisoEmailDisparos { | |
id Int @id @default(autoincrement()) | |
para String | |
com_copia String[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
aviso_email_id Int | |
aviso_email AvisoEmail @relation(fields: [aviso_email_id], references: [id]) | |
emaildb_queue_id String @db.Uuid | |
emaildb_queue EmaildbQueue @relation(fields: [emaildb_queue_id], references: [id]) | |
@@map("aviso_email_disparos") | |
} | |
model CronogramaTerminoPlanejadoConfig { | |
id Int @id @default(autoincrement()) | |
modulo_sistema ModuloSistema @unique | |
para String | |
texto_inicial String | |
texto_final String | |
assunto_global String | |
assunto_orgao String | |
@@map("cronograma_termino_planejado_config") | |
} | |
model BlocoNota { | |
id Int @id @default(autoincrement()) | |
bloco String | |
Nota Nota[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
ViewNotaComOrdem ViewNotas[] | |
ViewNotasTransferencias ViewNotasTransferencias[] | |
@@index([bloco]) | |
@@map("bloco_nota") | |
} | |
model TipoNota { | |
id Int @id @default(autoincrement()) | |
codigo String @unique | |
permite_revisao Boolean | |
permite_enderecamento Boolean | |
permite_email Boolean | |
permite_replica Boolean | |
visivel_resp_orgao Boolean | |
eh_publico Boolean | |
autogerenciavel Boolean @default(false) | |
TipoNotaModulo TipoNotaModulo[] | |
Nota Nota[] | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizado_em DateTime? @db.Timestamptz(6) | |
ViewNotaComOrdem ViewNotas[] | |
@@map("tipo_nota") | |
} | |
model TipoNotaModulo { | |
id Int @id @default(autoincrement()) | |
modulo_sistema ModuloSistema | |
tipo_nota_id Int | |
tipo_nota TipoNota @relation(fields: [tipo_nota_id], references: [id]) | |
@@unique([modulo_sistema, tipo_nota_id]) | |
@@map("tipo_nota_modulo") | |
} | |
enum StatusNota { | |
Programado | |
Em_Curso @map("Em Curso") | |
Suspenso | |
Encerrado | |
Cancelado | |
} | |
// disparo email talvez seja com o aviso, seria o ideal | |
model Nota { | |
id Int @id @default(autoincrement()) | |
bloco_nota_id Int | |
tipo_nota_id Int | |
data_nota DateTime @db.Date | |
orgao_responsavel_id Int | |
pessoa_responsavel_id Int | |
nota String | |
rever_em DateTime? @db.Date | |
dispara_email Boolean @default(false) | |
status StatusNota | |
n_enderecamentos Int @default(0) @map("n_encaminhamentos") | |
n_repostas Int @default(0) | |
ultima_resposta DateTime? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
tipo_nota TipoNota @relation(fields: [tipo_nota_id], references: [id]) | |
bloco_nota BlocoNota @relation(fields: [bloco_nota_id], references: [id]) | |
orgao_responsavel Orgao @relation(fields: [orgao_responsavel_id], references: [id]) | |
pessoa_responsavel Pessoa @relation("Resp", fields: [pessoa_responsavel_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
NotaEnderecamento NotaEnderecamento[] | |
NotaEnderecamentoResposta NotaEnderecamentoResposta[] | |
revisoes NotaRevisao[] | |
AvisoEmail AvisoEmail[] | |
ViewNotasTransferencias ViewNotasTransferencias[] | |
DistribuicaoRecurso DistribuicaoRecurso[] | |
@@index([status, removido_em]) | |
@@map("nota") | |
} | |
view ViewNotas { | |
id Int @id @default(autoincrement()) | |
bloco_nota_id Int | |
tipo_nota_id Int | |
data_nota DateTime @db.Date | |
orgao_responsavel_id Int | |
pessoa_responsavel_id Int | |
nota String | |
rever_em DateTime? @db.Date | |
dispara_email Boolean @default(false) | |
status StatusNota | |
n_enderecamentos Int @default(0) | |
n_repostas Int @default(0) | |
ultima_resposta DateTime? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
data_ordenacao DateTime | |
tipo_nota TipoNota @relation(fields: [tipo_nota_id], references: [id]) | |
bloco_nota BlocoNota @relation(fields: [bloco_nota_id], references: [id]) | |
orgao_responsavel Orgao @relation(fields: [orgao_responsavel_id], references: [id]) | |
pessoa_responsavel Pessoa @relation("Resp", fields: [pessoa_responsavel_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("view_notas") | |
} | |
view ViewNotasTransferencias { | |
id Int @id @default(autoincrement()) | |
bloco_nota_id Int | |
data_nota DateTime @db.Date | |
nota String | |
status StatusNota | |
removido_em DateTime? @db.Timestamptz(6) | |
data_ordenacao DateTime | |
transferencia_id Int | |
transferencia_identificador String | |
notaReferencia Nota @relation(fields: [id], references: [id]) | |
bloco_nota BlocoNota @relation(fields: [bloco_nota_id], references: [id]) | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
@@map("view_notas_transferencias") | |
} | |
model NotaRevisao { | |
id Int @id @default(autoincrement()) | |
nota_id Int | |
nota String | |
nota_fk Nota @relation(fields: [nota_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
@@map("nota_revisao") | |
} | |
model NotaEnderecamento { | |
id Int @id @default(autoincrement()) | |
nota_id Int | |
// pra essa tabela fazer sentido, um dos dois precisa estar preenchido | |
// se não ta endereçado pra /dev/null | |
orgao_enderecado_id Int | |
pessoa_enderecado_id Int? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
nota Nota @relation(fields: [nota_id], references: [id]) | |
orgao_enderecado Orgao? @relation(fields: [orgao_enderecado_id], references: [id]) | |
pessoa_enderecado Pessoa? @relation("Enderecado", fields: [pessoa_enderecado_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
NotaEnderecamentoResposta NotaEnderecamentoResposta[] | |
@@index([nota_id]) | |
@@map("nota_enderecamento") | |
} | |
model NotaEnderecamentoResposta { | |
id Int @id @default(autoincrement()) | |
nota_id Int | |
nota_enderecamento_id Int | |
resposta String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
nota Nota @relation(fields: [nota_id], references: [id]) | |
nota_enderecamento NotaEnderecamento @relation(fields: [nota_enderecamento_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("nota_enderecamento_resposta") | |
} | |
model TransferenciaStatusConsolidado { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
situacao String | |
orgaos_envolvidos Int[] | |
data DateTime? @db.Date | |
data_origem String | |
atualizado_em DateTime | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
@@map("transferencia_status_consolidado") | |
} | |
view ViewTransferenciaAnalise { | |
transferencia_id Int @id | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
workflow_finalizado Boolean | |
ano Int | |
partido_id Int? | |
workflow_etapa_atual_id Int? | |
workflow_fase_atual_id Int? | |
parlamentar_id Int? | |
valor_total Decimal | |
distribuicao_orgao_id Int? | |
distribuicao_valor_total Decimal? | |
prejudicada Boolean @default(false) | |
esfera TransferenciaTipoEsfera | |
@@map("view_transferencia_analise") | |
} | |
view ViewRankingTransferenciaParlamentar { | |
parlamentar_id Int @id | |
parlamentar Parlamentar @relation(fields: [parlamentar_id], references: [id]) | |
nome_popular String | |
parlamentar_foto_id Int? | |
count Int | |
valor Decimal | |
@@map("view_ranking_transferencia_parlamentar") | |
} | |
model GrupoTematico { | |
id Int @id @default(autoincrement()) | |
nome String | |
programa_habitacional Boolean @default(false) | |
unidades_habitacionais Boolean @default(false) | |
familias_beneficiadas Boolean @default(false) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
projetos ProjetoGrupoTematico[] | |
Projeto Projeto[] | |
@@map("grupo_tematico") | |
} | |
model TipoIntervencao { | |
id Int @id @default(autoincrement()) | |
nome String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
projetos ProjetoTipoIntervencao[] | |
Projeto Projeto[] | |
@@map("tipo_intervencao") | |
} | |
model Equipamento { | |
id Int @id @default(autoincrement()) | |
nome String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
projetos ProjetoEquipamento[] | |
Projeto Projeto[] | |
@@map("equipamento") | |
} | |
model ProjetoEquipamento { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
equipamento_id Int | |
equipamento Equipamento @relation(fields: [equipamento_id], references: [id]) | |
@@unique([projeto_id, equipamento_id]) | |
@@map("projeto_equipamento") | |
} | |
model ProjetoTipoIntervencao { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
tipo_intervencao_id Int | |
tipo_intervencao TipoIntervencao @relation(fields: [tipo_intervencao_id], references: [id]) | |
@@unique([projeto_id, tipo_intervencao_id]) | |
@@map("projeto_tipo_intervencao") | |
} | |
model ProjetoGrupoTematico { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
grupo_tematico_id Int | |
grupo_tematico GrupoTematico @relation(fields: [grupo_tematico_id], references: [id]) | |
@@unique([projeto_id, grupo_tematico_id]) | |
@@map("projeto_grupo_tematico") | |
} | |
enum DistribuicaoStatusTipo { | |
Registrada | |
Declinada | |
Redirecionada | |
Cancelada | |
ImpedidaTecnicamente | |
Finalizada | |
} | |
model DistribuicaoStatusBase { | |
id Int @id @default(autoincrement()) | |
nome String | |
tipo DistribuicaoStatusTipo | |
valor_distribuicao_contabilizado Boolean | |
@@unique([nome, tipo]) | |
@@map("distribuicao_status_base") | |
} | |
model TransferenciaTipoDistribuicaoStatus { | |
id Int @id @default(autoincrement()) | |
transferencia_tipo_id Int | |
transferencia_tipo TransferenciaTipo @relation(fields: [transferencia_tipo_id], references: [id]) | |
nome String | |
tipo DistribuicaoStatusTipo | |
valor_distribuicao_contabilizado Boolean | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("transferencia_tipo_distribuicao_status") | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
generator client { | |
provider = "prisma-client-js" | |
previewFeatures = ["views", "relationJoins"] | |
} | |
datasource db { | |
provider = "postgresql" | |
url = env("DATABASE_URL") | |
} | |
model Pessoa { | |
id Int @id @default(autoincrement()) | |
email String @unique | |
senha String | |
nome_exibicao String | |
nome_completo String | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int? | |
qtde_senha_invalida Int @default(0) | |
senha_atualizada_em DateTime? @default(now()) @db.Timestamptz(6) | |
senha_bloqueada Boolean @default(false) | |
senha_bloqueada_em DateTime? @default(now()) @db.Timestamptz(6) | |
desativado Boolean @default(false) | |
desativado_em DateTime? | |
desativado_por Int? | |
desativado_motivo String? | |
pessoa_fisica_id Int? | |
atualizador Pessoa? @relation("AtualizadorPessoas", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("CriadorPessoas", fields: [criado_por], references: [id]) | |
desativador Pessoa? @relation("DesativadorPessoas", fields: [desativado_por], references: [id]) | |
pessoa_fisica PessoaFisica? @relation(fields: [pessoa_fisica_id], references: [id]) | |
PessoasQueAtualizei Pessoa[] @relation("AtualizadorPessoas") | |
PessoasQueCriei Pessoa[] @relation("CriadorPessoas") | |
PessoasQueDesativei Pessoa[] @relation("DesativadorPessoas") | |
PessoaPerfil PessoaPerfil[] | |
PessoaSessoesAtivas PessoaSessaoAtiva[] | |
OrgaoQueCriei Orgao[] @relation("Criador") | |
OrgaoQueRemovi Orgao[] @relation("Removedor") | |
OrgaoQueAtualizei Orgao[] @relation("Atualizador") | |
TipoOrgaoQueCriei TipoOrgao[] @relation("Criador") | |
TipoOrgaoQueRemovi TipoOrgao[] @relation("Removedor") | |
TipoOrgaoQueAtualizei TipoOrgao[] @relation("Atualizador") | |
PerfilAcessoQueCriei PerfilAcesso[] @relation("Criador") | |
PerfilAcessoQueRemovi PerfilAcesso[] @relation("Removedor") | |
PerfilAcessoQueAtualizei PerfilAcesso[] @relation("Atualizador") | |
OdsQueCriei Ods[] @relation("Criador") | |
OdsQueRemovi Ods[] @relation("Removedor") | |
OdsQueAtualizei Ods[] @relation("Atualizador") | |
SubTemaQueCriei SubTema[] @relation("Criador") | |
SubTemaQueRemovi SubTema[] @relation("Removedor") | |
SubTemaQueAtualizei SubTema[] @relation("Atualizador") | |
processoSeiQueCriei ProjetoRegistroSei[] @relation("Criador") | |
processoSeiQueRemovi ProjetoRegistroSei[] @relation("Removedor") | |
processoSeiQueAtualizei ProjetoRegistroSei[] @relation("Atualizador") | |
EixoQueCriei MacroTema[] @relation("Criador") | |
EixoQueRemovi MacroTema[] @relation("Removedor") | |
EixoQueAtualizei MacroTema[] @relation("Atualizador") | |
PDMQueCriei Pdm[] @relation("Criador") | |
PDMQueDesativei Pdm[] @relation("Desativador") | |
PDMQueAtualizei Pdm[] @relation("Atualizador") | |
PDMQueRemovi Pdm[] @relation("Removedor") | |
FormulaCompostaQueCriei FormulaComposta[] @relation("Criador") | |
FormulaCompostaQueDesativei FormulaComposta[] @relation("Removedor") | |
FormulaCompostaQueAtualizei FormulaComposta[] @relation("Atualizador") | |
OEQueCriei Tema[] @relation("Criador") | |
OEQueDesativei Tema[] @relation("Removedor") | |
OEQueAtualizei Tema[] @relation("Atualizador") | |
TagQueCriei Tag[] @relation("Criador") | |
TagQueDesativei Tag[] @relation("Removedor") | |
TagQueAtualizei Tag[] @relation("Atualizador") | |
FRQueCriei FonteRecurso[] @relation("Criador") | |
FRQueDesativei FonteRecurso[] @relation("Removedor") | |
FRQueAtualizei FonteRecurso[] @relation("Atualizador") | |
TipoDocQueCriei TipoDocumento[] @relation("Criador") | |
TipoDocQueDesativei TipoDocumento[] @relation("Removedor") | |
TipoDocQueAtualizei TipoDocumento[] @relation("Atualizador") | |
RegiaoQueCriei Regiao[] @relation("Criador") | |
RegiaoQueDesativei Regiao[] @relation("Removedor") | |
RegiaoQueAtualizei Regiao[] @relation("Atualizador") | |
ArquivoQueCriei Arquivo[] @relation("Criador") | |
ArquivosQueAtualizei Arquivo[] @relation("Atualizador") | |
ArquivoDocQueCriei ArquivoDocumento[] @relation("Criador") | |
ArquivoDocQueDesativei ArquivoDocumento[] @relation("Removedor") | |
ArquivoDocQueAtualizei ArquivoDocumento[] @relation("Atualizador") | |
PPArquivoDocQueCriei ProjetoDocumento[] @relation("Criador") | |
PPArquivoDocQueDesativei ProjetoDocumento[] @relation("Removedor") | |
PPArquivoDocQueAtualizei ProjetoDocumento[] @relation("Atualizador") | |
MetaQueCriei Meta[] @relation("Criador") | |
MetaQueDesativei Meta[] @relation("Desativador") | |
MetaQueAtualizei Meta[] @relation("Atualizador") | |
IndicadorQueCriei Indicador[] @relation("Criador") | |
IndicadorQueRemovi Indicador[] @relation("Removedor") | |
IndicadorQueAtualizei Indicador[] @relation("Atualizador") | |
UnidadeQueCriei UnidadeMedida[] @relation("Criador") | |
UnidadeQueRemovi UnidadeMedida[] @relation("Removedor") | |
UnidadeQueAtualizei UnidadeMedida[] @relation("Atualizador") | |
IndicadorVariavel IndicadorVariavel[] @relation("Desativador") | |
IniciativasQueCriei Iniciativa[] @relation("Criador") | |
IniciativasQueRemovi Iniciativa[] @relation("Removedor") | |
IniciativasQueAtualizei Iniciativa[] @relation("Atualizador") | |
IniciativasQueSouResp IniciativaResponsavel[] @relation("IniciativaPessoaResp") | |
AtividadesQueCriei Atividade[] @relation("Criador") | |
AtividadesQueRemovi Atividade[] @relation("Removedor") | |
AtividadesQueAtualizei Atividade[] @relation("Atualizador") | |
AtividadesQueSouResp AtividadeResponsavel[] @relation("AtividadePessoaResp") | |
VariavelResponsavel VariavelResponsavel[] | |
AtualizouSerieVariavel SerieVariavel[] @relation("Atualizador") | |
ConferiuSerieVariavel SerieVariavel[] @relation("Conferidor") | |
CronogramaOrgao CronogramaOrgao[] | |
CronogramasQueCriei Cronograma[] @relation("Criador") | |
CronogramasQueRemovi Cronograma[] @relation("Removedor") | |
CronogramasQueAtualizei Cronograma[] @relation("Atualizador") | |
PortfolioQueCriei Portfolio[] @relation("Criador") | |
PortfolioQueRemovi Portfolio[] @relation("Removedor") | |
PortfolioQueAtualizei Portfolio[] @relation("Atualizador") | |
EtapasQueCriei Etapa[] @relation("Criador") | |
EtapasQueRemovi Etapa[] @relation("Removedor") | |
EtapasQueAtualizei Etapa[] @relation("Atualizador") | |
PlanoAcaoMonitoramentoQueCriei PlanoAcaoMonitoramento[] @relation("Criador") | |
PlanoAcaoMonitoramentoQueAtualizei PlanoAcaoMonitoramento[] @relation("Atualizador") | |
PlanoAcaoMonitoramentoQueRemovi PlanoAcaoMonitoramento[] @relation("Removedor") | |
TiposDeTransferenciaQueCriei TransferenciaTipo[] @relation("Criador") | |
TiposDeTransferenciaQueAtualizei TransferenciaTipo[] @relation("Atualizador") | |
TiposDeTransferenciaQueRemovi TransferenciaTipo[] @relation("Removedor") | |
WorkflowsQueCriei Workflow[] @relation("Criador") | |
WorkflowsQueAtualizei Workflow[] @relation("Atualizador") | |
WorkflowsQueRemovi Workflow[] @relation("Removedor") | |
EtapasDeWorkflowsQueCriei WorkflowEtapa[] @relation("Criador") | |
EtapasDeWorkflowsQueAtualizei WorkflowEtapa[] @relation("Atualizador") | |
EtapasDeWorkflowsQueRemovi WorkflowEtapa[] @relation("Removedor") | |
FasesDeWorkflowsQueCriei WorkflowFase[] @relation("Criador") | |
FasesDeWorkflowsQueAtualizei WorkflowFase[] @relation("Atualizador") | |
FasesDeWorkflowsQueRemovi WorkflowFase[] @relation("Removedor") | |
SituacoesDeWorkflowsQueCriei WorkflowSituacao[] @relation("Criador") | |
SituacoesDeWorkflowsQueAtualizei WorkflowSituacao[] @relation("Atualizador") | |
SituacoesDeWorkflowsQueRemovi WorkflowSituacao[] @relation("Removedor") | |
PaineisQueCriei Painel[] @relation("Criador") | |
PaineisQueRemovi Painel[] @relation("Removedor") | |
PaineisQueAtualizei Painel[] @relation("Atualizador") | |
PessoaAcessoPdm PessoaAcessoPdm[] | |
GruposDePaineisQueCriei GrupoPainel[] @relation("Criador") | |
GruposDePaineisQueRemovi GrupoPainel[] @relation("Removedor") | |
GruposDePaineisQueParticipo PessoaGrupoPainel[] | |
VariavelCicloFisicoQualitativoCriador VariavelCicloFisicoQualitativo[] @relation("criador") | |
VariavelCicloFisicoQualitativoRemovedor VariavelCicloFisicoQualitativo[] @relation("removedor") | |
VariavelCicloFisicoDocumentoCriador VariavelCicloFisicoDocumento[] @relation("criador") | |
VariavelCicloFisicoDocumentoRemovedor VariavelCicloFisicoDocumento[] @relation("removedor") | |
PedidoComplementacaoCriador PedidoComplementacao[] @relation("criador") | |
PedidoComplementacaoAtendeu PedidoComplementacao[] @relation("atendeu") | |
PedidoComplementacaoRemovedor PedidoComplementacao[] @relation("removedor") | |
MetaCicloFisicoAnaliseCriador MetaCicloFisicoAnalise[] @relation("criador") | |
MetaCicloFisicoAnaliseRemovedor MetaCicloFisicoAnalise[] @relation("removedor") | |
MetaCicloFisicoFechamentoCriador MetaCicloFisicoFechamento[] @relation("criador") | |
MetaCicloFisicoFechamentoRemovedor MetaCicloFisicoFechamento[] @relation("removedor") | |
FormulaCompostaCicloFisicoQualitativoCriador FormulaCompostaCicloFisicoQualitativo[] @relation("criador") | |
FormulaCompostaCicloFisicoQualitativoRemovedor FormulaCompostaCicloFisicoQualitativo[] @relation("removedor") | |
FormulaCompostaCicloFisicoDocumentoCriador FormulaCompostaCicloFisicoDocumento[] @relation("criador") | |
FormulaCompostaCicloFisicoDocumentoRemovedor FormulaCompostaCicloFisicoDocumento[] @relation("removedor") | |
MetaCicloFisicoRiscoCriador MetaCicloFisicoRisco[] @relation("criador") | |
MetaCicloFisicoRiscoRemovedor MetaCicloFisicoRisco[] @relation("removedor") | |
MetaCicloFisicoAnaliseDocumentoCriador MetaCicloFisicoAnaliseDocumento[] @relation("criador") | |
MetaCicloFisicoAnaliseDocumentoRemovedor MetaCicloFisicoAnaliseDocumento[] @relation("removedor") | |
EtapaResponsavel EtapaResponsavel[] | |
MetaOrcamentoCriados OrcamentoPrevisto[] @relation("criador") | |
MetaOrcamentoRemovidos OrcamentoPrevisto[] @relation("removedor") | |
MetaOrcamentoAtualizados OrcamentoPrevisto[] @relation("atualizador") | |
OrcamentoPlanejadoCriados OrcamentoPlanejado[] @relation("criador") | |
OrcamentoPlanejadoRemovidos OrcamentoPlanejado[] @relation("removedor") | |
OrcamentoRealizadoCriados OrcamentoRealizado[] @relation("criador") | |
OrcamentoRealizadoRemovidos OrcamentoRealizado[] @relation("removedor") | |
OrcamentoRealizadoItem OrcamentoRealizadoItem[] @relation("sobrescritor") | |
RelatorioQueFiz Relatorio[] @relation("criador") | |
RelatorioQueRemovi Relatorio[] @relation("removedor") | |
ProjetoLicoesAprendidasQCriei ProjetoLicaoAprendida[] @relation("criador") | |
ProjetoLicoesAprendidasQRemovi ProjetoLicaoAprendida[] @relation("removedor") | |
AditamentosQueCriei DistribuicaoRecursoAditamento[] | |
ppResponsavel Projeto[] @relation("ppResponsavel") | |
ppQueCriei Projeto[] @relation("criador") | |
ppSelecionado Projeto[] @relation("ppSelecionado") | |
ppEm_planejamento Projeto[] @relation("ppEm_planejamento") | |
ppArquivado Projeto[] @relation("ppArquivado") | |
ppSuspenso Projeto[] @relation("ppSuspenso") | |
ppRestaurou Projeto[] @relation("ppRestaurou") | |
ppValidado Projeto[] @relation("ppValidado") | |
ppFinalizouPlan Projeto[] @relation("ppFinalizouPlan") | |
ppCancelou Projeto[] @relation("ppCancelou") | |
ppReiniciou Projeto[] @relation("ppReiniciou") | |
ppIniciou Projeto[] @relation("ppIniciou") | |
ppTerminou Projeto[] @relation("ppTerminou") | |
RiscosQueCriei ProjetoRisco[] @relation("Criador") | |
RiscosQueRemovi ProjetoRisco[] @relation("Removedor") | |
RiscosQueEditei ProjetoRisco[] @relation("Atualizador") | |
PlanosDeAcaoQueCriei PlanoAcao[] @relation("Criador") | |
PlanosDeAcaoQueRemovi PlanoAcao[] @relation("Removedor") | |
PlanosDeAcaoQueEditei PlanoAcao[] @relation("Atualizador") | |
EncaminhamentosQueCriei ProjetoAcompanhamentoItem[] @relation("Criador") | |
EncaminhamentosQueRemovi ProjetoAcompanhamentoItem[] @relation("Removedor") | |
EncaminhamentosQueEditei ProjetoAcompanhamentoItem[] @relation("Atualizador") | |
ProjetoEquipeQueEstou ProjetoEquipe[] @relation("fk") | |
ProjetoEquipeQueRemovi ProjetoEquipe[] @relation("Removedor") | |
ProjetoEquipeQueCriei ProjetoEquipe[] @relation("Criador") | |
OrcamentoPrevistoZeradoQCriei OrcamentoPrevistoZerado[] @relation("Criador") | |
OrcamentoPrevistoZeradoQRemovi OrcamentoPrevistoZerado[] @relation("Removedor") | |
ImportacaoLog ImportacaoOrcamento[] | |
IndicadorFormulaComposta IndicadorFormulaComposta[] @relation("Desativador") | |
TiposAcompanhamentoQueCriei AcompanhamentoTipo[] @relation("Criador") | |
TiposAcompanhamentoQueAtualizei AcompanhamentoTipo[] @relation("Atualizador") | |
TiposAcompanhamentoQueRemovi AcompanhamentoTipo[] @relation("Removedor") | |
PessoaAcessoPdmValido PessoaAcessoPdmValido? | |
MetasQueSouResp view_meta_pessoa_responsavel[] | |
MetasQueSouRespNaCp view_meta_pessoa_responsavel_na_cp[] | |
MetasQueSouRespOuNao MetaResponsavel[] @relation("MetaPessoaResp") | |
PdmOrcamentoRealizadoConfig PdmOrcamentoRealizadoConfig[] | |
view_meta_responsavel_orcamento view_meta_responsavel_orcamento[] | |
variavel_suspensa_log VariavelSuspensaoLog[] | |
PessoaSessao PessoaSessao[] | |
PessoaAtividadeLog PessoaAtividadeLog[] | |
GrupoPortfolioQueCriei GrupoPortfolio[] @relation("Criador") | |
GrupoPortfolioQueAtualizei GrupoPortfolio[] @relation("Atualizador") | |
GrupoPortfoliQueRemovi GrupoPortfolio[] @relation("Removedor") | |
ProjetoGrupoPortfolioQueCriei ProjetoGrupoPortfolio[] @relation("Criador") | |
ProjetoGrupoPortfolioQueRemovi ProjetoGrupoPortfolio[] @relation("Removedor") | |
PortfolioGrupoPortfolioQueCriei PortfolioGrupoPortfolio[] @relation("Criador") | |
PortfolioGrupoPortfolioQueRemovi PortfolioGrupoPortfolio[] @relation("Removedor") | |
GrupoPortfolioPessoa GrupoPortfolioPessoa[] | |
projetosCompartilhadosEmPortfolioQueCriei PortfolioProjetoCompartilhado[] @relation("Criador") | |
projetosCompartilhadosEmPortfolioQueRemovi PortfolioProjetoCompartilhado[] @relation("Removedor") | |
projetosCompartilhadosEmPortfolioQueAtualizei PortfolioProjetoCompartilhado[] @relation("Atualizador") | |
partidosQueCriei Partido[] @relation("Criador") | |
partidosQueAtualizei Partido[] @relation("Atualizador") | |
partidosQueRemovi Partido[] @relation("Removedor") | |
bancadasQueCriei Bancada[] @relation("Criador") | |
bancadasQueAtualizei Bancada[] @relation("Atualizador") | |
bancadasQueRemovi Bancada[] @relation("Removedor") | |
parlamentaresQueCriei Parlamentar[] @relation("Criador") | |
parlamentaresQueAtualizei Parlamentar[] @relation("Atualizador") | |
parlamentaresQueRemovi Parlamentar[] @relation("Removedor") | |
mandatosQueCriei ParlamentarMandato[] @relation("Criador") | |
mandatosQueAtualizei ParlamentarMandato[] @relation("Atualizador") | |
mandatosQueRemovi ParlamentarMandato[] @relation("Removedor") | |
equipeParlamentarQueCriei ParlamentarEquipe[] @relation("Criador") | |
equipeParlamentarQueAtualizei ParlamentarEquipe[] @relation("Atualizador") | |
equipeParlamentarQueRemovi ParlamentarEquipe[] @relation("Removedor") | |
eleicaoComparecimentoQueCriei EleicaoComparecimento[] @relation("Criador") | |
eleicaoComparecimentoQueAtualizei EleicaoComparecimento[] @relation("Atualizador") | |
eleicaoComparecimentoQueRemovi EleicaoComparecimento[] @relation("Removedor") | |
mandatoRepresentatividadesQueCriei MandatoRepresentatividade[] @relation("Criador") | |
mandatoRepresentatividadesQueAtualizei MandatoRepresentatividade[] @relation("Atualizador") | |
mandatoRepresentatividadesQueRemovi MandatoRepresentatividade[] @relation("Removedor") | |
transferenciasQueCriei Transferencia[] @relation("Criador") | |
transferenciasQueAtualizei Transferencia[] @relation("Atualizador") | |
transferenciasQueRemovi Transferencia[] @relation("Removedor") | |
transferenciaAnexoQueCriei TransferenciaAnexo[] @relation("Criador") | |
transferenciaAnexoQueAtualizei TransferenciaAnexo[] @relation("Atualizador") | |
transferenciaAnexoQueRemovi TransferenciaAnexo[] @relation("Removedor") | |
distribuicoesRecursoQueCriei DistribuicaoRecurso[] @relation("Criador") | |
distribuicoesRecursoQueAtualizei DistribuicaoRecurso[] @relation("Atualizador") | |
distribuicoesRecursoQueRemovi DistribuicaoRecurso[] @relation("Removedor") | |
distribuicoesRecursoSEIQueCriei DistribuicaoRecursoSei[] @relation("Criador") | |
distribuicoesRecursoSEIQueAtualizei DistribuicaoRecursoSei[] @relation("Atualizador") | |
distribuicoesRecursoSEIQueRemovi DistribuicaoRecursoSei[] @relation("Removedor") | |
fluxosWorkflowQueCriei Fluxo[] @relation("Criador") | |
fluxosWorkflowQueAtualizei Fluxo[] @relation("Atualizador") | |
fluxosWorkflowQueRemovi Fluxo[] @relation("Removedor") | |
fasesFluxoWorkflowQueCriei FluxoFase[] @relation("Criador") | |
fasesFluxoWorkflowQueAtualizei FluxoFase[] @relation("Atualizador") | |
fasesFluxoWorkflowQueRemovi FluxoFase[] @relation("Removedor") | |
tarefasFluxoWorkflowQueCriei FluxoTarefa[] @relation("Criador") | |
tarefasFluxoWorkflowQueAtualizei FluxoTarefa[] @relation("Atualizador") | |
tarefasFluxoWorkflowQueRemovi FluxoTarefa[] @relation("Removedor") | |
tarefasWorkflowQueCriei WorkflowTarefa[] @relation("Criador") | |
tarefasWorkflowQueAtualizei WorkflowTarefa[] @relation("Atualizador") | |
tarefasWorkflowQueRemovi WorkflowTarefa[] @relation("Removedor") | |
transferenciaAndamentoQueCriei TransferenciaAndamento[] @relation("Criador") | |
transferenciaAndamentoQueAtualizei TransferenciaAndamento[] @relation("Atualizador") | |
transferenciaAndamentoQueRemovi TransferenciaAndamento[] @relation("Removedor") | |
transferenciaAndamentoQueSouResponsavel TransferenciaAndamento[] | |
transferenciaAndamentoTarefaQueCriei TransferenciaAndamentoTarefa[] @relation("Criador") | |
transferenciaAndamentoTarefaQueAtualizei TransferenciaAndamentoTarefa[] @relation("Atualizador") | |
transferenciaAndamentoTarefaQueRemovi TransferenciaAndamentoTarefa[] @relation("Removedor") | |
task_queue task_queue[] | |
GeoEnderecoReferenciaqQueCriei GeoLocalizacaoReferencia[] @relation("criador") | |
GeoEnderecoReferenciaqQueRemovid GeoLocalizacaoReferencia[] @relation("removedor") | |
GrupoPainelExternoQueCriei GrupoPainelExterno[] @relation("Criador") | |
GrupoPainelExternoQueAtualizei GrupoPainelExterno[] @relation("Atualizador") | |
GrupoPainelExternoQueRemovi GrupoPainelExterno[] @relation("Removedor") | |
GrupoPainelExternoPessoa GrupoPainelExternoPessoa[] | |
PainelExternoGrupoPainelExternoQueRemovi PainelExternoGrupoPainelExterno[] @relation("Removedor") | |
PainelExternoGrupoPainelExternoQueCriei PainelExternoGrupoPainelExterno[] @relation("Criador") | |
PainelExternoQueCriei PainelExterno[] @relation("Criador") | |
PainelExternoQueAtualizei PainelExterno[] @relation("Atualizador") | |
PainelExternoQueRemovi PainelExterno[] @relation("Removedor") | |
LogGenerico LogGenerico[] | |
TarefaCronogramaQCriei TarefaCronograma[] @relation("criador") | |
TarefaCronogramaQRemovi TarefaCronograma[] @relation("removedor") | |
ProjetoEtapaQCriei ProjetoEtapa[] @relation("Criador") | |
ProjetoEtapaQRemovi ProjetoEtapa[] @relation("Removedor") | |
ProjetoEtapaQAtualizei ProjetoEtapa[] @relation("Atualizador") | |
Nota Nota[] @relation("Resp") | |
NotaEnderecamentoQSouEnderecado NotaEnderecamento[] @relation("Enderecado") | |
NotaEnderecamentoQCriei NotaEnderecamento[] @relation("Criador") | |
NotaEnderecamentoQRemovi NotaEnderecamento[] @relation("Removedor") | |
NotaEnderecamentoRespostaQCriei NotaEnderecamentoResposta[] @relation("Criador") | |
NotaEnderecamentoRespostaQRemovi NotaEnderecamentoResposta[] @relation("Removedor") | |
NotaQCriei Nota[] @relation("Criador") | |
NotaQRemovi Nota[] @relation("Removedor") | |
BlocoNotaQCriei BlocoNota[] @relation("Criador") | |
BlocoNotaQRemovi BlocoNota[] @relation("Removedor") | |
BlocoNotaQAtualizei BlocoNota[] @relation("Atualizador") | |
VariavelCategoricaQCriei VariavelCategorica[] @relation("Criador") | |
VariavelCategoricaQRemovi VariavelCategorica[] @relation("Removedor") | |
VariavelCategoricaQAtualizei VariavelCategorica[] @relation("Atualizador") | |
VariavelCategoricaValorQCriei VariavelCategoricaValor[] @relation("Criador") | |
VariavelCategoricaValorQRemovi VariavelCategoricaValor[] @relation("Removedor") | |
VariavelCategoricaValorQAtualizei VariavelCategoricaValor[] @relation("Atualizador") | |
GruposTematicosQueCriei GrupoTematico[] @relation("Criador") | |
GruposTematicosQueRemovi GrupoTematico[] @relation("Removedor") | |
GruposTematicosQueAtualizei GrupoTematico[] @relation("Atualizador") | |
TipoIntervencaoQueCriei TipoIntervencao[] @relation("Criador") | |
TipoIntervencaoQueRemovi TipoIntervencao[] @relation("Removedor") | |
TipoIntervencaoQueAtualizei TipoIntervencao[] @relation("Atualizador") | |
EquipamentosQueCriei Equipamento[] @relation("Criador") | |
EquipamentosQueRemovi Equipamento[] @relation("Removedor") | |
EquipamentosQueAtualizei Equipamento[] @relation("Atualizador") | |
StatusesDistribuicaoQueCriei TransferenciaTipoDistribuicaoStatus[] @relation("Criador") | |
StatusesDistribuicaoQueRemovi TransferenciaTipoDistribuicaoStatus[] @relation("Removedor") | |
StatusesDistribuicaoQueAtualizei TransferenciaTipoDistribuicaoStatus[] @relation("Atualizador") | |
view_atividade_pessoa_responsavel view_atividade_pessoa_responsavel[] | |
view_iniciativa_pessoa_responsavel view_iniciativa_pessoa_responsavel[] | |
ViewNotaComOrdemQCriei ViewNotas[] @relation("Criador") | |
ViewNotaComOrdemQRemovi ViewNotas[] @relation("Removedor") | |
ViewNotaComOrdemQSouResp ViewNotas[] @relation("Resp") | |
PdmPerfil PdmPerfil[] @relation("fk") | |
PdmPerfilQueDesativei PdmPerfil[] @relation("Removedor") | |
PdmPerfilQueCriei PdmPerfil[] @relation("Criador") | |
@@index([email]) | |
@@map("pessoa") | |
} | |
model LogGenerico { | |
id Int @id @default(autoincrement()) | |
contexto String | |
ip String @db.Inet | |
log String | |
pessoa_sessao_id Int? | |
pessoa_id Int? | |
pessoa Pessoa? @relation(fields: [pessoa_id], references: [id]) | |
pessoa_sessao PessoaSessao? @relation(fields: [pessoa_sessao_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
@@map("log_generico") | |
} | |
model PrivilegioModulo { | |
id Int @id @default(autoincrement()) | |
codigo String @unique | |
descricao String | |
privilegio Privilegio[] | |
modulo_sistema ModuloSistema @default(SMAE) | |
@@map("privilegio_modulo") | |
} | |
model Orgao { | |
id Int @id @default(autoincrement()) | |
sigla String @default("-") | |
descricao String | |
tipo_orgao_id Int | |
tipo_orgao TipoOrgao @relation(fields: [tipo_orgao_id], references: [id]) | |
pessoa_fisica PessoaFisica[] | |
cnpj String? | |
email String? | |
secretario_responsavel String? | |
oficial Boolean @default(false) | |
nivel Int @default(1) | |
parente_id Int? | |
OrgaoAcima Orgao? @relation("Parente", fields: [parente_id], references: [id]) | |
OrgaosAbaixo Orgao[] @relation("Parente") | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
meta_orgao MetaOrgao[] | |
meta_responsavel MetaResponsavel[] | |
Variavel Variavel[] | |
iniciativa_orgao IniciativaOrgao[] | |
iniciativa_responsavel IniciativaResponsavel[] | |
atividade_orgao AtividadeOrgao[] | |
atividade_responsavel AtividadeResponsavel[] | |
CronogramaOrgao CronogramaOrgao[] | |
tarefas Tarefa[] | |
PlanoAcao PlanoAcao[] | |
projetos_participando ProjetoOrgaoParticipante[] | |
projetos_geridos Projeto[] @relation("orgao_gestor") | |
PortifolioOrgao PortfolioOrgao[] | |
orgao_responsavel Projeto[] @relation("orgao_responsavel") | |
GrupoPortfolio GrupoPortfolio[] | |
GrupoPortfolioPessoa GrupoPortfolioPessoa[] | |
ProjetoEquipe ProjetoEquipe[] | |
GrupoPainelExterno GrupoPainelExterno[] | |
GrupoPainelExternoPessoa GrupoPainelExternoPessoa[] | |
TransferenciasOrgao Transferencia[] @relation("orgao_concedente") | |
TransferenciasSecretaria Transferencia[] @relation("secretaria_concedente") | |
distribuicao_recursos DistribuicaoRecurso[] | |
Nota Nota[] | |
NotaEnderecamento NotaEnderecamento[] | |
transferenciaAndamento TransferenciaAndamento[] | |
transferenciaAndamentoTarefa TransferenciaAndamentoTarefa[] | |
PdmOrcamentoRealizadoConfig PdmOrcamentoRealizadoConfig[] | |
ViewNotaComOrdem ViewNotas[] | |
PdmPerfil PdmPerfil[] | |
Pdm Pdm[] | |
@@map("orgao") | |
} | |
model PerfilAcesso { | |
id Int @id @default(autoincrement()) | |
nome String | |
descricao String? | |
modulos_sistemas ModuloSistema[] @default([SMAE]) | |
autogerenciavel Boolean @default(true) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
perfil_privilegio PerfilPrivilegio[] | |
pessoa_perfil PessoaPerfil[] | |
@@map("perfil_acesso") | |
} | |
model PerfilPrivilegio { | |
id Int @id @default(autoincrement()) | |
perfil_acesso_id Int | |
privilegio_id Int | |
perfil_acesso PerfilAcesso @relation(fields: [perfil_acesso_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
privilegio Privilegio @relation(fields: [privilegio_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
@@unique([perfil_acesso_id, privilegio_id]) | |
@@map("perfil_privilegio") | |
} | |
model PessoaFisica { | |
id Int @id @default(autoincrement()) | |
cargo String? | |
lotacao String? | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
pessoa Pessoa[] | |
registro_funcionario String? | |
cpf String? | |
@@map("pessoa_fisica") | |
} | |
model PessoaPerfil { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
perfil_acesso_id Int | |
perfil_acesso PerfilAcesso @relation(fields: [perfil_acesso_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
@@index([pessoa_id]) | |
@@map("pessoa_perfil") | |
} | |
model PessoaSessaoAtiva { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
pessoa_sessao PessoaSessao @relation(fields: [id], references: [id]) | |
@@map("pessoa_sessao_ativa") | |
} | |
model Privilegio { | |
id Int @id @default(autoincrement()) | |
nome String | |
codigo String @unique | |
modulo_id Int | |
modulo PrivilegioModulo @relation(fields: [modulo_id], references: [id]) | |
perfil_privilegio PerfilPrivilegio[] | |
@@map("privilegio") | |
} | |
model TipoOrgao { | |
id Int @id @default(autoincrement()) | |
descricao String | |
orgao Orgao[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("tipo_orgao") | |
} | |
model EmaildbConfig { | |
id Int @id @default(autoincrement()) | |
from String | |
template_resolver_class String @db.VarChar(60) | |
template_resolver_config Json @default("{}") @db.Json | |
email_transporter_class String @db.VarChar(60) | |
email_transporter_config Json @default("{}") @db.Json | |
delete_after Unsupported("interval") @default(dbgenerated("'10 years'::interval")) | |
EmaildbQueue EmaildbQueue[] | |
@@map("emaildb_config") | |
} | |
model EmaildbQueue { | |
id String @id @db.Uuid | |
config_id Int | |
created_at DateTime @default(now()) @db.Timestamp(6) | |
template String | |
to String | |
subject String | |
variables Json @db.Json | |
sent Boolean? | |
updated_at DateTime? @db.Timestamp(6) | |
visible_after DateTime? @db.Timestamp(6) | |
errmsg String? | |
emaildb_config EmaildbConfig @relation(fields: [config_id], references: [id], onDelete: NoAction, onUpdate: NoAction) | |
AvisoEmailDisparos AvisoEmailDisparos[] | |
@@map("emaildb_queue") | |
} | |
model Ods { | |
id Int @id @default(autoincrement()) | |
numero Int | |
titulo String | |
descricao String | |
eh_status_pdm Boolean @default(false) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Tag Tag[] | |
@@map("ods") | |
} | |
enum TipoPdm { | |
PDM | |
PS | |
} | |
model Pdm { | |
id Int @id @default(autoincrement()) | |
nome String | |
descricao String? | |
data_inicio DateTime? @db.Date() | |
data_fim DateTime? @db.Date() | |
data_publicacao DateTime? @db.Date() | |
periodo_do_ciclo_participativo_inicio DateTime? @db.Date() | |
periodo_do_ciclo_participativo_fim DateTime? @db.Date() | |
ativo Boolean @default(false) | |
prefeito String | |
equipe_tecnica String? | |
possui_macro_tema Boolean @default(true) | |
possui_tema Boolean @default(true) | |
possui_sub_tema Boolean @default(true) | |
possui_contexto_meta Boolean @default(true) | |
possui_complementacao_meta Boolean @default(true) | |
possui_iniciativa Boolean @default(false) | |
possui_atividade Boolean @default(false) | |
rotulo_macro_tema String @default("Macro Tema") | |
rotulo_tema String @default("Tema") | |
rotulo_sub_tema String @default("Sub Tema") | |
rotulo_contexto_meta String @default("Contexto") | |
rotulo_complementacao_meta String @default("Complementação") | |
rotulo_iniciativa String @default("Iniciativa") | |
rotulo_atividade String @default("Atividade") | |
nivel_orcamento NivelOrcamento @default(Meta) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
desativado_por Int? | |
desativado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
considerar_atraso_apos DateTime? @db.Date() | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
desativador Pessoa? @relation("Desativador", fields: [desativado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Eixo MacroTema[] | |
Tag Tag[] | |
ObjetivoEstrategico Tema[] | |
ArquivoDocumento ArquivoDocumento[] | |
SubTema SubTema[] | |
Meta Meta[] | |
tipo TipoPdm @default(PDM) | |
paineis_de_meta Painel[] | |
ps_admin_cps Json @default("[]") @db.Json | |
orcamento_dia_abertura Int @default(1) @db.SmallInt | |
orcamento_dia_fechamento Int @default(20) @db.SmallInt | |
monitoramento_orcamento Boolean @default(true) | |
legislacao_de_instituicao String? | |
pdm_anteriores Int[] @default([]) | |
orgao_admin_id Int? | |
orgao_admin Orgao? @relation(fields: [orgao_admin_id], references: [id]) | |
logo String? | |
arquivo_logo_id Int? | |
ArquivoLogo Arquivo? @relation(fields: [arquivo_logo_id], references: [id]) | |
CicloFasesPdmConfig CicloFasesPdmConfig[] | |
CicloFisico CicloFisico[] | |
PdmOrcamentoConfig PdmOrcamentoConfig[] | |
Relatorio Relatorio[] | |
PdmDotacaoPlanejado PdmDotacaoPlanejado[] | |
PdmDotacaoRealizado PdmDotacaoRealizado[] | |
PdmDotacaoProcesso PdmDotacaoProcesso[] | |
PdmDotacaoProcessoNota PdmDotacaoProcessoNota[] | |
ImportacaoLog ImportacaoOrcamento[] | |
// index continua existindo para quem é PDM | |
// create unique index ix_pdm_uniq_ativo on pdm(ativo) where ativo=true and tipo='PDM'; | |
PdmPerfil PdmPerfil[] | |
@@index([ativo]) | |
@@map("pdm") | |
} | |
enum PdmPerfilTipo { | |
ADMIN | |
CP | |
PONTO_FOCAL | |
} | |
model PdmPerfil { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
tipo PdmPerfilTipo | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("fk", fields: [pessoa_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("pdm_perfil") | |
} | |
model PdmOrcamentoRealizadoControleConcluido { | |
id Int @id @default(autoincrement()) | |
ano_referencia Int | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
criado_em DateTime | |
// sobre qual dia foi feito a abertura (setar concluido=false) | |
referencia_dia_abertura Int? @db.SmallInt | |
// sobre qual dia foi feito a abertura (setar concluido=true) | |
referencia_dia_fechamento Int? @db.SmallInt | |
// marcar se a execução foi marcada como concluida nessa data | |
execucao_concluida Boolean @default(false) | |
@@map("pdm_orcamento_realizado_controle_concluido") | |
} | |
model MacroTema { | |
id Int @id @default(autoincrement()) | |
descricao String | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Meta Meta[] | |
@@map("eixo") | |
} | |
model SubTema { | |
id Int @id @default(autoincrement()) | |
descricao String | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Meta Meta[] | |
@@map("subtema") | |
} | |
model FonteRecurso { | |
// deprecated, precisamos remover os endpoints futuramente | |
id Int @id @default(autoincrement()) | |
fonte String | |
sigla String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("fonte_recurso") | |
} | |
model TipoDocumento { | |
id Int @id @default(autoincrement()) | |
codigo String | |
titulo String | |
descricao String? | |
extensoes String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Arquivo Arquivo[] | |
@@map("tipo_documento") | |
} | |
model Tag { | |
id Int @id @default(autoincrement()) | |
descricao String | |
icone String? | |
arquivo_icone_id Int? | |
ArquivoIcone Arquivo? @relation(fields: [arquivo_icone_id], references: [id]) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ods_id Int? | |
ods Ods? @relation(fields: [ods_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
meta_tag MetaTag[] | |
iniciativa_tag IniciativaTag[] | |
atividade_tag AtividadeTag[] | |
@@index([pdm_id]) | |
@@map("tag") | |
} | |
model ProjetoEtapa { | |
id Int @id @default(autoincrement()) | |
descricao String | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Projeto Projeto[] | |
@@map("projeto_etapa") | |
} | |
model Tema { | |
id Int @id @default(autoincrement()) | |
descricao String | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
Meta Meta[] | |
@@index([pdm_id]) | |
@@map("objetivo_estrategico") | |
} | |
model Regiao { | |
id Int @id @default(autoincrement()) | |
descricao String | |
shapefile String? | |
nivel Int | |
codigo String? | |
parente_id Int? | |
pdm_codigo_sufixo String? | |
arquivo_shapefile_id Int? | |
ArquivoShapefile Arquivo? @relation(fields: [arquivo_shapefile_id], references: [id]) | |
RegiaoAcima Regiao? @relation("Parente", fields: [parente_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
RegioesAbaixo Regiao[] @relation("Parente") | |
Variavel Variavel[] | |
Etapa Etapa[] | |
Projetos Projeto[] | |
GeoCamadaRegiao GeoCamadaRegiao[] | |
eleicoesComparecimento EleicaoComparecimento[] | |
mandatoRepresentatividade MandatoRepresentatividade[] | |
@@index([parente_id]) | |
@@map("regiao") | |
} | |
model Arquivo { | |
id Int @id @default(autoincrement()) | |
tipo String | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
atualizado_por Int? | |
atualizado_em DateTime? | |
caminho String | |
nome_original String | |
mime_type String? | |
tamanho_bytes Int | |
descricao String? | |
tipo_documento_id Int? | |
diretorio_caminho String? | |
TipoDocumento TipoDocumento? @relation(fields: [tipo_documento_id], references: [id]) | |
Tag Tag[] | |
Regiao Regiao[] | |
ArquivoDocumento ArquivoDocumento[] | |
Pdm Pdm[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
MetaCicloFisicoAnaliseDocumento MetaCicloFisicoAnaliseDocumento[] | |
Relatorio Relatorio[] | |
projeto_documentos ProjetoDocumento[] | |
fotosParlamentar Parlamentar[] | |
ImportacaoLogInput ImportacaoOrcamento[] @relation("input") | |
ImportacaoLogOutput ImportacaoOrcamento[] @relation("output") | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
transferencia_anexos TransferenciaAnexo[] | |
@@map("arquivo") | |
} | |
model Diretorio { | |
id Int @id @default(autoincrement()) | |
caminho String | |
projeto_id Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
transferencia_id Int? | |
transferencia Transferencia? @relation(fields: [transferencia_id], references: [id]) | |
@@index([projeto_id]) | |
@@index([transferencia_id]) | |
@@map("diretorio") | |
} | |
model ArquivoDocumento { | |
id Int @id @default(autoincrement()) | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
pdm_id Int? | |
pdm Pdm? @relation(fields: [pdm_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([arquivo_id]) | |
@@index([pdm_id]) | |
@@map("arquivo_documento") | |
} | |
model Meta { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
status String | |
codigo String | |
titulo String | |
contexto String? | |
complemento String? | |
macro_tema_id Int? | |
macro_tema MacroTema? @relation(fields: [macro_tema_id], references: [id]) | |
tema_id Int? | |
tema Tema? @relation(fields: [tema_id], references: [id]) | |
sub_tema_id Int? | |
sub_tema SubTema? @relation(fields: [sub_tema_id], references: [id]) | |
ativo Boolean @default(false) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ciclo_fisico_id Int? | |
ciclo_fisico CicloFisico? @relation(fields: [ciclo_fisico_id], references: [id]) | |
ciclo_fase_id Int? | |
ciclo_fase CicloFisicoFase? @relation(fields: [ciclo_fase_id], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
reovedor Pessoa? @relation("Desativador", fields: [removido_por], references: [id]) | |
meta_orgao MetaOrgao[] | |
meta_responsavel MetaResponsavel[] | |
indicador Indicador[] | |
iniciativa Iniciativa[] | |
meta_tag MetaTag[] | |
cronograma Cronograma[] | |
painel_conteudo PainelConteudo[] | |
StatusMetaCicloFisico StatusMetaCicloFisico[] | |
StatusVariavelCicloFisico StatusVariavelCicloFisico[] | |
VariavelCicloFisicoQualitativo VariavelCicloFisicoQualitativo[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
MetaCicloFisicoAnalise MetaCicloFisicoAnalise[] | |
MetaCicloFisicoAnaliseDocumento MetaCicloFisicoAnaliseDocumento[] | |
MetaCicloFisicoRisco MetaCicloFisicoRisco[] | |
MetaCicloFisicoFechamento MetaCicloFisicoFechamento[] | |
MetaOrcamento OrcamentoPrevisto[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
projetos Projeto[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
FormulaCompostaCicloFisicoQualitativo FormulaCompostaCicloFisicoQualitativo[] | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
PdmOrcamentoRealizadoConfig PdmOrcamentoRealizadoConfig[] | |
MetaStatusConsolidadoCf MetaStatusConsolidadoCf[] | |
ViewMetaPessoaResponsavelNaCp view_meta_pessoa_responsavel_na_cp[] | |
MetaStatusAtrasoConsolidadoMes MetaStatusAtrasoConsolidadoMes[] | |
MetaStatusAtrasoVariavel MetaStatusAtrasoVariavel[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
PdmOrcamentoRealizadoControleConcluido PdmOrcamentoRealizadoControleConcluido[] | |
@@index([pdm_id]) | |
@@map("meta") | |
} | |
model MetaTag { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
tag_id Int | |
tag Tag @relation(fields: [tag_id], references: [id]) | |
@@index([meta_id]) | |
@@index([tag_id]) | |
@@map("meta_tag") | |
} | |
model MetaOrgao { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
responsavel Boolean | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([orgao_id]) | |
@@index([meta_id]) | |
@@map("meta_orgao") | |
} | |
model MetaResponsavel { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("MetaPessoaResp", fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
coordenador_responsavel_cp Boolean | |
@@unique([pessoa_id, meta_id, coordenador_responsavel_cp]) | |
@@index([pessoa_id]) | |
@@index([meta_id]) | |
@@map("meta_responsavel") | |
} | |
enum Polaridade { | |
Neutra | |
Positiva | |
Negativa | |
} | |
enum NivelOrcamento { | |
Meta | |
Iniciativa | |
Atividade | |
} | |
enum Periodicidade { | |
Mensal | |
Bimestral | |
Trimestral | |
Quadrimestral | |
Semestral | |
Anual | |
Quinquenal | |
Secular | |
} | |
model Indicador { | |
id Int @id @default(autoincrement()) | |
meta_id Int? | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa_id Int? | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade_id Int? | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
formula String? | |
formula_compilada String? | |
acumulado_valor_base Decimal? @default(0) @db.Decimal(65, 30) | |
acumulado_usa_formula Boolean @default(false) | |
codigo String | |
titulo String | |
periodicidade Periodicidade | |
polaridade Polaridade @default(Neutra) | |
regionalizavel Boolean @default(false) | |
nivel_regionalizacao Int? | |
inicio_medicao DateTime @db.Date() | |
fim_medicao DateTime @db.Date() | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
contexto String? | |
complemento String? | |
casas_decimais Int? @db.SmallInt | |
recalculando Boolean @default(false) | |
recalculo_erro String? | |
recalculo_tempo Decimal? | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
IndicadorVariavelOrigem IndicadorVariavel[] @relation("Origem") | |
IndicadorVariavel IndicadorVariavel[] @relation("FK") | |
SerieIndicador SerieIndicador[] | |
formula_variaveis IndicadorFormulaVariavel[] | |
painel_conteudo PainelConteudo[] | |
FormulaCompostaOrigem IndicadorFormulaComposta[] @relation("Origem") | |
FormulaComposta IndicadorFormulaComposta[] @relation("FK") | |
IndicadorFormulaCompostaEmUso IndicadorFormulaCompostaEmUso[] | |
@@index([meta_id]) | |
@@index([iniciativa_id]) | |
@@index([atividade_id]) | |
@@map("indicador") | |
} | |
model IndicadorFormulaVariavel { | |
id Int @id @default(autoincrement()) | |
referencia String | |
indicador_id Int | |
indicador Indicador @relation(fields: [indicador_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
janela Int | |
usar_serie_acumulada Boolean @default(false) | |
@@unique([indicador_id, referencia]) | |
@@index([variavel_id]) | |
@@map("indicador_formula_variavel") | |
} | |
model IndicadorFormulaCompostaEmUso { | |
/// tabela de controle, apenas para o sistema encontrar rapidamente quais indicadores | |
// ele necessita atualizar ou não deixar apagar a formula composta | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation(fields: [indicador_id], references: [id]) | |
formula_composta_id Int | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
@@index([formula_composta_id]) | |
@@map("indicador_formula_composta_em_uso") | |
} | |
enum Serie { | |
Previsto | |
PrevistoAcumulado | |
Realizado | |
RealizadoAcumulado | |
} | |
model UnidadeMedida { | |
id Int @id @default(autoincrement()) | |
sigla String | |
descricao String | |
Variavel Variavel[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("unidade_medida") | |
} | |
model VariavelResponsavel { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
@@unique([pessoa_id, variavel_id]) | |
@@index([pessoa_id]) | |
@@index([variavel_id]) | |
@@map("variavel_responsavel") | |
} | |
model FormulaComposta { | |
id Int @id @default(autoincrement()) | |
titulo String | |
formula String | |
formula_compilada String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
nivel_regionalizacao Int? | |
mostrar_monitoramento Boolean @default(false) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
FormulaCompostaVariavel FormulaCompostaVariavel[] | |
IndicadorFormulaComposta IndicadorFormulaComposta[] | |
IndicadorFormulaCompostaEmUso IndicadorFormulaCompostaEmUso[] | |
FormulaCompostaCicloFisicoQualitativo FormulaCompostaCicloFisicoQualitativo[] | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
@@map("formula_composta") | |
} | |
model FormulaCompostaVariavel { | |
id Int @id @default(autoincrement()) | |
referencia String | |
formula_composta_id Int | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
janela Int | |
usar_serie_acumulada Boolean @default(false) | |
@@unique([formula_composta_id, referencia]) | |
@@index([variavel_id]) | |
@@map("formula_composta_variavel") | |
} | |
model Variavel { | |
id Int @id @default(autoincrement()) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
regiao_id Int? | |
//a regiao por agora, o usuario precisa criar cada uma das variaveis manualmente | |
regiao Regiao? @relation(fields: [regiao_id], references: [id]) | |
titulo String | |
// qual é o valor que o valor base se refere | |
ano_base Int? | |
valor_base Decimal @db.Decimal(65, 30) // onde o grafico começa | |
periodicidade Periodicidade | |
unidade_medida_id Int | |
unidade_medida UnidadeMedida @relation(fields: [unidade_medida_id], references: [id]) | |
variavel_categorica_id Int? | |
variavel_categorica VariavelCategorica? @relation(fields: [variavel_categorica_id], references: [id]) | |
codigo String | |
supraregional Boolean @default(false) | |
mostrar_monitoramento Boolean @default(true) | |
suspendida_em DateTime? @db.Timestamptz(6) | |
// ficam null quando a Periodicidade é a mesma do indicador | |
// quando for diferente, é necessário preencher para saber qual é o mês de base | |
inicio_medicao DateTime? @db.Date() | |
fim_medicao DateTime? @db.Date() | |
casas_decimais Int @default(0) @db.SmallInt | |
// usar para calculcar as agregações, por exemplo na média ponderada | |
// acho que pode ser um valor e não uma porcentagem, e ai o sistema calcula a porcentagem sozinho | |
// de acordo com o numero de variaveis | |
acumulativa Boolean @default(false) | |
// quando true, o sistema vai calcular automaticamente a serie acumulativa | |
// quando false, o usuario precisa preencher, mas sempre via ter as 4 series, correto? | |
serie_variavel SerieVariavel[] | |
variavel_responsavel VariavelResponsavel[] | |
indicador_variavel IndicadorVariavel[] | |
indicador_formula_variavel IndicadorFormulaVariavel[] | |
PainelConteudoDetalhe PainelConteudoDetalhe[] | |
StatusVariavelCicloFisico StatusVariavelCicloFisico[] | |
// quanto tempo leva para o preenchimento da variavel | |
// geralmente é 1, ou seja, numa variavel mensal, no ciclo de novembro, se preenche os valores de outubro | |
atraso_meses Int @default(1) @db.Integer | |
VariavelCicloFisicoQualitativo VariavelCicloFisicoQualitativo[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
PedidoComplementacao PedidoComplementacao[] | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
FormulaCompostaVariavel FormulaCompostaVariavel[] | |
suspensao_log VariavelSuspensaoLog[] | |
suspensao_controle VariavelSuspensaControle[] | |
MetaStatusAtrasoVariavel MetaStatusAtrasoVariavel[] | |
Etapa Etapa[] | |
@@index([regiao_id]) | |
@@map("variavel") | |
} | |
model VariavelSuspensaoLog { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
suspendida Boolean | |
criado_em DateTime @db.Timestamptz(6) | |
previo_status_mostrar_monitoramento Boolean @default(true) | |
@@map("variavel_suspensao_log") | |
} | |
model VariavelSuspensaControle { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
ciclo_fisico_base_id Int | |
ciclo_fisico_corrente_id Int | |
ciclo_fisico_base CicloFisico @relation("CicloFisicoBase", fields: [ciclo_fisico_base_id], references: [id]) | |
ciclo_fisico_corrente CicloFisico @relation("CicloFisicoCorrente", fields: [ciclo_fisico_corrente_id], references: [id]) | |
serie Serie | |
valor_antigo Decimal? @db.Decimal(65, 30) | |
valor_novo Decimal? @db.Decimal(65, 30) | |
processado_em DateTime @db.Timestamptz(6) | |
@@unique([variavel_id, ciclo_fisico_corrente_id, serie]) | |
@@map("variavel_suspensa_controle") | |
} | |
// cria relacionamento com um indicador (ou iniciativa que ainda nao existe) com a variavel | |
model IndicadorVariavel { | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation("FK", fields: [indicador_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
indicador_origem_id Int? | |
indicador_origem Indicador? @relation("Origem", fields: [indicador_origem_id], references: [id]) | |
desativado Boolean @default(false) | |
desativado_em DateTime? | |
desativado_por Int? | |
desativador Pessoa? @relation("Desativador", fields: [desativado_por], references: [id]) | |
@@index([variavel_id], map: "idx_indicador_variavel_variavel") | |
@@index([indicador_id], map: "idx_indicador_variavel_indicador") | |
@@map("indicador_variavel") | |
} | |
model IndicadorFormulaComposta { | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation("FK", fields: [indicador_id], references: [id]) | |
formula_composta_id Int | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
indicador_origem_id Int? | |
indicador_origem Indicador? @relation("Origem", fields: [indicador_origem_id], references: [id]) | |
desativado Boolean @default(false) | |
desativado_em DateTime? | |
desativado_por Int? | |
desativador Pessoa? @relation("Desativador", fields: [desativado_por], references: [id]) | |
@@index([formula_composta_id], map: "idx_indicador_fc_formula_composta_id") | |
@@index([indicador_id], map: "idx_indicador_fc_indicador_id") | |
@@map("indicador_formula_composta") | |
} | |
// valores calculados pelo sistema, deixar vazio por enquanto Lucas | |
model SerieIndicador { | |
id Int @id @default(autoincrement()) | |
indicador_id Int | |
indicador Indicador @relation(fields: [indicador_id], references: [id]) | |
serie Serie | |
data_valor DateTime @db.Date() | |
valor_nominal Float @db.DoublePrecision | |
ha_conferencia_pendente Boolean @default(false) | |
@@index([serie, indicador_id, data_valor], map: "idx_serie_indicador_indicador_id_data_valor") | |
@@index([indicador_id, data_valor], map: "idx_indicador_indicador_id_data_valor") | |
@@map("serie_indicador") | |
} | |
enum TipoVariavelCategorica { | |
Binaria | |
Cronograma | |
Qualitativa | |
} | |
model VariavelCategorica { | |
id Int @id @default(autoincrement()) | |
tipo TipoVariavelCategorica | |
titulo String | |
descricao String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
valores VariavelCategoricaValor[] | |
Variavel Variavel[] | |
SerieVariavel SerieVariavel[] | |
@@index([titulo]) | |
@@map("variavel_categorica") | |
} | |
model VariavelCategoricaValor { | |
id Int @id @default(autoincrement()) | |
titulo String | |
valor_variavel Int | |
descricao String? | |
ordem Int @default(0) | |
variavel_categorica_id Int | |
variavel_categorica VariavelCategorica @relation(fields: [variavel_categorica_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
SerieVariavel SerieVariavel[] | |
@@unique([variavel_categorica_id, valor_variavel]) | |
@@unique([variavel_categorica_id, id]) | |
@@map("variavel_categorica_valor") | |
} | |
model SerieVariavel { | |
id Int @id @default(autoincrement()) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
serie Serie | |
data_valor DateTime @db.Date() | |
valor_nominal Decimal @db.Decimal(65, 30) | |
variavel_categorica_id Int? | |
variavel_categorica VariavelCategorica? @relation(fields: [variavel_categorica_id], references: [id]) | |
variavel_categorica_valor_id Int? | |
variavel_categorica_valor VariavelCategoricaValor? @relation(fields: [variavel_categorica_id, variavel_categorica_valor_id], references: [variavel_categorica_id, id]) | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
conferida Boolean @default(true) | |
conferida_por Int? | |
conferida_em DateTime? | |
conferidor Pessoa? @relation("Conferidor", fields: [conferida_por], references: [id]) | |
ciclo_fisico_id Int? | |
@@index([variavel_id, data_valor]) | |
@@index([serie, variavel_id, data_valor], map: "idx_serie_variavel_variavel_id_data_valor") | |
@@map("serie_variavel") | |
} | |
model Iniciativa { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
codigo String | |
titulo String | |
contexto String? | |
complemento String? | |
compoe_indicador_meta Boolean | |
status String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ativo Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
iniciativa_orgao IniciativaOrgao[] | |
iniciativa_responsavel IniciativaResponsavel[] | |
iniciativa_tag IniciativaTag[] | |
Indicador Indicador[] | |
atividade Atividade[] | |
Cronograma Cronograma[] | |
PainelConteudoDetalhe PainelConteudoDetalhe[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
MetaOrcamento OrcamentoPrevisto[] | |
projetos Projeto[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
@@index([meta_id]) | |
@@map("iniciativa") | |
} | |
model IniciativaTag { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
tag_id Int | |
tag Tag @relation(fields: [tag_id], references: [id]) | |
@@index([iniciativa_id]) | |
@@map("iniciativa_tag") | |
} | |
model IniciativaOrgao { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
responsavel Boolean | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([iniciativa_id]) | |
@@index([orgao_id]) | |
@@map("iniciativa_orgao") | |
} | |
model IniciativaResponsavel { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("IniciativaPessoaResp", fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
coordenador_responsavel_cp Boolean | |
@@unique([pessoa_id, iniciativa_id, coordenador_responsavel_cp]) | |
@@index([iniciativa_id]) | |
@@index([orgao_id]) | |
@@map("iniciativa_responsavel") | |
} | |
model Atividade { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
iniciativa Iniciativa @relation(fields: [iniciativa_id], references: [id]) | |
codigo String | |
titulo String | |
contexto String? | |
complemento String? | |
compoe_indicador_iniciativa Boolean | |
status String? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ativo Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atividade_orgao AtividadeOrgao[] | |
atividade_responsavel AtividadeResponsavel[] | |
atividade_tag AtividadeTag[] | |
Indicador Indicador[] | |
Cronograma Cronograma[] | |
PainelConteudoDetalhe PainelConteudoDetalhe[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
MetaOrcamento OrcamentoPrevisto[] | |
projetos Projeto[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
@@index([iniciativa_id]) | |
@@map("atividade") | |
} | |
model AtividadeTag { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
atividade Atividade @relation(fields: [atividade_id], references: [id]) | |
tag_id Int | |
tag Tag @relation(fields: [tag_id], references: [id]) | |
@@index([atividade_id]) | |
@@map("atividade_tag") | |
} | |
model AtividadeOrgao { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
atividade Atividade @relation(fields: [atividade_id], references: [id]) | |
responsavel Boolean | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([atividade_id]) | |
@@index([orgao_id]) | |
@@map("atividade_orgao") | |
} | |
model AtividadeResponsavel { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
atividade Atividade @relation(fields: [atividade_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation("AtividadePessoaResp", fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
coordenador_responsavel_cp Boolean | |
@@unique([pessoa_id, atividade_id, coordenador_responsavel_cp]) | |
@@index([atividade_id]) | |
@@index([orgao_id]) | |
@@map("atividade_responsavel") | |
} | |
model Cronograma { | |
id Int @id @default(autoincrement()) | |
meta_id Int? | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa_id Int? | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade_id Int? | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
descricao String? | |
observacao String? | |
inicio_previsto DateTime? @db.Date() | |
termino_previsto DateTime? @db.Date() | |
inicio_real DateTime? @db.Date() | |
termino_real DateTime? @db.Date() | |
regionalizavel Boolean | |
nivel_regionalizacao Int? | |
CronogramaOrgao CronogramaOrgao[] | |
CronogramaEtapa CronogramaEtapa[] | |
// percentual_execucao // calculado a partir dos filhos (todos, incluindo as etapas (nivel 1/reais) herdadas) | |
percentual_execucao Int? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
ativo Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
etapa Etapa[] | |
@@index([atividade_id]) | |
@@index([iniciativa_id]) | |
@@index([meta_id]) | |
@@map("cronograma") | |
} | |
model Etapa { | |
id Int @id @default(autoincrement()) | |
etapa_pai_id Int? | |
etapa_pai Etapa? @relation("EtapaPai", fields: [etapa_pai_id], references: [id]) | |
etapa_filha Etapa[] @relation("EtapaPai") | |
regiao_id Int? | |
regiao Regiao? @relation(fields: [regiao_id], references: [id]) | |
cronograma_id Int | |
cronograma Cronograma @relation(fields: [cronograma_id], references: [id]) | |
titulo String? | |
nivel String? | |
descricao String? | |
inicio_previsto DateTime? @db.Date() | |
termino_previsto DateTime? @db.Date() | |
inicio_real DateTime? @db.Date() | |
termino_real DateTime? @db.Date() | |
prazo_inicio DateTime? | |
prazo_termino DateTime? | |
status String? | |
CronogramaEtapa CronogramaEtapa[] | |
peso Int? | |
percentual_execucao Int? | |
n_filhos_imediatos Int? | |
// quando o n_filhos_imediatos===0 entao, os dois acima sao informados | |
// se não, são calculados pela trigger, usando a formula | |
// %execucao pai = round( (%execucao * nvl(peso) )/(soma dos pesos dos filhos) ) | |
// Boolean que indica se endereço (GeoLocalizacaoReferencia) é obrigatório para encerrar etapa. | |
endereco_obrigatorio Boolean @default(false) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
variavel_id Int? | |
variavel Variavel? @relation(fields: [variavel_id], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
responsaveis EtapaResponsavel[] | |
GeoLocalizacaoReferencia GeoLocalizacaoReferencia[] | |
@@index([regiao_id]) | |
@@index([etapa_pai_id]) | |
@@index([cronograma_id]) | |
@@map("etapa") | |
} | |
model EtapaResponsavel { | |
id Int @id @default(autoincrement()) | |
etapa_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
etapa Etapa @relation(fields: [etapa_id], references: [id]) | |
@@unique([pessoa_id, etapa_id], name: "etapa_pessoa_uniq") | |
@@index([pessoa_id]) | |
@@index([etapa_id]) | |
@@map("etapa_responsavel") | |
} | |
model CronogramaOrgao { | |
id Int @id @default(autoincrement()) | |
cronograma_id Int | |
cronograma Cronograma @relation(fields: [cronograma_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@index([cronograma_id]) | |
@@index([orgao_id]) | |
@@map("cronograma_orgao") | |
} | |
enum CronogramaEtapaNivel { | |
Etapa | |
Fase | |
SubFase | |
} | |
model CronogramaEtapa { | |
id Int @id @default(autoincrement()) | |
cronograma_id Int | |
cronograma Cronograma @relation(fields: [cronograma_id], references: [id]) | |
etapa_id Int | |
etapa Etapa @relation(fields: [etapa_id], references: [id]) | |
nivel CronogramaEtapaNivel | |
ordem Int | |
inativo Boolean @default(false) | |
data_inativacao DateTime? @db.Timestamptz(6) | |
@@unique([cronograma_id, etapa_id], name: "CronogramaEtapaUniq") | |
@@index([cronograma_id]) | |
@@index([etapa_id]) | |
@@map("cronograma_etapa") | |
} | |
model Painel { | |
id Int @id @default(autoincrement()) | |
nome String | |
periodicidade Periodicidade | |
ativo Boolean @default(true) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
mostrar_planejado_por_padrao Boolean @default(true) | |
mostrar_acumulado_por_padrao Boolean @default(true) | |
mostrar_indicador_por_padrao Boolean @default(true) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
painel_conteudo PainelConteudo[] | |
grupos PainelGrupoPainel[] | |
@@index([pdm_id]) | |
@@map("painel") | |
} | |
enum Periodo { | |
Corrente | |
Anteriores | |
Todos | |
EntreDatas | |
} | |
model PainelConteudo { | |
id Int @id @default(autoincrement()) | |
painel_id Int | |
painel Painel @relation(fields: [painel_id], references: [id]) | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
periodicidade Periodicidade | |
periodo Periodo @default(Todos) | |
periodo_valor Int? | |
periodo_inicio DateTime? @db.Date | |
periodo_fim DateTime? @db.Date | |
mostrar_planejado Boolean | |
mostrar_acumulado Boolean | |
mostrar_indicador Boolean | |
mostrar_acumulado_periodo Boolean @default(false) | |
ordem Int? | |
detalhes PainelConteudoDetalhe[] | |
indicador Indicador? @relation(fields: [indicador_id], references: [id]) | |
indicador_id Int? | |
@@index([painel_id]) | |
@@index([meta_id]) | |
@@map("painel_conteudo") | |
} | |
enum PainelConteudoTipoDetalhe { | |
Variavel | |
Iniciativa | |
Atividade | |
} | |
model PainelConteudoDetalhe { | |
id Int @id @default(autoincrement()) | |
variavel_id Int? | |
variavel Variavel? @relation(fields: [variavel_id], references: [id]) | |
iniciativa_id Int? | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade_id Int? | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
painel_conteudo_id Int | |
painel_conteudo PainelConteudo @relation(fields: [painel_conteudo_id], references: [id], onDelete: Cascade) | |
pai_id Int? | |
pai PainelConteudoDetalhe? @relation("fk", fields: [pai_id], references: [id], onDelete: Cascade) | |
mostrar_indicador Boolean | |
ordem Int? | |
tipo PainelConteudoTipoDetalhe | |
filhos PainelConteudoDetalhe[] @relation("fk") | |
@@index([painel_conteudo_id]) | |
@@index([pai_id]) | |
@@map("painel_conteudo_detalhe") | |
} | |
model GrupoPainel { | |
id Int @id @default(autoincrement()) | |
nome String @unique | |
ativo Boolean @default(true) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
pessoas PessoaGrupoPainel[] | |
paineis PainelGrupoPainel[] | |
@@map("grupo_painel") | |
} | |
model PessoaGrupoPainel { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
grupo_painel_id Int | |
grupo_painel GrupoPainel @relation(fields: [grupo_painel_id], references: [id]) | |
@@index([pessoa_id]) | |
@@index([grupo_painel_id]) | |
@@map("pessoa_grupo_painel") | |
} | |
model PainelGrupoPainel { | |
id Int @id @default(autoincrement()) | |
painel_id Int | |
painel Painel @relation(fields: [painel_id], references: [id]) | |
grupo_painel_id Int | |
grupo_painel GrupoPainel @relation(fields: [grupo_painel_id], references: [id]) | |
@@index([painel_id]) | |
@@index([grupo_painel_id]) | |
@@map("painel_grupos") | |
} | |
enum CicloFase { | |
Coleta | |
Analise | |
Risco | |
Fechamento | |
} | |
// tabela de origem dos intervalos padrões | |
model CicloFasesBase { | |
id Int @id @default(autoincrement()) | |
ciclo_fase CicloFase @unique | |
n_dias_do_inicio_mes Int | |
duracao Int // quando negativo, vai subtrair do final do mes | |
@@map("ciclo_fases_base") | |
} | |
// se um dia quiser sobre-escrever em um PDM | |
model CicloFasesPdmConfig { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ciclo_fase CicloFase | |
n_dias_do_inicio_mes Int | |
duracao Int | |
@@map("ciclo_fases_pdm_config") | |
} | |
// ciclos após abertura | |
model CicloFisico { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
data_ciclo DateTime @db.Date() | |
ciclo_fase_atual_id Int? | |
CicloFaseAtual CicloFisicoFase? @relation("atual", fields: [ciclo_fase_atual_id], references: [id]) | |
ativo Boolean @default(false) | |
acordar_ciclo_em DateTime? | |
acordar_ciclo_errmsg String? | |
acordar_ciclo_executou_em DateTime? | |
fases CicloFisicoFase[] @relation("fk") | |
metas Meta[] | |
StatusMetaCicloFisico StatusMetaCicloFisico[] | |
StatusVariavelCicloFisico StatusVariavelCicloFisico[] | |
VariavelCicloFisicoQualitativo VariavelCicloFisicoQualitativo[] | |
VariavelCicloFisicoDocumento VariavelCicloFisicoDocumento[] | |
PedidoComplementacao PedidoComplementacao[] | |
MetaCicloFisicoAnalise MetaCicloFisicoAnalise[] | |
MetaCicloFisicoAnaliseDocumento MetaCicloFisicoAnaliseDocumento[] | |
MetaCicloFisicoRisco MetaCicloFisicoRisco[] | |
MetaCicloFisicoFechamento MetaCicloFisicoFechamento[] | |
FormulaCompostaCicloFisicoQualitativo FormulaCompostaCicloFisicoQualitativo[] | |
FormulaCompostaCicloFisicoDocumento FormulaCompostaCicloFisicoDocumento[] | |
VariaveisSuspensasCicloBase VariavelSuspensaControle[] @relation("CicloFisicoBase") | |
VariaveisSuspensasCicloCorrente VariavelSuspensaControle[] @relation("CicloFisicoCorrente") | |
MetaStatusConsolidadoCf MetaStatusConsolidadoCf[] | |
// create unique index ix_ciclo_fisico_uniq_ativo on ciclo_fisico(ativo) where ativo=true; | |
// existe mais um index aqui, que não está no prisma que não suporta partial index | |
@@index([pdm_id]) | |
@@index([data_ciclo]) | |
@@map("ciclo_fisico") | |
} | |
// data de cada uma das fases | |
model CicloFisicoFase { | |
id Int @id @default(autoincrement()) | |
ciclo_fisico_id Int | |
ciclo_fisico CicloFisico @relation("fk", fields: [ciclo_fisico_id], references: [id]) | |
cf_estou_em_usos CicloFisico[] @relation("atual") | |
data_inicio DateTime @db.Date() | |
data_fim DateTime @db.Date() | |
ciclo_fase CicloFase | |
metas Meta[] | |
@@index([ciclo_fisico_id]) | |
@@map("ciclo_fisico_fase") | |
} | |
model PessoaAcessoPdm { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int @unique | |
metas_cronograma Int[] | |
metas_variaveis Int[] | |
variaveis Int[] | |
cronogramas_etapas Int[] | |
data_ciclo DateTime? @db.Date | |
perfil String | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@index([pessoa_id]) | |
@@map("pessoa_acesso_pdm") | |
} | |
// diz se as linhas no pessoa_acesso_pdm estão válidas ou não | |
model PessoaAcessoPdmValido { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int @unique | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@index([pessoa_id]) | |
@@map("pessoa_acesso_pdm_valido") | |
} | |
model MetaCicloFisicoAnalise { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
informacoes_complementares String? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("meta_ciclo_fisico_analise") | |
} | |
model MetaCicloFisicoAnaliseDocumento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ciclo_fisico_id]) | |
@@map("meta_ciclo_fisico_analise_documento") | |
} | |
model MetaCicloFisicoRisco { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
detalhamento String? /// HTML | |
ponto_de_atencao String? /// HTML | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("meta_ciclo_fisico_risco") | |
} | |
model MetaCicloFisicoFechamento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
referencia_data DateTime @db.Date | |
comentario String? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("meta_ciclo_fisico_fechamento") | |
} | |
model VariavelCicloFisicoQualitativo { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
variavel_id Int | |
referencia_data DateTime @db.Date | |
analise_qualitativa String? | |
enviado_para_cp Boolean | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("variavel_ciclo_fisico_qualitativo") | |
} | |
model FormulaCompostaCicloFisicoQualitativo { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
formula_composta_id Int | |
referencia_data DateTime @db.Date /// data do ciclo | |
analise_qualitativa String? | |
// no momento não há regra de negocio que usa esse campo, só guarda o status de qual botão foi clicado | |
// não tem processo de perdir revisão apenas de uma formula-composta | |
enviado_para_cp Boolean | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id, ultima_revisao]) | |
@@map("formula_composta_ciclo_fisico_qualitativo") | |
} | |
model FormulaCompostaCicloFisicoDocumento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
formula_composta_id Int | |
referencia_data DateTime @db.Date /// data do ciclo | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
formula_composta FormulaComposta @relation(fields: [formula_composta_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([ciclo_fisico_id, formula_composta_id]) | |
@@map("formula_composta_ciclo_fisico_documento") | |
} | |
model PedidoComplementacao { | |
id Int @id @default(autoincrement()) | |
ciclo_fisico_id Int | |
variavel_id Int | |
pedido String | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
atendido Boolean | |
atendido_em DateTime? | |
atendido_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaAtendeu Pessoa? @relation("atendeu", fields: [atendido_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([ciclo_fisico_id, variavel_id, ultima_revisao]) | |
@@map("variavel_ciclo_fisico_pedido_complementacao") | |
} | |
model VariavelCicloFisicoDocumento { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
variavel_id Int | |
referencia_data DateTime @db.Date | |
arquivo_id Int | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
pessoaCriador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
pessoaRemovedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([ciclo_fisico_id, variavel_id]) | |
@@map("variavel_ciclo_fisico_documento") | |
} | |
model StatusVariavelCicloFisico { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
variavel_id Int | |
aguarda_cp Boolean @default(false) | |
aguarda_complementacao Boolean @default(false) | |
conferida Boolean @default(false) | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
@@index([variavel_id]) | |
@@index([ciclo_fisico_id]) | |
@@map("status_variavel_ciclo_fisico") | |
} | |
model StatusMetaCicloFisico { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
ciclo_fisico_id Int | |
pessoa_id Int | |
status_coleta String @default("") | |
// nao atualizadas = uma ou mais variaveis não preenchida | |
// aguardando complementação = uma ou mais variavel aguarda complementação | |
// não conferidas = uma ou mais variavel não foi conferida | |
// outros = qualquer uma não categorizada acima | |
status_cronograma String @default("") | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
@@index([pessoa_id]) | |
@@index([ciclo_fisico_id]) | |
@@map("status_meta_ciclo_fisico") | |
} | |
model PdmOrcamentoConfig { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
ano_referencia Int | |
previsao_custo_disponivel Boolean @default(true) | |
planejado_disponivel Boolean @default(false) | |
execucao_disponivel Boolean @default(false) | |
execucao_disponivel_meses Int[] @default([3, 6, 9, 12]) | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
@@index([pdm_id]) | |
@@map("meta_orcamento_config") | |
} | |
model PdmOrcamentoRealizadoConfig { | |
id Int @id @default(autoincrement()) | |
ano_referencia Int | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
ultima_revisao Boolean? | |
atualizado_em DateTime | |
atualizado_por Int | |
atualizador Pessoa @relation(fields: [atualizado_por], references: [id]) | |
execucao_concluida Boolean @default(false) | |
@@unique([meta_id, ano_referencia, orgao_id, ultima_revisao]) | |
@@map("pdm_orcamento_realizado_config") | |
} | |
model OrcamentoPrevisto { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
versao_anterior_id Int? @unique | |
ultima_revisao Boolean @default(false) | |
ano_referencia Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
custo_previsto Float @db.DoublePrecision | |
parte_dotacao String @default("") | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("atualizador", fields: [atualizado_por], references: [id]) | |
versao_anterior OrcamentoPrevisto? @relation("versao_anterior", fields: [versao_anterior_id], references: [id]) | |
versao_seguinte OrcamentoPrevisto? @relation("versao_anterior") | |
@@index([meta_id, ano_referencia]) | |
@@map("meta_orcamento") | |
} | |
model DotacaoPlanejado { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
val_orcado_inicial Decimal @db.Decimal(15, 2) | |
val_orcado_atualizado Decimal @db.Decimal(15, 2) | |
saldo_disponivel Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao]) | |
@@map("dotacao_planejado") | |
} | |
model PdmDotacaoPlanejado { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
pressao_orcamentaria Boolean | |
soma_valor_planejado Decimal @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao]) | |
@@map("pdm_dotacao_planejado") | |
} | |
model PortfolioDotacaoPlanejado { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
pressao_orcamentaria Boolean | |
soma_valor_planejado Decimal @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao]) | |
@@map("portfolio_dotacao_planejado") | |
} | |
model DotacaoRealizado { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
empenho_liquido Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao]) | |
@@map("dotacao_realizado") | |
} | |
model PdmDotacaoRealizado { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao]) | |
@@map("pdm_dotacao_realizado") | |
} | |
model PortfolioDotacaoRealizado { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao]) | |
@@map("portfolio_dotacao_realizado") | |
} | |
model DotacaoProcesso { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
dotacao_processo String | |
empenho_liquido Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao, dotacao_processo]) | |
@@map("dotacao_processo") | |
} | |
model PdmDotacaoProcesso { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao, dotacao_processo]) | |
@@map("pdm_dotacao_processo") | |
} | |
model PortfolioDotacaoProcesso { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao, dotacao_processo]) | |
@@map("portfolio_dotacao_processo") | |
} | |
model DotacaoProcessoNota { | |
id Int @id @default(autoincrement()) | |
informacao_valida Boolean | |
sincronizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
dotacao_processo String | |
dotacao_processo_nota String | |
empenho_liquido Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
@@unique([ano_referencia, dotacao, dotacao_processo, dotacao_processo_nota]) | |
@@map("dotacao_processo_nota") | |
} | |
model PdmDotacaoProcessoNota { | |
id Int @id @default(autoincrement()) | |
pdm_id Int | |
pdm Pdm @relation(fields: [pdm_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
dotacao_processo_nota String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([pdm_id, ano_referencia, dotacao, dotacao_processo, dotacao_processo_nota]) | |
@@map("pdm_dotacao_processo_nota") | |
} | |
model PortfolioDotacaoProcessoNota { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano_referencia Int | |
dotacao String | |
dotacao_processo String | |
dotacao_processo_nota String | |
soma_valor_empenho Decimal @default(0) @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @default(0) @db.Decimal(15, 2) | |
@@unique([portfolio_id, ano_referencia, dotacao, dotacao_processo, dotacao_processo_nota]) | |
@@map("portfolio_dotacao_processo_nota") | |
} | |
model OrcamentoPlanejado { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
valor_planejado Decimal @db.Decimal(15, 2) | |
ano_referencia Int | |
dotacao String | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id]) | |
@@index([projeto_id]) | |
@@index([ano_referencia, meta_id]) | |
@@index([ano_referencia, iniciativa_id]) | |
@@index([ano_referencia, atividade_id]) | |
@@index([ano_referencia, dotacao]) | |
@@map("orcamento_planejado") | |
} | |
model OrcamentoPrevistoZerado { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
ano_referencia Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("orcamento_previsto_zerado") | |
} | |
model OrcamentoRealizadoItem { | |
id Int @id @default(autoincrement()) | |
valor_empenho Decimal @db.Decimal(15, 2) | |
valor_liquidado Decimal @db.Decimal(15, 2) | |
percentual_empenho Decimal? @db.Decimal(7, 4) | |
percentual_liquidado Decimal? @db.Decimal(7, 4) | |
mes Int | |
mes_corrente Boolean @default(false) | |
/// data compilada a partir do ano/mes | |
data_referencia DateTime @db.Date() | |
sobrescrito_em DateTime? | |
sobrescrito_por Int? | |
sobrescritor Pessoa? @relation("sobrescritor", fields: [sobrescrito_por], references: [id]) | |
OrcamentoRealizado OrcamentoRealizado @relation(fields: [orcamento_realizado_id], references: [id]) | |
orcamento_realizado_id Int | |
@@index([orcamento_realizado_id]) | |
@@map("orcamento_realizado_item") | |
} | |
model OrcamentoRealizado { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
ano_referencia Int | |
mes_utilizado Int | |
dotacao String | |
processo String? | |
nota_empenho String? | |
dotacao_complemento String? | |
soma_valor_empenho Decimal @db.Decimal(15, 2) | |
soma_valor_liquidado Decimal @db.Decimal(15, 2) | |
itens OrcamentoRealizadoItem[] | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
removido_em DateTime? | |
removido_por Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@index([meta_id]) | |
@@index([projeto_id]) | |
@@index([ano_referencia, projeto_id]) | |
@@index([ano_referencia, meta_id]) | |
@@index([ano_referencia, dotacao]) | |
@@map("orcamento_realizado") | |
} | |
model SofEntidade { | |
ano Int @id | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
dados Json @default("{}") @db.Json | |
// marca se acontecer erro ao atualizar a materialized view | |
errmsg String? | |
@@map("sof_entidade") | |
} | |
model TextoConfig { | |
id Int @id @default(1) | |
bemvindo_email String | |
tos String | |
@@map("texto_config") | |
} | |
enum TipoRelatorio { | |
Consolidado | |
Analitico | |
} | |
enum FonteRelatorio { | |
Orcamento | |
Indicadores | |
MonitoramentoMensal | |
PrevisaoCusto | |
Projeto | |
Projetos | |
ProjetoStatus | |
ProjetoPrevisaoCusto | |
ProjetoOrcamento | |
Parlamentares | |
Transferencias | |
} | |
model Relatorio { | |
id Int @id @default(autoincrement()) | |
pdm_id Int? | |
parametros Json @default("{}") @db.Json | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int? | |
arquivo_id Int | |
removido_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
tipo TipoRelatorio? // não deu certo remover, o prisma não cria o Enum pq não ta sendo usado! | |
fonte FonteRelatorio | |
criador Pessoa? @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
pdm Pdm? @relation(fields: [pdm_id], references: [id]) | |
ProjetoRelatorioFila ProjetoRelatorioFila[] | |
@@index([pdm_id, criado_em, removido_em]) | |
@@index([fonte, criado_em]) | |
@@map("relatorio") | |
} | |
enum ProjetoFase { | |
Registro | |
Planejamento | |
Acompanhamento | |
Encerramento | |
} | |
enum ProjetoStatus { | |
Registrado // Arquivado ou Priorizado caso seja priorizado | |
Selecionado // Arquivado ou EmPlanejamento caso seja Aprovado | |
EmPlanejamento // Arquivado ou Validado caso o iniciado | |
Planejado // vai para o SEI o arquivo do relatorio | |
Validado // EmSuspensao ou EmFechamento caso fechado | |
EmAcompanhamento // Suspenso, fechado | |
Suspenso // Volta pra EmAcompanhamento ou Fechado | |
Fechado // vai para o SEI o arquivo do relatorio | |
} | |
model Portfolio { | |
id Int @id @default(autoincrement()) | |
titulo String | |
Projeto Projeto[] | |
orgaos PortfolioOrgao[] | |
tipo_projeto TipoProjeto @default(PP) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
nivel_maximo_tarefa Int @default(5) @db.SmallInt | |
nivel_regionalizacao Int @default(1) @db.SmallInt | |
orcamento_execucao_disponivel_meses Int[] @default([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) | |
descricao String @default("") | |
/// data informada pelo usuario | |
data_criacao DateTime? @db.Date | |
// Boolean que indica se portfolio é "template" | |
// Ou seja, utilizado para clonagem | |
modelo_clonagem Boolean @default(false) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
ProjetoNumerosSequenciais ProjetoNumeroSequencial[] | |
PortfolioDotacaoPlanejado PortfolioDotacaoPlanejado[] | |
PortfolioDotacaoRealizado PortfolioDotacaoRealizado[] | |
PortfolioDotacaoProcesso PortfolioDotacaoProcesso[] | |
PortfolioDotacaoProcessoNota PortfolioDotacaoProcessoNota[] | |
ImportacaoLog ImportacaoOrcamento[] | |
PortfolioGrupoPortfolio PortfolioGrupoPortfolio[] | |
projetosCompartilhados PortfolioProjetoCompartilhado[] | |
@@map("portfolio") | |
} | |
model PortfolioOrgao { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int @map("portifolio_id") | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([portfolio_id]) | |
@@map("portifolio_orgao") | |
} | |
enum CategoriaProcessoSei { | |
Encerramento | |
Aprovacao | |
Manual | |
} | |
model ProjetoRegistroSei { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
categoria CategoriaProcessoSei | |
processo_sei String | |
descricao String? | |
link String? | |
comentarios String? | |
observacoes String? | |
// Link, descrição, metadados | |
registro_sei_info Json @default("{}") | |
registro_sei_errmsg String? | |
criado_em DateTime? | |
criado_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_registro_sei") | |
} | |
enum TipoProjeto { | |
PP | |
MDO | |
} | |
model Projeto { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
tipo TipoProjeto @default(PP) | |
portfolios_compartilhados PortfolioProjetoCompartilhado[] | |
meta_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
projeto_etapa_id Int? | |
projeto_etapa ProjetoEtapa? @relation(fields: [projeto_etapa_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
regiao_id Int? | |
regiao Regiao? @relation(fields: [regiao_id], references: [id]) | |
logradouro_tipo String? | |
logradouro_nome String? | |
logradouro_numero String? | |
logradouro_cep String? | |
codigo String? // abre apenas depois de priorizado | |
previsao_custo Float? | |
nome String | |
objeto String /// HTML | |
objetivo String /// HTML | |
origem_tipo ProjetoOrigemTipo @default(Outro) | |
origem_eh_pdm Boolean @default(false) | |
origem_outro String? | |
meta_codigo String? | |
publico_alvo String /// HTML | |
previsao_inicio DateTime? @db.Date() // data de inicio é o ponto fixo, entao se mudar a duracao no frontend, ajusta o final | |
previsao_termino DateTime? @db.Date() | |
previsao_duracao Int? | |
ano_orcamento Int[] @default([]) | |
risco_maximo String? | |
qtde_riscos Int @default(0) | |
status ProjetoStatus | |
fase ProjetoFase | |
arquivado Boolean @default(false) | |
eh_prioritario Boolean @default(false) | |
// Fase=Registro | |
resumo String // campo livre | |
escopo String? @ignore | |
principais_etapas String? | |
principais_etapas_antigo String? @ignore // valor do antigo principais_etapas read-only apos Fase=Registro | |
// Fase=Planejamento | |
nao_escopo String? /// HTML | |
// Fase=Detalhamento, required pra entrar na fase Planejamento | |
secretario_responsavel String? | |
secretario_executivo String? | |
coordenador_ue String? | |
orgao_gestor_id Int | |
orgao_gestor Orgao @relation("orgao_gestor", fields: [orgao_gestor_id], references: [id]) | |
responsaveis_no_orgao_gestor Int[] @default([]) | |
orgao_responsavel_id Int? | |
orgao_responsavel Orgao? @relation("orgao_responsavel", fields: [orgao_responsavel_id], references: [id]) | |
responsavel_id Int? | |
responsavel Pessoa? @relation("ppResponsavel", fields: [responsavel_id], references: [id]) | |
// fornecido pelo user | |
data_aprovacao DateTime? @db.Date | |
data_revisao DateTime? @db.Date | |
versao String? | |
registrado_em DateTime | |
registrado_por Int | |
pessoaQRegistrou Pessoa? @relation("criador", fields: [registrado_por], references: [id]) | |
// quem moveu de EmRegistro para EmDetalhamento | |
selecionado_em DateTime? | |
selecionado_por Int? | |
pessoaQSelecionou Pessoa? @relation("ppSelecionado", fields: [selecionado_por], references: [id]) | |
// quem moveu de EmDetalhamento para EmPlanejamento | |
em_planejamento_em DateTime? | |
em_planejamento_por Int? | |
pessoaQPlanejou Pessoa? @relation("ppEm_planejamento", fields: [em_planejamento_por], references: [id]) | |
// quem arquivou, vindo de qualquer lugar | |
arquivado_em DateTime? | |
arquivado_por Int? | |
pessoaQArquivou Pessoa? @relation("ppArquivado", fields: [arquivado_por], references: [id]) | |
// quem suspendeu (vindo do EmExecucao indo pro EmSuspensao) | |
suspenso_em DateTime? | |
suspenso_por Int? | |
pessoaQSuspendeu Pessoa? @relation("ppSuspenso", fields: [suspenso_por], references: [id]) | |
restaurado_em DateTime? | |
restaurado_por Int? | |
pessoaQRestaurou Pessoa? @relation("ppRestaurou", fields: [restaurado_por], references: [id]) | |
validado_em DateTime? | |
validado_por Int? | |
pessoaQValidado Pessoa? @relation("ppValidado", fields: [validado_por], references: [id]) | |
finalizou_planejamento_em DateTime? | |
finalizou_planejamento_por Int? | |
pessoaQFinalizouPlan Pessoa? @relation("ppFinalizouPlan", fields: [finalizou_planejamento_por], references: [id]) | |
// quem migrou de EmSuspensao indo EmFechamento | |
cancelado_em DateTime? | |
cancelado_por Int? | |
pessoaQCancelou Pessoa? @relation("ppCancelou", fields: [cancelado_por], references: [id]) | |
// quem migrou de EmSuspensao indo EmExecucao | |
reiniciado_em DateTime? | |
reiniciado_por Int? | |
pessoaQReiniciou Pessoa? @relation("ppReiniciou", fields: [reiniciado_por], references: [id]) | |
// quem migrou de EmPlanejamento para EmExecucao | |
iniciado_em DateTime? | |
iniciado_por Int? | |
pessoaQIniciou Pessoa? @relation("ppIniciou", fields: [iniciado_por], references: [id]) | |
// quem migrou de EmExecucao para EmFechamento | |
terminado_em DateTime? | |
terminado_por Int? | |
pessoaQTerminou Pessoa? @relation("ppTerminou", fields: [terminado_por], references: [id]) | |
premissas ProjetoPremissa[] // depois de selecionado | |
restricoes ProjetoRestricao[] // depois de selecionado | |
licoes_aprendidas ProjetoLicaoAprendida[] // só na execucao | |
fonte_recursos ProjetoFonteRecurso[] // sempre | |
documentos ProjetoDocumento[] // sempre | |
TarefaCronograma TarefaCronograma[] // depois de EmPlanejamento | |
ProjetoRisco ProjetoRisco[] // depois de EmPlanejamento | |
ProjetoAcompanhamento ProjetoAcompanhamento[] // depois de EmAcompanhamento | |
orgaos_participantes ProjetoOrgaoParticipante[] // sempre | |
removido_em DateTime? | |
removido_por Int? | |
ProjetoRegistroSei ProjetoRegistroSei[] | |
ProjetoRelatorioFila ProjetoRelatorioFila[] | |
ProjetoNumerosSequenciais ProjetoNumeroSequencial[] | |
MetaOrcamento OrcamentoPrevisto[] | |
OrcamentoPlanejado OrcamentoPlanejado[] | |
OrcamentoRealizado OrcamentoRealizado[] | |
OrcamentoPlanejadoZerado OrcamentoPrevistoZerado[] | |
Diretorio Diretorio[] | |
ProjetoGrupoPortfolio ProjetoGrupoPortfolio[] | |
equipe ProjetoEquipe[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
// Módulo de gestão de obras | |
gruposTematicos ProjetoGrupoTematico[] | |
tiposIntervencao ProjetoTipoIntervencao[] | |
equipamentos ProjetoEquipamento[] | |
@@index([removido_em]) | |
@@map("projeto") | |
} | |
model PortfolioProjetoCompartilhado { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
criado_por Int | |
criado_em DateTime | |
removido_por Int? | |
removido_em DateTime? | |
// Colunas de atualização não são utilizadas por agora. | |
// Mas se pedirem para dados adicionais neste relacionamento | |
// Já teremos estes campos prontos. | |
atualizado_por Int? | |
atualizado_em DateTime? | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
@@map("portfolio_projeto_compartilhado") | |
} | |
model ProjetoEquipe { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
pessoa_id Int | |
orgao_id Int | |
criado_por Int | |
criado_em DateTime | |
removido_por Int? | |
removido_em DateTime? | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
pessoa Pessoa @relation("fk", fields: [pessoa_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_equipe") | |
} | |
model AcompanhamentoTipo { | |
id Int @id @default(autoincrement()) | |
nome String | |
tipo_projeto TipoProjeto @default(PP) | |
criado_por Int? | |
criado_em DateTime? | |
atualizado_por Int? | |
atualizado_em DateTime? | |
removido_por Int? | |
removido_em DateTime? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
acompanhamentos ProjetoAcompanhamento[] | |
@@map("acompanhamento_tipo") | |
} | |
enum ProjetoMotivoRelatorio { | |
MudancaDeStatus | |
ProjetoSelecionado | |
ProjetoPlanejado | |
ProjetoEncerrado | |
} | |
model ProjetoRelatorioFila { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
congelado_em DateTime? @map("locked_at") | |
executado_em DateTime? | |
relatorio_id Int? | |
relatorio Relatorio? @relation(fields: [relatorio_id], references: [id]) | |
motivado_relatorio ProjetoMotivoRelatorio @default(MudancaDeStatus) | |
@@index([projeto_id]) | |
@@map("projeto_relatorio_fila") | |
} | |
enum ProjetoOrigemTipo { | |
PdmSistema | |
PdmAntigo | |
Outro | |
} | |
model ProjetoOrgaoParticipante { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_orgao_participante") | |
} | |
model ProjetoPremissa { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
premissa String | |
@@index([projeto_id]) | |
@@map("projeto_premissa") | |
} | |
model ProjetoRestricao { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
restricao String | |
@@index([projeto_id]) | |
@@map("projeto_restricao") | |
} | |
model ProjetoLicaoAprendida { | |
id Int @id @default(autoincrement()) | |
data_registro DateTime | |
responsavel String | |
sequencial Int | |
projeto_id Int | |
criado_por Int | |
criado_em DateTime | |
removido_por Int? | |
removido_em DateTime? | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
criador Pessoa @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
descricao String | |
observacao String? | |
contexto String? | |
resultado String? | |
@@index([projeto_id]) | |
@@map("projeto_licao_aprendida") | |
} | |
model ProjetoFonteRecurso { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
fonte_recurso_cod_sof String | |
fonte_recurso_ano Int | |
valor_percentual Float? | |
valor_nominal Float? | |
requer_revisao_sof Boolean @default(false) | |
criado_em DateTime @default(now()) | |
atualizado_em DateTime @default(now()) | |
@@index([projeto_id]) | |
@@map("projeto_fonte_recurso") | |
} | |
model ProjetoDocumento { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
arquivo_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
descricao String? | |
data DateTime? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_documento") | |
} | |
model ProjetoNumeroSequencial { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
ano Int | |
valor Int | |
@@unique([projeto_id, portfolio_id]) | |
@@unique([projeto_id]) | |
@@map("projeto_numero_sequencial") | |
} | |
model Tarefa { | |
id Int @id @default(autoincrement()) | |
tarefa_cronograma TarefaCronograma @relation(fields: [tarefa_cronograma_id], references: [id]) | |
tarefa_cronograma_id Int | |
orgao_id Int? | |
tarefa_pai_id Int? | |
tarefa_pai Tarefa? @relation("tarefa_pai", fields: [tarefa_pai_id], references: [id]) | |
filhos Tarefa[] @relation("tarefa_pai") | |
orgao Orgao? @relation(fields: [orgao_id], references: [id]) | |
tarefa String // 60 chars | |
descricao String | |
recursos String /// pessoas que executam a task, não necessariamente dentro do SMAE | |
numero Int | |
nivel Int @db.SmallInt | |
// pode calcular se o termino estiver null, | |
// mas o inicio sempre precisa existir pra fazer as contas, ou seja, se estiver null, é ignorado na | |
// parte de buscar o minimo | |
inicio_planejado DateTime? @db.Date() // data de inicio é o ponto fixo, entao se mudar a duracao no frontend, ajusta o final | |
termino_planejado DateTime? @db.Date() | |
duracao_planejado Int? | |
n_dep_inicio_planejado Int @default(0) @db.SmallInt | |
n_dep_termino_planejado Int @default(0) @db.SmallInt | |
ordem_topologica_inicio_planejado Int[] | |
ordem_topologica_termino_planejado Int[] | |
inicio_real DateTime? @db.Date() | |
termino_real DateTime? @db.Date() | |
duracao_real Int? | |
inicio_planejado_calculado Boolean @default(false) | |
termino_planejado_calculado Boolean @default(false) | |
duracao_planejado_calculado Boolean @default(false) | |
db_projecao_inicio DateTime? @map("projecao_inicio") @db.Date() | |
db_projecao_termino DateTime? @map("projecao_termino") @db.Date() | |
db_projecao_atraso Int? @map("projecao_atraso") | |
n_filhos_imediatos Int @default(0) | |
custo_estimado Float? | |
custo_real Float? | |
eh_marco Boolean @default(false) | |
// calculado no caso dos nós, mas é o % realizado de fato, no caso das folhas | |
// formula: soma (duracao prevista * nvl(percentual realizado, 0) / 100) / (soma das duracoes previstas) | |
percentual_concluido Float? | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
dependencias TarefaDependente[] @relation("dependencias") | |
ref_dependentes TarefaDependente[] @relation("ref_dependentes") | |
RiscoTarefa RiscoTarefa[] | |
AvisoEmail AvisoEmail[] | |
// Colunas de mapeamento para fases e tarefas do Workflow da transferência. | |
transferencia_fase_id Int? | |
transferencia_fase TransferenciaAndamento? @relation(fields: [transferencia_fase_id], references: [id]) | |
transferencia_tarefa_id Int? | |
transferencia_tarefa TransferenciaAndamentoTarefa? @relation(fields: [transferencia_tarefa_id], references: [id]) | |
@@unique([transferencia_fase_id]) | |
@@unique([transferencia_tarefa_id]) | |
@@index([tarefa_pai_id]) | |
@@index([tarefa_cronograma_id, removido_em]) | |
@@index([tarefa_pai_id, removido_em]) | |
@@map("tarefa") | |
} | |
// end2start -- > start_time is preceding task max(end_time) + latency (in days) | |
// start2start --> start_time is preceding task max(start_time) + + latency (in days) | |
// start2end -- > end_time is preceding task preceding task max(start_time) + latencia | |
// end2end --> end_time is preceding task preceding task max(end_time) + latencia | |
enum TarefaDependenteTipo { | |
termina_pro_inicio | |
inicia_pro_inicio | |
inicia_pro_termino | |
termina_pro_termino | |
} | |
model TarefaDependente { | |
id Int @id @default(autoincrement()) | |
tarefa_id Int | |
dependencia_tarefa_id Int | |
tipo TarefaDependenteTipo | |
latencia Int | |
tarefa Tarefa @relation("dependencias", fields: [tarefa_id], references: [id]) | |
tarefas_dependente Tarefa @relation("ref_dependentes", fields: [dependencia_tarefa_id], references: [id]) | |
@@map("tarefa_dependente") | |
} | |
model TarefaCronograma { | |
id Int @id @default(autoincrement()) | |
projeto_id Int? | |
transferencia_id Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
transferencia Transferencia? @relation(fields: [transferencia_id], references: [id]) | |
// calculado pelo cronograma | |
previsao_inicio DateTime? @db.Date() | |
previsao_termino DateTime? @db.Date() | |
previsao_duracao Int? | |
realizado_inicio DateTime? @db.Date() | |
realizado_termino DateTime? @db.Date() | |
realizado_duracao Int? | |
realizado_custo Float? | |
projecao_termino DateTime? @db.Date() | |
tolerancia_atraso Int @default(0) // em dias | |
em_atraso Boolean @default(false) | |
atraso Int? | |
percentual_concluido Int? // calculado | |
percentual_atraso Int? | |
status_cronograma String? | |
previsao_custo Float? | |
criado_em DateTime? | |
criado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
// data em que o sistema deve novamente calcular os atrasos automaticamente | |
tarefas_proximo_recalculo DateTime @default(now()) | |
criador Pessoa? @relation("criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
Tarefa Tarefa[] | |
AvisoEmail AvisoEmail[] | |
@@index([projeto_id]) | |
@@index([transferencia_id]) | |
@@map("tarefa_cronograma") | |
} | |
model ProjetoRisco { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
titulo String @default("(sem título)") | |
codigo Int | |
registrado_em DateTime | |
descricao String? | |
causa String? | |
consequencia String? | |
probabilidade Int? | |
impacto Int? | |
status_risco StatusRisco | |
// calculados | |
nivel Int? // probabilidade * impacto | |
grau Int? // cada nivel vai dar um grau diferente | |
resposta String? | |
RiscoTarefa RiscoTarefa[] | |
ProjetoAcompanhamentoRisco ProjetoAcompanhamentoRisco[] | |
planos_de_acao PlanoAcao[] | |
/// lista de planos de ação sem data de terminimo, populado via trigger | |
planos_de_acao_sem_dt_term Int[] | |
risco_tarefa_outros String? // String deve ser preenchida caso o user queira informar um "risco_tarefa" que seja de fora do PDM | |
removido_em DateTime? | |
removido_por Int? | |
criado_em DateTime | |
criado_por Int | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
@@index([projeto_id]) | |
@@map("projeto_risco") | |
} | |
// de 0 até N tarefas | |
model RiscoTarefa { | |
id Int @id @default(autoincrement()) | |
tarefa_id Int | |
tarefa Tarefa @relation(fields: [tarefa_id], references: [id]) | |
projeto_risco_id Int | |
risco ProjetoRisco @relation(fields: [projeto_risco_id], references: [id]) | |
@@index([tarefa_id]) | |
@@index([projeto_risco_id]) | |
@@map("risco_tarefa") | |
} | |
model PlanoAcao { | |
id Int @id @default(autoincrement()) | |
projeto_risco_id Int | |
projeto_risco ProjetoRisco @relation(fields: [projeto_risco_id], references: [id]) | |
contramedida String | |
prazo_contramedida DateTime? @db.Date() // data do termino previsto | |
custo Float? | |
custo_percentual Float? // custo em relacao ao projeto todo, coalesce(custo_real, custo_estimado) -- eu acho | |
medidas_de_contingencia String | |
orgao_id Int? | |
orgao Orgao? @relation(fields: [orgao_id], references: [id]) | |
responsavel String? | |
PlanoAcaoMonitoramento PlanoAcaoMonitoramento[] | |
contato_do_responsavel String? | |
data_termino DateTime? @db.Date() | |
removido_em DateTime? | |
removido_por Int? | |
criado_em DateTime | |
criado_por Int | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
@@index([projeto_risco_id]) | |
@@map("plano_acao") | |
} | |
enum StatusRisco { | |
SemInformacao | |
Aumentando | |
Estatico | |
Diminuindo | |
SobControle | |
ConcluiHdo @map("Fechado") | |
} | |
// desenhado no MER como Monitoramento_Risco | |
model PlanoAcaoMonitoramento { | |
id Int @id @default(autoincrement()) | |
plano_acao_id Int | |
plano_acao PlanoAcao @relation(fields: [plano_acao_id], references: [id]) | |
data_afericao DateTime @db.Date() | |
descricao String | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criado_por Int | |
ultima_revisao Boolean | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([plano_acao_id, data_afericao]) | |
@@index([plano_acao_id, ultima_revisao]) | |
@@map("plano_acao_monitoramento") | |
} | |
model ProjetoAcompanhamentoItem { | |
id Int @id @default(autoincrement()) | |
projeto_acompanhamento_id Int | |
projeto_acompanhamento ProjetoAcompanhamento @relation(fields: [projeto_acompanhamento_id], references: [id]) | |
// Campo para facilitar busca direto no banco e retorno da API. | |
// Definição do campo: ordemProjetoAcompanhamento + '.' + ordemProjetoAcompanhamentoItem | |
numero_identificador String | |
encaminhamento String? | |
responsavel String? | |
prazo_encaminhamento DateTime? @db.Date() | |
prazo_realizado DateTime? @db.Date() | |
ordem Int @db.SmallInt | |
// Campos de criação aceitam null, pois versão inicial foi feita sem estes timestamps. | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
criado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([projeto_acompanhamento_id]) | |
@@map("projeto_acompanhamento_item") | |
} | |
// durante a fase de EmExecução, a cada 15 dias eles criam esse acompanhamento | |
model ProjetoAcompanhamento { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
acompanhanmento_tipo_id Int? // TODO fixo typo | |
acompanhamento_tipo AcompanhamentoTipo? @relation(fields: [acompanhanmento_tipo_id], references: [id], onDelete: SetNull) | |
ordem Int @db.SmallInt | |
data_registro DateTime @db.Date() | |
participantes String | |
detalhamento String? | |
observacao String? | |
detalhamento_status String? | |
pontos_atencao String? | |
pauta String? | |
apresentar_no_relatorio Boolean? | |
cronograma_paralisado Boolean @default(false) | |
criado_em DateTime | |
criado_por Int | |
atualizado_em DateTime @default(now()) | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
ProjetoAcompanhamentoRisco ProjetoAcompanhamentoRisco[] | |
ProjetoAcompanhamentoItem ProjetoAcompanhamentoItem[] | |
@@index([projeto_id, data_registro]) | |
@@map("projeto_acompanhamento") | |
} | |
// de 0 até N riscos pro acompanhamento | |
model ProjetoAcompanhamentoRisco { | |
id Int @id @default(autoincrement()) | |
projeto_risco_id Int | |
projeto_risco ProjetoRisco @relation(fields: [projeto_risco_id], references: [id]) | |
projeto_acompanhamento_id Int | |
projeto_acompanhamento ProjetoAcompanhamento @relation(fields: [projeto_acompanhamento_id], references: [id]) | |
@@map("projeto_acompanhamento_risco") | |
} | |
model MetabasePermissao { | |
id Int @id @default(autoincrement()) | |
permissao String | |
configuracao Json @default("{}") @db.Json | |
metabase_url String | |
metabase_token String | |
ordem Int | |
titulo String | |
@@map("metabase_permissao") | |
} | |
model ImportacaoOrcamento { | |
id Int @id @default(autoincrement()) | |
arquivo_id Int | |
arquivo Arquivo @relation("input", fields: [arquivo_id], references: [id]) | |
saida_arquivo_id Int? | |
saida_arquivo Arquivo? @relation("output", fields: [saida_arquivo_id], references: [id]) | |
pdm_id Int? | |
pdm Pdm? @relation(fields: [pdm_id], references: [id]) | |
portfolio_id Int? | |
portfolio Portfolio? @relation(fields: [portfolio_id], references: [id]) | |
// required ter um criador, pq é required saber quem subiu os dados | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
congelado_em DateTime? @db.Timestamptz(6) | |
processado_em DateTime? @db.Timestamptz(6) | |
processado_errmsg String? | |
linhas_importadas Int? | |
linhas_recusadas Int? | |
criador Pessoa @relation(fields: [criado_por], references: [id]) | |
@@index([criado_em, pdm_id]) | |
@@index([criado_em, portfolio_id]) | |
@@map("importacao_orcamento") | |
} | |
model api_request_log { | |
created_at DateTime @default(now()) @db.Timestamp(6) | |
cf_ray String | |
request_num Int | |
ip String @db.Inet | |
response_time Int | |
response_size Int | |
req_method String | |
req_path String | |
req_host String | |
req_headers String? /// @encrypted?mode=strict | |
req_query String? /// @encrypted?mode=strict | |
req_body String? /// @encrypted?mode=strict | |
req_body_size Int? | |
res_code Int @db.SmallInt | |
created_pessoa_id Int? | |
@@unique([created_at, cf_ray, request_num]) | |
} | |
view view_api_request_log { | |
created_at DateTime @default(now()) @db.Timestamp(6) | |
cf_ray String | |
request_num Int | |
request_date DateTime @db.Date | |
req_path_clean String | |
ip String @db.Inet | |
response_time Int | |
response_size Int | |
req_method String | |
req_path String | |
req_host String | |
req_headers String? | |
req_query String? | |
req_body String? | |
req_body_size Int? | |
res_code Int @db.SmallInt | |
created_pessoa_id Int? | |
@@unique([created_at, cf_ray, request_num]) | |
} | |
// view que já faz o join dos registros da meta_orgao onde responsavel=true | |
view view_meta_pessoa_responsavel { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
} | |
view view_atividade_pessoa_responsavel { | |
id Int @id @default(autoincrement()) | |
atividade_id Int | |
iniciativa_id Int | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
} | |
view view_iniciativa_pessoa_responsavel { | |
id Int @id @default(autoincrement()) | |
iniciativa_id Int | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao_id Int | |
} | |
// view que já faz o join o filtro onde PDM.coordenador_responsavel_cp=true | |
view view_meta_pessoa_responsavel_na_cp { | |
id Int @id @default(autoincrement()) | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
orgao_id Int | |
} | |
// view que já faz o join da view_meta_pessoa_responsavel + tbm a pessoa tem o privilegio | |
// CadastroMeta.orcamento ou CadastroMeta.administrador_orcamento | |
view view_meta_responsavel_orcamento { | |
meta_id Int | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
@@unique([meta_id, pessoa_id]) | |
} | |
// isso aqui estava faltando, era pra ter desde o inicio, cada login/logout | |
model PessoaSessao { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
criado_em DateTime | |
criado_ip String @db.Inet | |
removido_em DateTime? | |
removido_ip String? @db.Inet | |
PessoaSessaoAtiva PessoaSessaoAtiva[] | |
PessoaAtividadeLog PessoaAtividadeLog[] | |
LogGenerico LogGenerico[] | |
@@index([pessoa_id]) | |
@@map("pessoa_sessao") | |
} | |
// tracking de quem está "online" no sistema, não é pra saber o que fez ou não | |
model PessoaAtividadeLog { | |
id Int @id @default(autoincrement()) | |
pessoa_id Int | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
ip String @db.Inet | |
pessoa_sessao_id Int | |
pessoa_sessao PessoaSessao @relation(fields: [pessoa_sessao_id], references: [id]) | |
criado_em DateTime | |
@@index([criado_em]) | |
@@map("pessoa_atividade_log") | |
} | |
model GrupoPortfolio { | |
id Int @id @default(autoincrement()) | |
titulo String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
tipo_projeto TipoProjeto @default(PP) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
ProjetoGrupoPortfolio ProjetoGrupoPortfolio[] | |
PortfolioGrupoPortfolio PortfolioGrupoPortfolio[] | |
GrupoPortfolioPessoa GrupoPortfolioPessoa[] | |
@@index([titulo]) | |
@@map("grupo_portfolio") | |
} | |
model GrupoPortfolioPessoa { | |
id Int @id @default(autoincrement()) | |
grupo_portfolio_id Int | |
orgao_id Int | |
pessoa_id Int | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
grupo_portfolio GrupoPortfolio @relation(fields: [grupo_portfolio_id], references: [id]) | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@map("grupo_portfolio_pessoa") | |
} | |
model ProjetoGrupoPortfolio { | |
id Int @id @default(autoincrement()) | |
projeto_id Int | |
grupo_portfolio_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
GrupoPortfolio GrupoPortfolio @relation(fields: [grupo_portfolio_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("projeto_grupo_portfolio") | |
} | |
model PortfolioGrupoPortfolio { | |
id Int @id @default(autoincrement()) | |
portfolio_id Int | |
grupo_portfolio_id Int | |
portfolio Portfolio @relation(fields: [portfolio_id], references: [id]) | |
GrupoPortfolio GrupoPortfolio @relation(fields: [grupo_portfolio_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("portfolio_grupo_portfolio") | |
} | |
enum task_type { | |
echo | |
refresh_mv | |
refresh_meta | |
aviso_email | |
aviso_email_cronograma_tp | |
aviso_email_nota | |
refresh_transferencia | |
refresh_indicador | |
importacao_parlamentar | |
} | |
enum task_status { | |
pending | |
running | |
completed | |
errored | |
} | |
model task_queue { | |
id Int @id @default(autoincrement()) | |
type task_type | |
status task_status @default(pending) | |
params Json @default("{}") | |
output Json @default("{}") | |
pessoa_id Int? | |
criador Pessoa? @relation(fields: [pessoa_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamp(6) | |
iniciou_em DateTime? @db.Timestamp(6) | |
terminou_em DateTime? @db.Timestamp(6) | |
removido_em DateTime? @db.Timestamp(6) | |
trabalhou_em DateTime? @db.Timestamp(6) | |
erro_em DateTime? @db.Timestamp(6) | |
erro_mensagem String? | |
@@index([status]) | |
@@index([criado_em]) | |
} | |
model feature_flag { | |
id Int @id @default(autoincrement()) | |
panorama Boolean @default(false) | |
mf_v2 Boolean @default(false) | |
} | |
model MetaStatusConsolidadoCf { | |
meta_id Int @id | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
ciclo_fisico_id Int | |
ciclo_fisico CicloFisico @relation(fields: [ciclo_fisico_id], references: [id]) | |
fase CicloFase | |
variaveis_total Int[] | |
variaveis_preenchidas Int[] | |
variaveis_enviadas Int[] | |
variaveis_conferidas Int[] | |
variaveis_aguardando_complementacao Int[] | |
cronograma_total Int[] | |
cronograma_atraso_fim Int[] | |
cronograma_atraso_inicio Int[] | |
orcamento_total Int[] | |
orcamento_pendentes Int[] | |
orcamento_preenchido Int[] | |
analise_qualitativa_enviada Boolean? | |
risco_enviado Boolean? | |
fechamento_enviado Boolean? | |
pendente_cp Boolean | |
pendente_cp_variavel Boolean @default(false) | |
pendente_cp_cronograma Boolean @default(false) | |
orcamento_pendente Boolean @default(false) | |
atualizado_em DateTime | |
@@map("meta_status_consolidado_cf") | |
} | |
model MetaStatusAtrasoConsolidadoMes { | |
meta_id Int | |
mes DateTime @db.Date | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variaveis_atrasadas Int | |
orcamento_atrasados Int | |
@@id([meta_id, mes]) | |
@@map("meta_status_atraso_consolidado_mes") | |
} | |
model MetaStatusAtrasoVariavel { | |
meta_id Int | |
meta Meta @relation(fields: [meta_id], references: [id]) | |
variavel_id Int | |
variavel Variavel @relation(fields: [variavel_id], references: [id]) | |
meses_atrasados DateTime[] @db.Date | |
@@id([meta_id, variavel_id]) | |
@@map("meta_status_atraso_variavel") | |
} | |
view view_etapa_rel_meta { | |
etapa_id Int @id | |
meta_id Int | |
atividade_id Int? | |
iniciativa_id Int? | |
@@map("view_etapa_rel_meta") | |
} | |
view view_etapa_rel_meta_indicador { | |
etapa_id Int @id @default(autoincrement()) | |
tipo String | |
meta_id Int? | |
atividade_id Int? | |
iniciativa_id Int? | |
indicador_id Int? | |
@@map("view_etapa_rel_meta_indicador") | |
} | |
model GeoLocalizacao { | |
id Int @id @default(autoincrement()) | |
tipo GeoReferenciaTipo | |
endereco_exibicao String | |
geom_geojson Json | |
metadata Json | |
lat Float @db.DoublePrecision | |
lon Float @db.DoublePrecision | |
criado_em DateTime @default(now()) @db.Timestamp(6) | |
GeoEnderecoCamada GeoLocalizacaoCamada[] | |
GeoEnderecoReferencia GeoLocalizacaoReferencia[] | |
@@map("geo_localizacao") | |
} | |
model GeoCamadaConfig { | |
id Int @id @default(autoincrement()) | |
tipo_camada String // eg: distrito_municipal | |
chave_camada String // eg: pro caso do distrito_municipal=cd_identificador_subprefeitura | |
titulo_camada String // eg: pro caso do distrito_municipal=nm_distrito_municipal | |
descricao String @default("") | |
nivel_regionalizacao Int? | |
cor String? | |
simplificar_em Float? @db.DoublePrecision | |
GeoCamada GeoCamada[] | |
@@unique([tipo_camada]) | |
@@map("geo_camada_config") | |
} | |
model GeoCamada { | |
id Int @id @default(autoincrement()) | |
tipo_camada String | |
codigo String | |
titulo String | |
nivel_regionalizacao Int? | |
geo_camada_config Int | |
config GeoCamadaConfig @relation(fields: [geo_camada_config], references: [id]) | |
geom_geojson_original Json /// versao original | |
geom_geojson Json /// versão simplificada | |
GeoCamadaRegiao GeoCamadaRegiao[] | |
GeoEnderecoCamada GeoLocalizacaoCamada[] | |
@@unique([tipo_camada, codigo]) | |
@@map("geo_camada") | |
} | |
model GeoCamadaRegiao { | |
id Int @id @default(autoincrement()) | |
regiao_id Int | |
geo_camada_id Int | |
geo_camada GeoCamada @relation(fields: [geo_camada_id], references: [id]) | |
regiao Regiao @relation(fields: [regiao_id], references: [id]) | |
@@map("geo_camada_regiao") | |
} | |
model GeoLocalizacaoCamada { | |
id Int @id @default(autoincrement()) | |
geo_localizacao_id Int | |
geo_camada_id Int | |
geo_localizacao GeoLocalizacao @relation(fields: [geo_localizacao_id], references: [id]) | |
geo_camada GeoCamada @relation(fields: [geo_camada_id], references: [id]) | |
@@map("geo_localizacao_camada") | |
} | |
enum GeoReferenciaTipo { | |
Endereco | |
} | |
model GeoLocalizacaoReferencia { | |
id Int @id @default(autoincrement()) | |
geo_localizacao_id Int | |
criador_por Int? | |
removido_por Int? | |
tipo GeoReferenciaTipo | |
projeto_id Int? | |
iniciativa_id Int? | |
atividade_id Int? | |
meta_id Int? | |
etapa_id Int? | |
projeto Projeto? @relation(fields: [projeto_id], references: [id]) | |
iniciativa Iniciativa? @relation(fields: [iniciativa_id], references: [id]) | |
atividade Atividade? @relation(fields: [atividade_id], references: [id]) | |
meta Meta? @relation(fields: [meta_id], references: [id]) | |
etapa Etapa? @relation(fields: [etapa_id], references: [id]) | |
criado_em DateTime @default(now()) @db.Timestamp(6) | |
removido_em DateTime? @db.Timestamp(6) | |
geo_localizacao GeoLocalizacao @relation(fields: [geo_localizacao_id], references: [id]) | |
criador Pessoa? @relation("criador", fields: [criador_por], references: [id]) | |
removedor Pessoa? @relation("removedor", fields: [removido_por], references: [id]) | |
@@map("geo_localizacao_referencia") | |
} | |
model GrupoPainelExterno { | |
id Int @id @default(autoincrement()) | |
titulo String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
modulo_sistema ModuloSistema @default(SMAE) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
orgao_id Int | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
GrupoPainelExternoPessoa GrupoPainelExternoPessoa[] | |
PainelExternoGrupoPainelExterno PainelExternoGrupoPainelExterno[] | |
@@index([titulo]) | |
@@map("grupo_painel_externo") | |
} | |
model GrupoPainelExternoPessoa { | |
id Int @id @default(autoincrement()) | |
grupo_painel_externo_id Int | |
orgao_id Int | |
pessoa_id Int | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
grupo_painel_externo GrupoPainelExterno @relation(fields: [grupo_painel_externo_id], references: [id]) | |
pessoa Pessoa @relation(fields: [pessoa_id], references: [id]) | |
orgao Orgao @relation(fields: [orgao_id], references: [id]) | |
@@map("grupo_painel_externo_pessoa") | |
} | |
model PainelExternoGrupoPainelExterno { | |
id Int @id @default(autoincrement()) | |
painel_externo_id Int | |
grupo_painel_externo_id Int | |
PainelExterno PainelExterno @relation(fields: [painel_externo_id], references: [id]) | |
GrupoPainelExterno GrupoPainelExterno @relation(fields: [grupo_painel_externo_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("painel_externo_grupo_painel_externo") | |
} | |
model PainelExterno { | |
id Int @id @default(autoincrement()) | |
titulo String | |
descricao String? | |
modulo_sistema ModuloSistema @default(SMAE) | |
link String | |
link_dominio String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
PainelExternoGrupoPainelExterno PainelExternoGrupoPainelExterno[] | |
@@index([removido_em]) | |
@@map("painel_externo") | |
} | |
model Partido { | |
id Int @id @default(autoincrement()) | |
nome String | |
sigla String | |
numero Int | |
observacao String? | |
fundacao DateTime? @db.Timestamptz(6) | |
encerramento DateTime? @db.Timestamptz(6) | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
mandatos_candidatura ParlamentarMandato[] @relation("candidatura") | |
mandatos_atual ParlamentarMandato[] @relation("atual") | |
bancadas BancadaPartido[] | |
transferencias Transferencia[] | |
@@map("partido") | |
} | |
model Bancada { | |
id Int @id @default(autoincrement()) | |
nome String | |
sigla String | |
descricao String? | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
partidos BancadaPartido[] | |
@@map("bancada") | |
} | |
model BancadaPartido { | |
id Int @id @default(autoincrement()) | |
bancada_id Int | |
bancada Bancada @relation(fields: [bancada_id], references: [id]) | |
partido_id Int | |
partido Partido @relation(fields: [partido_id], references: [id]) | |
@@unique([bancada_id, partido_id]) | |
@@map("bancada_partido") | |
} | |
enum ModuloSistema { | |
SMAE | |
PDM | |
CasaCivil | |
Projetos | |
PlanoSetorial | |
MDO | |
} | |
enum EleicaoTipo { | |
Municipal | |
Estadual | |
} | |
model Eleicao { | |
id Int @id @default(autoincrement()) | |
tipo EleicaoTipo | |
ano Int | |
atual_para_mandatos Boolean | |
mandatos ParlamentarMandato[] | |
comparecimentos EleicaoComparecimento[] | |
@@unique([tipo, ano]) | |
@@map("eleicao") | |
} | |
enum DadosEleicaoNivel { | |
Estado | |
Municipio | |
Subprefeitura | |
} | |
model EleicaoComparecimento { | |
id Int @id @default(autoincrement()) | |
eleicao_id Int | |
eleicao Eleicao @relation(fields: [eleicao_id], references: [id]) | |
// Este enum facilitará muito a legibilidade do código | |
// Uma vez que bastará verificar por ele ao invés de verificar pelos 3 IDs (estado, municipio e subprefeitura). | |
nivel DadosEleicaoNivel | |
valor Int | |
regiao_id Int | |
regiao Regiao @relation(fields: [regiao_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("eleicao_comparecimento") | |
} | |
model Parlamentar { | |
id Int @id @default(autoincrement()) | |
nome String | |
nome_popular String | |
nascimento DateTime? @db.Date() | |
telefone String? | |
email String? | |
em_atividade Boolean @default(false) | |
uf_nascimento ParlamentarUF? | |
foto_upload_id Int? | |
foto Arquivo? @relation(fields: [foto_upload_id], references: [id]) | |
cargo_mais_recente ParlamentarCargo? | |
partido_mais_recente String? | |
mandatos ParlamentarMandato[] | |
equipe ParlamentarEquipe[] | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
transferencias Transferencia[] | |
view_ranking_transferencias ViewRankingTransferenciaParlamentar[] | |
@@map("parlamentar") | |
} | |
enum ParlamentarCargo { | |
Senador | |
DeputadoEstadual | |
DeputadoFederal | |
Vereador | |
} | |
enum ParlamentarSuplente { | |
PrimeiroSuplente | |
SegundoSuplente | |
TerceiroSuplente | |
QuartoSuplente | |
QuintoSuplente | |
} | |
enum ParlamentarUF { | |
AC | |
AL | |
AP | |
AM | |
BA | |
CE | |
DF | |
ES | |
GO | |
MA | |
MT | |
MS | |
MG | |
PA | |
PB | |
PR | |
PE | |
PI | |
RJ | |
RN | |
RS | |
RO | |
RR | |
SC | |
SP | |
SE | |
TO | |
} | |
model ParlamentarMandato { | |
id Int @id @default(autoincrement()) | |
parlamentar_id Int | |
parlamentar Parlamentar @relation(fields: [parlamentar_id], references: [id]) | |
eleicao_id Int | |
eleicao Eleicao @relation(fields: [eleicao_id], references: [id]) | |
partido_candidatura_id Int | |
partido_candidatura Partido @relation("candidatura", fields: [partido_candidatura_id], references: [id]) | |
partido_atual_id Int | |
partido_atual Partido @relation("atual", fields: [partido_atual_id], references: [id]) | |
atuacao String? | |
biografia String? | |
telefone String? | |
email String? | |
gabinete String? | |
eleito Boolean | |
cargo ParlamentarCargo | |
uf ParlamentarUF | |
suplencia ParlamentarSuplente? | |
endereco String? | |
votos_estado BigInt? | |
votos_capital BigInt? | |
votos_interior BigInt? | |
// Nas bases, como por exemplo do TSE, cada candidato tem um código. | |
codigo_identificador String? | |
mandato_principal_id Int? | |
mandato_principal ParlamentarMandato? @relation("Suplentes", fields: [mandato_principal_id], references: [id]) | |
suplentes ParlamentarMandato[] @relation("Suplentes") | |
representatividade MandatoRepresentatividade[] | |
equipe ParlamentarEquipe[] | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("parlamentar_mandato") | |
} | |
enum ParlamentarEquipeTipo { | |
Assessor | |
Contato | |
} | |
model ParlamentarEquipe { | |
id Int @id @default(autoincrement()) | |
parlamentar_id Int | |
parlamentar Parlamentar @relation(fields: [parlamentar_id], references: [id]) | |
mandato_id Int? | |
mandato ParlamentarMandato? @relation(fields: [mandato_id], references: [id]) | |
tipo ParlamentarEquipeTipo | |
nome String | |
telefone String | |
email String | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("parlamentar_equipe") | |
} | |
enum MunicipioTipo { | |
Capital | |
Interior | |
} | |
model MandatoRepresentatividade { | |
id Int @id @default(autoincrement()) | |
regiao_id Int | |
regiao Regiao @relation(fields: [regiao_id], references: [id]) | |
mandato_id Int | |
mandato ParlamentarMandato @relation(fields: [mandato_id], references: [id]) | |
nivel DadosEleicaoNivel | |
municipio_tipo MunicipioTipo? | |
numero_votos Int | |
ranking Int? | |
// Valor será calculado com base em rows da tabela EleicaoComparecimento | |
pct_participacao Float? @db.DoublePrecision | |
criado_por Int? | |
criado_em DateTime? @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
// Criador nullable, pois provavelmente faremos carga inicial de dados. | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("mandato_representatividade") | |
} | |
enum TransferenciaTipoCategoria { | |
Discricionaria | |
Impositiva | |
} | |
enum TransferenciaTipoEsfera { | |
Federal | |
Estadual | |
} | |
model TransferenciaTipo { | |
id Int @id @default(autoincrement()) | |
nome String | |
categoria TransferenciaTipoCategoria | |
esfera TransferenciaTipoEsfera | |
transferencias Transferencia[] | |
workflows Workflow[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
statuses_distribuicao TransferenciaTipoDistribuicaoStatus[] | |
@@map("transferencia_tipo") | |
} | |
enum TransferenciaInterface { | |
TransfereGov | |
SemPapel | |
} | |
model Transferencia { | |
id Int @id @default(autoincrement()) | |
tipo_id Int | |
tipo TransferenciaTipo @relation(fields: [tipo_id], references: [id]) | |
orgao_concedente_id Int | |
orgao_concedente Orgao @relation("orgao_concedente", fields: [orgao_concedente_id], references: [id]) | |
secretaria_concedente_id Int? | |
secretaria_concedente Orgao? @relation("secretaria_concedente", fields: [secretaria_concedente_id], references: [id]) | |
// secretaria_concedente por agora é uma string livre. Mas existe a possibilidade de virar um relacionamento. | |
// Portanto, mantendo as cols de rel. | |
secretaria_concedente_str String? | |
parlamentar_id Int? | |
parlamentar Parlamentar? @relation(fields: [parlamentar_id], references: [id]) | |
partido_id Int? | |
partido Partido? @relation(fields: [partido_id], references: [id]) | |
workflow_id Int? | |
workflow Workflow? @relation(fields: [workflow_id], references: [id]) | |
objeto String | |
interface TransferenciaInterface? | |
identificador String | |
esfera TransferenciaTipoEsfera | |
clausula_suspensiva Boolean? | |
clausula_suspensiva_vencimento DateTime? @db.Date() | |
empenho Boolean? | |
pendente_preenchimento_valores Boolean @default(true) | |
valor Decimal? @default(0) @db.Decimal(15, 2) | |
valor_total Decimal? @default(0) @db.Decimal(15, 2) | |
valor_contrapartida Decimal? @default(0) @db.Decimal(15, 2) | |
cargo ParlamentarCargo? | |
ano Int? | |
emenda String? | |
dotacao String? | |
demanda String? | |
programa String? | |
banco_fim String? | |
normativa String? | |
conta_fim String? | |
agencia_fim String? | |
observacoes String? | |
detalhamento String? | |
banco_aceite String? | |
conta_aceite String? | |
nome_programa String? | |
agencia_aceite String? | |
emenda_unitaria String? | |
gestor_contrato String? | |
ordenador_despesa String? | |
numero_identificacao String? | |
vetores_busca Unsupported("tsvector")? | |
nivel_maximo_tarefa Int @default(5) @db.SmallInt | |
// Cols para facilitar processamento de dashboard. | |
workflow_finalizado Boolean @default(false) | |
workflow_etapa_atual_id Int? | |
workflow_etapa_atual WorkflowEtapa? @relation(fields: [workflow_etapa_atual_id], references: [id]) | |
workflow_fase_atual_id Int? | |
workflow_fase_atual WorkflowFase? @relation(fields: [workflow_fase_atual_id], references: [id]) | |
prejudicada Boolean @default(false) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
anexos TransferenciaAnexo[] | |
diretorios Diretorio[] | |
TarefaCronograma TarefaCronograma[] | |
distribuicao_recursos DistribuicaoRecurso[] | |
andamentoWorkflow TransferenciaAndamento[] | |
TransferenciaStatusConsolidado TransferenciaStatusConsolidado[] | |
ViewNotasTransferencias ViewNotasTransferencias[] | |
ViewDashboardAnalise ViewTransferenciaAnalise[] | |
@@map("transferencia") | |
} | |
model TransferenciaAnexo { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
arquivo_id Int | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
arquivo Arquivo @relation(fields: [arquivo_id], references: [id]) | |
descricao String? | |
data DateTime? | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([transferencia_id]) | |
@@map("transferencia_anexo") | |
} | |
model DistribuicaoRecurso { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
orgao_gestor_id Int | |
orgao_gestor Orgao @relation(fields: [orgao_gestor_id], references: [id]) | |
nome String? | |
objeto String | |
valor Decimal @default(0) @db.Decimal(15, 2) | |
valor_total Decimal @default(0) @db.Decimal(15, 2) | |
valor_contrapartida Decimal @default(0) @db.Decimal(15, 2) | |
empenho Boolean | |
data_empenho DateTime? @db.Date() | |
programa_orcamentario_estadual String? | |
programa_orcamentario_municipal String? | |
dotacao String? | |
proposta String? | |
contrato String? | |
convenio String? | |
assinatura_termo_aceite DateTime? @db.Date() | |
assinatura_municipio DateTime? @db.Date() | |
assinatura_estado DateTime? @db.Date() | |
vigencia DateTime? @db.Date() | |
conclusao_suspensiva DateTime? @db.Date() | |
// caso seja criado um aditamento, será criada uma nota com um aviso por email na transferência | |
// e toda vez que a vigência for alterada, será alterada a data de vigência do aviso e data da nota | |
nota_id Int? | |
nota Nota? @relation(fields: [nota_id], references: [id]) | |
aviso_email_id Int? | |
aviso_email AvisoEmail? @relation(fields: [aviso_email_id], references: [id]) | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
registros_sei DistribuicaoRecursoSei[] | |
aditamentos DistribuicaoRecursoAditamento[] | |
@@map("distribuicao_recurso") | |
} | |
model DistribuicaoRecursoAditamento { | |
id Int @id @default(autoincrement()) | |
distribuicao_recurso_id Int | |
distribuicao_recurso DistribuicaoRecurso @relation(fields: [distribuicao_recurso_id], references: [id]) | |
data_vigencia DateTime @db.Date() | |
data_vigencia_corrente DateTime @db.Date() | |
justificativa String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
criador Pessoa @relation(fields: [criado_por], references: [id]) | |
@@map("distribuicao_recurso_aditamento") | |
} | |
model DistribuicaoRecursoSei { | |
id Int @id @default(autoincrement()) | |
distribuicao_recurso_id Int | |
distribuicao_recurso DistribuicaoRecurso @relation(fields: [distribuicao_recurso_id], references: [id]) | |
nome String? | |
processo_sei String | |
registro_sei_info Json @default("{}") | |
registro_sei_errmsg String? | |
criado_em DateTime? | |
criado_por Int? | |
atualizado_em DateTime? | |
atualizado_por Int? | |
removido_em DateTime? | |
removido_por Int? | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
@@map("distribuicao_recurso_sei") | |
} | |
model Workflow { | |
id Int @id @default(autoincrement()) | |
transferencia_tipo_id Int | |
transferencia_tipo TransferenciaTipo @relation(fields: [transferencia_tipo_id], references: [id]) | |
nome String | |
ativo Boolean | |
inicio DateTime @db.Date() | |
termino DateTime? @db.Date() | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
etapasFluxo Fluxo[] | |
transferencias Transferencia[] | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([transferencia_tipo_id, ativo]) | |
@@map("workflow") | |
} | |
model WorkflowEtapa { | |
id Int @id @default(autoincrement()) | |
etapa_fluxo String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
fluxoSaida Fluxo[] @relation("EtapaSaida") | |
fluxoDestino Fluxo[] @relation("EtapaDestino") | |
transferenciaAndamento TransferenciaAndamento[] | |
// Esta relação fica na table de transferências para facilitar processamento de dashboard. | |
transferencias Transferencia[] | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_etapa") | |
} | |
model WorkflowFase { | |
id Int @id @default(autoincrement()) | |
fase String | |
fluxos FluxoFase[] | |
transferenciaAndamento TransferenciaAndamento[] | |
// Esta relação fica na table de transferências para facilitar processamento de dashboard. | |
transferencias Transferencia[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_fase") | |
} | |
enum WorkflowSituacaoTipo { | |
NaoIniciado | |
EmAndamento | |
Suspenso | |
Cancelado | |
ConcluidoComSucesso | |
EncerradoSemSucesso | |
Terminal | |
} | |
model WorkflowSituacao { | |
id Int @id @default(autoincrement()) | |
situacao String | |
tipo_situacao WorkflowSituacaoTipo | |
fasesWorkflow FluxoFaseSituacao[] | |
transferenciaAndamento TransferenciaAndamento[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa? @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_situacao") | |
} | |
model WorkflowTarefa { | |
id Int @id @default(autoincrement()) | |
tarefa_fluxo String | |
fluxoTarefas FluxoTarefa[] | |
transferenciaAndamentoTarefa TransferenciaAndamentoTarefa[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("workflow_tarefa") | |
} | |
model Fluxo { | |
id Int @id @default(autoincrement()) | |
workflow_id Int | |
workflow Workflow @relation(fields: [workflow_id], references: [id]) | |
fluxo_etapa_de_id Int | |
fluxo_etapa_de WorkflowEtapa @relation("EtapaSaida", fields: [fluxo_etapa_de_id], references: [id]) | |
fluxo_etapa_para_id Int | |
fluxo_etapa_para WorkflowEtapa @relation("EtapaDestino", fields: [fluxo_etapa_para_id], references: [id]) | |
ordem Int | |
fases FluxoFase[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([workflow_id, fluxo_etapa_de_id, fluxo_etapa_para_id]) | |
@@map("fluxo") | |
} | |
enum WorkflowResponsabilidade { | |
Propria | |
OutroOrgao | |
} | |
model FluxoFase { | |
id Int @id @default(autoincrement()) | |
fluxo_id Int | |
fluxo Fluxo @relation(fields: [fluxo_id], references: [id]) | |
fase_id Int | |
fase WorkflowFase @relation(fields: [fase_id], references: [id]) | |
ordem Int | |
responsabilidade WorkflowResponsabilidade | |
tarefas FluxoTarefa[] | |
situacoes FluxoFaseSituacao[] | |
marco Boolean @default(false) | |
duracao Int? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([fluxo_id, fase_id]) | |
@@map("fluxo_fase") | |
} | |
model FluxoFaseSituacao { | |
id Int @id @default(autoincrement()) | |
fluxo_fase_id Int | |
fluxo_fase FluxoFase @relation(fields: [fluxo_fase_id], references: [id]) | |
situacao_id Int | |
situacao WorkflowSituacao @relation(fields: [situacao_id], references: [id]) | |
@@map("fluxo_fase_situacao") | |
} | |
model FluxoTarefa { | |
id Int @id @default(autoincrement()) | |
workflow_tarefa_id Int | |
workflow_tarefa WorkflowTarefa @relation(fields: [workflow_tarefa_id], references: [id]) | |
fluxo_fase_id Int | |
fluxo_fase FluxoFase @relation(fields: [fluxo_fase_id], references: [id]) | |
responsabilidade WorkflowResponsabilidade | |
ordem Int | |
marco Boolean @default(false) | |
duracao Int? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@index([workflow_tarefa_id, fluxo_fase_id]) | |
@@map("fluxo_tarefa") | |
} | |
model TransferenciaAndamento { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
workflow_etapa_id Int | |
workflow_etapa WorkflowEtapa @relation(fields: [workflow_etapa_id], references: [id]) | |
workflow_fase_id Int | |
workflow_fase WorkflowFase @relation(fields: [workflow_fase_id], references: [id]) | |
workflow_situacao_id Int? | |
workflow_situacao WorkflowSituacao? @relation(fields: [workflow_situacao_id], references: [id]) | |
orgao_responsavel_id Int? | |
orgao_responsavel Orgao? @relation(fields: [orgao_responsavel_id], references: [id]) | |
pessoa_responsavel_id Int? | |
pessoa_responsavel Pessoa? @relation(fields: [pessoa_responsavel_id], references: [id]) | |
data_inicio DateTime? @db.Date() | |
data_termino DateTime? @db.Date() | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
tarefas TransferenciaAndamentoTarefa[] | |
tarefaEspelhada Tarefa[] | |
@@index([transferencia_id, workflow_etapa_id, workflow_fase_id]) | |
@@map("transferencia_andamento") | |
} | |
model TransferenciaAndamentoTarefa { | |
id Int @id @default(autoincrement()) | |
transferencia_andamento_id Int | |
transferencia_andamento TransferenciaAndamento @relation(fields: [transferencia_andamento_id], references: [id]) | |
workflow_tarefa_fluxo_id Int | |
workflow_tarefa WorkflowTarefa @relation(fields: [workflow_tarefa_fluxo_id], references: [id]) | |
orgao_responsavel_id Int? | |
orgao_responsavel Orgao? @relation(fields: [orgao_responsavel_id], references: [id]) | |
feito Boolean @default(false) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
tarefaEspelhada Tarefa[] | |
@@index([transferencia_andamento_id, workflow_tarefa_fluxo_id]) | |
@@map("transferencia_andamento_tarefa") | |
} | |
enum TipoAviso { | |
CronogramaTerminoPlanejado | |
Nota | |
} | |
enum AvisoPeriodo { | |
Dias | |
Semanas | |
Meses | |
Anos | |
} | |
model AvisoEmail { | |
id Int @id @default(autoincrement()) | |
tipo TipoAviso | |
tarefa_cronograma_id Int? | |
tarefa_id Int? | |
nota_id Int? | |
tarefa_cronograma TarefaCronograma? @relation(fields: [tarefa_cronograma_id], references: [id]) | |
tarefa Tarefa? @relation(fields: [tarefa_id], references: [id]) | |
nota Nota? @relation(fields: [nota_id], references: [id]) | |
com_copia String[] | |
numero Int | |
numero_periodo AvisoPeriodo | |
recorrencia_dias Int @default(0) | |
ativo Boolean | |
executou_em DateTime @default(now()) @db.Date | |
executou_em_ts DateTime @default(now()) | |
ultimo_envio_em DateTime? | |
AvisoEmailDisparos AvisoEmailDisparos[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
DistribuicaoRecurso DistribuicaoRecurso[] | |
@@map("aviso_email") | |
} | |
model AvisoEmailDisparos { | |
id Int @id @default(autoincrement()) | |
para String | |
com_copia String[] | |
criado_por Int? | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
aviso_email_id Int | |
aviso_email AvisoEmail @relation(fields: [aviso_email_id], references: [id]) | |
emaildb_queue_id String @db.Uuid | |
emaildb_queue EmaildbQueue @relation(fields: [emaildb_queue_id], references: [id]) | |
@@map("aviso_email_disparos") | |
} | |
model CronogramaTerminoPlanejadoConfig { | |
id Int @id @default(autoincrement()) | |
modulo_sistema ModuloSistema @unique | |
para String | |
texto_inicial String | |
texto_final String | |
assunto_global String | |
assunto_orgao String | |
@@map("cronograma_termino_planejado_config") | |
} | |
model BlocoNota { | |
id Int @id @default(autoincrement()) | |
bloco String | |
Nota Nota[] | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
ViewNotaComOrdem ViewNotas[] | |
ViewNotasTransferencias ViewNotasTransferencias[] | |
@@index([bloco]) | |
@@map("bloco_nota") | |
} | |
model TipoNota { | |
id Int @id @default(autoincrement()) | |
codigo String @unique | |
permite_revisao Boolean | |
permite_enderecamento Boolean | |
permite_email Boolean | |
permite_replica Boolean | |
visivel_resp_orgao Boolean | |
eh_publico Boolean | |
autogerenciavel Boolean @default(false) | |
TipoNotaModulo TipoNotaModulo[] | |
Nota Nota[] | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_em DateTime? @db.Timestamptz(6) | |
atualizado_em DateTime? @db.Timestamptz(6) | |
ViewNotaComOrdem ViewNotas[] | |
@@map("tipo_nota") | |
} | |
model TipoNotaModulo { | |
id Int @id @default(autoincrement()) | |
modulo_sistema ModuloSistema | |
tipo_nota_id Int | |
tipo_nota TipoNota @relation(fields: [tipo_nota_id], references: [id]) | |
@@unique([modulo_sistema, tipo_nota_id]) | |
@@map("tipo_nota_modulo") | |
} | |
enum StatusNota { | |
Programado | |
Em_Curso @map("Em Curso") | |
Suspenso | |
Encerrado | |
Cancelado | |
} | |
// disparo email talvez seja com o aviso, seria o ideal | |
model Nota { | |
id Int @id @default(autoincrement()) | |
bloco_nota_id Int | |
tipo_nota_id Int | |
data_nota DateTime @db.Date | |
orgao_responsavel_id Int | |
pessoa_responsavel_id Int | |
nota String | |
rever_em DateTime? @db.Date | |
dispara_email Boolean @default(false) | |
status StatusNota | |
n_enderecamentos Int @default(0) @map("n_encaminhamentos") | |
n_repostas Int @default(0) | |
ultima_resposta DateTime? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
tipo_nota TipoNota @relation(fields: [tipo_nota_id], references: [id]) | |
bloco_nota BlocoNota @relation(fields: [bloco_nota_id], references: [id]) | |
orgao_responsavel Orgao @relation(fields: [orgao_responsavel_id], references: [id]) | |
pessoa_responsavel Pessoa @relation("Resp", fields: [pessoa_responsavel_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
NotaEnderecamento NotaEnderecamento[] | |
NotaEnderecamentoResposta NotaEnderecamentoResposta[] | |
revisoes NotaRevisao[] | |
AvisoEmail AvisoEmail[] | |
ViewNotasTransferencias ViewNotasTransferencias[] | |
DistribuicaoRecurso DistribuicaoRecurso[] | |
@@index([status, removido_em]) | |
@@map("nota") | |
} | |
view ViewNotas { | |
id Int @id @default(autoincrement()) | |
bloco_nota_id Int | |
tipo_nota_id Int | |
data_nota DateTime @db.Date | |
orgao_responsavel_id Int | |
pessoa_responsavel_id Int | |
nota String | |
rever_em DateTime? @db.Date | |
dispara_email Boolean @default(false) | |
status StatusNota | |
n_enderecamentos Int @default(0) | |
n_repostas Int @default(0) | |
ultima_resposta DateTime? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
data_ordenacao DateTime | |
tipo_nota TipoNota @relation(fields: [tipo_nota_id], references: [id]) | |
bloco_nota BlocoNota @relation(fields: [bloco_nota_id], references: [id]) | |
orgao_responsavel Orgao @relation(fields: [orgao_responsavel_id], references: [id]) | |
pessoa_responsavel Pessoa @relation("Resp", fields: [pessoa_responsavel_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("view_notas") | |
} | |
view ViewNotasTransferencias { | |
id Int @id @default(autoincrement()) | |
bloco_nota_id Int | |
data_nota DateTime @db.Date | |
nota String | |
status StatusNota | |
removido_em DateTime? @db.Timestamptz(6) | |
data_ordenacao DateTime | |
transferencia_id Int | |
transferencia_identificador String | |
notaReferencia Nota @relation(fields: [id], references: [id]) | |
bloco_nota BlocoNota @relation(fields: [bloco_nota_id], references: [id]) | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
@@map("view_notas_transferencias") | |
} | |
model NotaRevisao { | |
id Int @id @default(autoincrement()) | |
nota_id Int | |
nota String | |
nota_fk Nota @relation(fields: [nota_id], references: [id]) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
@@map("nota_revisao") | |
} | |
model NotaEnderecamento { | |
id Int @id @default(autoincrement()) | |
nota_id Int | |
// pra essa tabela fazer sentido, um dos dois precisa estar preenchido | |
// se não ta endereçado pra /dev/null | |
orgao_enderecado_id Int | |
pessoa_enderecado_id Int? | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
nota Nota @relation(fields: [nota_id], references: [id]) | |
orgao_enderecado Orgao? @relation(fields: [orgao_enderecado_id], references: [id]) | |
pessoa_enderecado Pessoa? @relation("Enderecado", fields: [pessoa_enderecado_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
NotaEnderecamentoResposta NotaEnderecamentoResposta[] | |
@@index([nota_id]) | |
@@map("nota_enderecamento") | |
} | |
model NotaEnderecamentoResposta { | |
id Int @id @default(autoincrement()) | |
nota_id Int | |
nota_enderecamento_id Int | |
resposta String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
nota Nota @relation(fields: [nota_id], references: [id]) | |
nota_enderecamento NotaEnderecamento @relation(fields: [nota_enderecamento_id], references: [id]) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("nota_enderecamento_resposta") | |
} | |
model TransferenciaStatusConsolidado { | |
id Int @id @default(autoincrement()) | |
transferencia_id Int | |
situacao String | |
orgaos_envolvidos Int[] | |
data DateTime? @db.Date | |
data_origem String | |
atualizado_em DateTime | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
@@map("transferencia_status_consolidado") | |
} | |
view ViewTransferenciaAnalise { | |
transferencia_id Int @id | |
transferencia Transferencia @relation(fields: [transferencia_id], references: [id]) | |
workflow_finalizado Boolean | |
ano Int | |
partido_id Int? | |
workflow_etapa_atual_id Int? | |
workflow_fase_atual_id Int? | |
parlamentar_id Int? | |
valor_total Decimal | |
distribuicao_orgao_id Int? | |
distribuicao_valor_total Decimal? | |
prejudicada Boolean @default(false) | |
esfera TransferenciaTipoEsfera | |
@@map("view_transferencia_analise") | |
} | |
view ViewRankingTransferenciaParlamentar { | |
parlamentar_id Int @id | |
parlamentar Parlamentar @relation(fields: [parlamentar_id], references: [id]) | |
nome_popular String | |
parlamentar_foto_id Int? | |
count Int | |
valor Decimal | |
@@map("view_ranking_transferencia_parlamentar") | |
} | |
model GrupoTematico { | |
id Int @id @default(autoincrement()) | |
nome String | |
programa_habitacional Boolean @default(false) | |
unidades_habitacionais Boolean @default(false) | |
familias_beneficiadas Boolean @default(false) | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
projetos ProjetoGrupoTematico[] | |
@@map("grupo_tematico") | |
} | |
model TipoIntervencao { | |
id Int @id @default(autoincrement()) | |
nome String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
projetos ProjetoTipoIntervencao[] | |
@@map("tipo_intervencao") | |
} | |
model Equipamento { | |
id Int @id @default(autoincrement()) | |
nome String | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
projetos ProjetoEquipamento[] | |
@@map("equipamento") | |
} | |
model ProjetoEquipamento { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
equipamento_id Int | |
equipamento Equipamento @relation(fields: [equipamento_id], references: [id]) | |
@@unique([projeto_id, equipamento_id]) | |
@@map("projeto_equipamento") | |
} | |
model ProjetoTipoIntervencao { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
tipo_intervencao_id Int | |
tipo_intervencao TipoIntervencao @relation(fields: [tipo_intervencao_id], references: [id]) | |
@@unique([projeto_id, tipo_intervencao_id]) | |
@@map("projeto_tipo_intervencao") | |
} | |
model ProjetoGrupoTematico { | |
projeto_id Int | |
projeto Projeto @relation(fields: [projeto_id], references: [id]) | |
grupo_tematico_id Int | |
grupo_tematico GrupoTematico @relation(fields: [grupo_tematico_id], references: [id]) | |
@@unique([projeto_id, grupo_tematico_id]) | |
@@map("projeto_grupo_tematico") | |
} | |
enum DistribuicaoStatusTipo { | |
Registrada | |
Declinada | |
Redirecionada | |
Cancelada | |
ImpedidaTecnicamente | |
Finalizada | |
} | |
model DistribuicaoStatusBase { | |
id Int @id @default(autoincrement()) | |
nome String | |
tipo DistribuicaoStatusTipo | |
valor_distribuicao_contabilizado Boolean | |
@@unique([nome, tipo]) | |
@@map("distribuicao_status_base") | |
} | |
model TransferenciaTipoDistribuicaoStatus { | |
id Int @id @default(autoincrement()) | |
transferencia_tipo_id Int | |
transferencia_tipo TransferenciaTipo @relation(fields: [transferencia_tipo_id], references: [id]) | |
nome String | |
tipo DistribuicaoStatusTipo | |
valor_distribuicao_contabilizado Boolean | |
criado_por Int | |
criado_em DateTime @default(now()) @db.Timestamptz(6) | |
atualizado_por Int? | |
atualizado_em DateTime? @db.Timestamptz(6) | |
removido_por Int? | |
removido_em DateTime? @db.Timestamptz(6) | |
criador Pessoa @relation("Criador", fields: [criado_por], references: [id]) | |
atualizador Pessoa? @relation("Atualizador", fields: [atualizado_por], references: [id]) | |
removedor Pessoa? @relation("Removedor", fields: [removido_por], references: [id]) | |
@@map("transferencia_tipo_distribuicao_status") | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on before: | |
npm run db:generate | |
> [email protected] db:generate | |
> prisma generate | |
Environment variables loaded from .env | |
Prisma schema loaded from prisma/schema.prisma | |
✔ Generated Prisma Client (v5.15.0) to ./node_modules/@prisma/client in 75.28s | |
Start using Prisma Client in Node.js (See: https://pris.ly/d/client) | |
``` | |
import { PrismaClient } from '@prisma/client' | |
const prisma = new PrismaClient() | |
``` | |
or start using Prisma Client at the edge (See: https://pris.ly/d/accelerate) | |
``` | |
import { PrismaClient } from '@prisma/client/edge' | |
const prisma = new PrismaClient() | |
``` | |
See other ways of importing Prisma Client: http://pris.ly/d/importing-client | |
┌─────────────────────────────────────────────────────────────┐ | |
│ Deploying your app to serverless or edge functions? │ | |
│ Try Prisma Accelerate for connection pooling and caching. │ | |
│ https://pris.ly/cli/--accelerate │ | |
└─────────────────────────────────────────────────────────────┘ | |
on after: | |
npm run db:generate | |
> [email protected] db:generate | |
> prisma generate | |
Environment variables loaded from .env | |
Prisma schema loaded from prisma/schema.prisma | |
✔ Generated Prisma Client (v5.15.0) to ./node_modules/@prisma/client in 12.63s | |
Start using Prisma Client in Node.js (See: https://pris.ly/d/client) | |
``` | |
import { PrismaClient } from '@prisma/client' | |
const prisma = new PrismaClient() | |
``` | |
or start using Prisma Client at the edge (See: https://pris.ly/d/accelerate) | |
``` | |
import { PrismaClient } from '@prisma/client/edge' | |
const prisma = new PrismaClient() | |
``` | |
See other ways of importing Prisma Client: http://pris.ly/d/importing-client | |
┌─────────────────────────────────────────────────────────────┐ | |
│ Deploying your app to serverless or edge functions? │ | |
│ Try Prisma Accelerate for connection pooling and caching. │ | |
│ https://pris.ly/cli/--accelerate │ | |
└─────────────────────────────────────────────────────────────┘ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment