Skip to content

Instantly share code, notes, and snippets.

@renatocron
Created June 14, 2024 12:03
Show Gist options
  • Save renatocron/444ded8be1efebd54d8c088eb7a07260 to your computer and use it in GitHub Desktop.
Save renatocron/444ded8be1efebd54d8c088eb7a07260 to your computer and use it in GitHub Desktop.
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")
}
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")
}
on before:
npm run db:generate
> smae@0.0.1 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
> smae@0.0.1 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