|
|
|
|
|
from sqlalchemy import (
|
|
|
Column,
|
|
|
Integer,
|
|
|
String,
|
|
|
Date,
|
|
|
DateTime,
|
|
|
Boolean,
|
|
|
ForeignKey,
|
|
|
Text
|
|
|
)
|
|
|
from sqlalchemy.orm import relationship
|
|
|
|
|
|
|
|
|
|
|
|
from datetime import datetime
|
|
|
from banco import Base
|
|
|
from sqlalchemy.sql import func
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Equipamento(Base):
|
|
|
__tablename__ = "equipamentos"
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
|
|
|
|
|
|
fpso1 = Column(String, index=True, nullable=False)
|
|
|
fpso = Column(String, index=True, nullable=False)
|
|
|
data_coleta = Column(String, index=True, nullable=False)
|
|
|
|
|
|
|
|
|
especialista = Column(String, nullable=False)
|
|
|
conferente = Column(String, nullable=False)
|
|
|
osm = Column(String, nullable=False)
|
|
|
|
|
|
|
|
|
modal = Column(String, index=True, nullable=False)
|
|
|
quant_equip = Column(Integer, default=0)
|
|
|
mrob = Column(String, nullable=False)
|
|
|
|
|
|
|
|
|
linhas_osm = Column(Integer, default=0)
|
|
|
linhas_mrob = Column(Integer, default=0)
|
|
|
linhas_erros = Column(Integer, default=0)
|
|
|
|
|
|
|
|
|
erro_storekeeper = Column(String)
|
|
|
erro_operacao = Column(String)
|
|
|
erro_especialista = Column(String)
|
|
|
erro_outros = Column(String)
|
|
|
|
|
|
|
|
|
inclusao_exclusao = Column(String)
|
|
|
po = Column(String)
|
|
|
part_number = Column(String)
|
|
|
material = Column(String)
|
|
|
|
|
|
solicitante = Column(String, nullable=False)
|
|
|
motivo = Column(String)
|
|
|
requisitante = Column(String, nullable=False)
|
|
|
nota_fiscal = Column(String, nullable=False)
|
|
|
impacto = Column(String, nullable=False)
|
|
|
dimensao = Column(String, nullable=False)
|
|
|
|
|
|
observacoes = Column(String)
|
|
|
|
|
|
|
|
|
dia_inclusao = Column(String, nullable=True, index=True)
|
|
|
|
|
|
|
|
|
data_hora_input = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FPSO(Base):
|
|
|
__tablename__ = "fpsos"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
nome = Column(String, unique=True, nullable=False, index=True)
|
|
|
ativo = Column(Boolean, default=True)
|
|
|
data_cadastro = Column(DateTime, default=datetime.utcnow)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LogAcesso(Base):
|
|
|
__tablename__ = "log_acesso"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
|
|
|
usuario = Column(String, nullable=False, index=True)
|
|
|
acao = Column(String, nullable=False)
|
|
|
tabela = Column(String, nullable=True)
|
|
|
registro_id = Column(Integer, nullable=True)
|
|
|
|
|
|
data_hora = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Usuario(Base):
|
|
|
__tablename__ = "usuarios"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
|
|
|
|
|
|
usuario = Column(String, unique=True, nullable=False, index=True)
|
|
|
senha = Column(String, nullable=False)
|
|
|
|
|
|
|
|
|
perfil = Column(String, nullable=False)
|
|
|
ativo = Column(Boolean, default=True)
|
|
|
|
|
|
|
|
|
data_criacao = Column(DateTime, default=datetime.utcnow)
|
|
|
|
|
|
|
|
|
nome = Column(String, nullable=True, index=True)
|
|
|
email = Column(String, unique=True, index=True, nullable=True)
|
|
|
|
|
|
|
|
|
data_aniversario = Column(Date, nullable=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QuizPergunta(Base):
|
|
|
__tablename__ = "quiz_perguntas"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
pergunta = Column(String, nullable=False)
|
|
|
ativo = Column(Boolean, default=True)
|
|
|
data_criacao = Column(DateTime, default=datetime.utcnow)
|
|
|
|
|
|
respostas = relationship(
|
|
|
"QuizResposta",
|
|
|
back_populates="pergunta",
|
|
|
cascade="all, delete-orphan"
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QuizResposta(Base):
|
|
|
__tablename__ = "quiz_respostas"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
pergunta_id = Column(Integer, ForeignKey("quiz_perguntas.id"), nullable=False)
|
|
|
texto = Column(String, nullable=False)
|
|
|
correta = Column(Boolean, default=False)
|
|
|
|
|
|
pergunta = relationship("QuizPergunta", back_populates="respostas")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QuizPontuacao(Base):
|
|
|
__tablename__ = "quiz_pontuacoes"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
usuario = Column(String, nullable=False, index=True)
|
|
|
pontos = Column(Integer, nullable=False, default=0)
|
|
|
data = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VideoCategoria(Base):
|
|
|
__tablename__ = "video_categorias"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
nome = Column(String, nullable=False, unique=True)
|
|
|
ativo = Column(Boolean, default=True)
|
|
|
data_criacao = Column(DateTime, default=datetime.utcnow)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Video(Base):
|
|
|
__tablename__ = "videos"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
titulo = Column(String, nullable=False)
|
|
|
descricao = Column(String)
|
|
|
url = Column(String, nullable=False)
|
|
|
|
|
|
categoria_id = Column(Integer, ForeignKey("video_categorias.id"))
|
|
|
categoria = relationship("VideoCategoria")
|
|
|
|
|
|
ativo = Column(Boolean, default=True)
|
|
|
data_criacao = Column(DateTime, default=datetime.utcnow)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EventoCalendario(Base):
|
|
|
__tablename__ = "eventos_calendario"
|
|
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
titulo = Column(String, nullable=False)
|
|
|
descricao = Column(String)
|
|
|
data_evento = Column(Date, nullable=False)
|
|
|
data_lembrete = Column(Date)
|
|
|
ativo = Column(Boolean, default=True)
|
|
|
usuario_criacao = Column(String, nullable=False)
|
|
|
data_criacao = Column(DateTime, default=datetime.utcnow)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IOIRunSugestao(Base):
|
|
|
__tablename__ = "ioirun_sugestao"
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
|
|
|
|
|
|
usuario = Column(String, nullable=False, index=True)
|
|
|
|
|
|
|
|
|
area = Column(String, nullable=True, index=True)
|
|
|
mensagem = Column(Text, nullable=False)
|
|
|
|
|
|
|
|
|
resposta = Column(Text, nullable=True)
|
|
|
status = Column(String, default="pendente", nullable=False, index=True)
|
|
|
responsavel = Column(String, nullable=True)
|
|
|
|
|
|
|
|
|
data_envio = Column(DateTime, default=datetime.utcnow, nullable=False, index=True)
|
|
|
data_resposta = Column(DateTime, nullable=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RNC(Base):
|
|
|
__tablename__ = "rnc"
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
|
|
|
|
|
|
codigo = Column(String(20), unique=True, index=True)
|
|
|
titulo = Column(String(200), nullable=False)
|
|
|
descricao = Column(Text, nullable=False)
|
|
|
|
|
|
|
|
|
data_form = Column(Date, nullable=True, index=True)
|
|
|
emitente = Column(String(120), nullable=True, index=True)
|
|
|
rnc_cliente_numero = Column(String(50), nullable=True)
|
|
|
cliente_emitente = Column(String(120), nullable=True)
|
|
|
area_solicitante = Column(String(120), nullable=True, index=True)
|
|
|
area_notificada = Column(String(120), nullable=True, index=True)
|
|
|
origem = Column(String(50), nullable=True, index=True)
|
|
|
|
|
|
|
|
|
envolvido1_nome = Column(String(120), nullable=True)
|
|
|
envolvido1_matricula = Column(String(50), nullable=True)
|
|
|
envolvido1_funcao = Column(String(120), nullable=True)
|
|
|
envolvido2_nome = Column(String(120), nullable=True)
|
|
|
envolvido2_matricula = Column(String(50), nullable=True)
|
|
|
envolvido2_funcao = Column(String(120), nullable=True)
|
|
|
|
|
|
|
|
|
tipo = Column(String(50), nullable=True)
|
|
|
severidade = Column(String(20), nullable=True)
|
|
|
prioridade = Column(String(20), nullable=True)
|
|
|
|
|
|
|
|
|
status = Column(String(30), default="Aberta", nullable=False, index=True)
|
|
|
data_abertura = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
prazo = Column(DateTime, nullable=True, index=True)
|
|
|
encerrada_em = Column(DateTime, nullable=True, index=True)
|
|
|
|
|
|
|
|
|
responsavel = Column(String(120), nullable=True, index=True)
|
|
|
criado_por = Column(String(120), nullable=False, index=True)
|
|
|
|
|
|
|
|
|
cliente = Column(String(120), nullable=True)
|
|
|
local = Column(String(120), nullable=True)
|
|
|
|
|
|
|
|
|
metodologia = Column(String(120), nullable=True)
|
|
|
causa_raiz = Column(Text, nullable=True)
|
|
|
ishikawa_json = Column(Text, nullable=True)
|
|
|
|
|
|
|
|
|
data_hora_input = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
|
|
|
|
|
comentarios = relationship("RNCComentario", back_populates="rnc", cascade="all, delete-orphan")
|
|
|
acoes = relationship("RNCAcaoCorretiva", back_populates="rnc", cascade="all, delete-orphan")
|
|
|
anexos = relationship("RNCAnexo", back_populates="rnc", cascade="all, delete-orphan")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RNCComentario(Base):
|
|
|
__tablename__ = "rnc_comentario"
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
rnc_id = Column(Integer, ForeignKey("rnc.id"), nullable=False, index=True)
|
|
|
|
|
|
data = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
autor = Column(String(120), nullable=False, index=True)
|
|
|
mensagem = Column(Text, nullable=False)
|
|
|
|
|
|
status_novo = Column(String(30), nullable=True, index=True)
|
|
|
prazo_novo = Column(DateTime, nullable=True, index=True)
|
|
|
responsavel_novo = Column(String(120), nullable=True, index=True)
|
|
|
|
|
|
rnc = relationship("RNC", back_populates="comentarios")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RNCAcaoCorretiva(Base):
|
|
|
__tablename__ = "rnc_acao"
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
rnc_id = Column(Integer, ForeignKey("rnc.id"), nullable=False, index=True)
|
|
|
|
|
|
descricao = Column(Text, nullable=False)
|
|
|
responsavel = Column(String(120), nullable=True, index=True)
|
|
|
prazo = Column(DateTime, nullable=True, index=True)
|
|
|
|
|
|
status = Column(String(30), default="Planejada", nullable=False, index=True)
|
|
|
eficacia = Column(String(30), nullable=True, index=True)
|
|
|
conclusao_em = Column(DateTime, nullable=True, index=True)
|
|
|
|
|
|
rnc = relationship("RNC", back_populates="acoes")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RNCAnexo(Base):
|
|
|
__tablename__ = "rnc_anexo"
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
rnc_id = Column(Integer, ForeignKey("rnc.id"), nullable=False, index=True)
|
|
|
|
|
|
nome_arquivo = Column(String(255), nullable=False)
|
|
|
caminho = Column(String(500), nullable=False)
|
|
|
conteudo_tipo = Column(String(120), nullable=True)
|
|
|
|
|
|
enviado_por = Column(String(120), nullable=True, index=True)
|
|
|
enviado_em = Column(DateTime, default=datetime.utcnow, index=True)
|
|
|
|
|
|
rnc = relationship("RNC", back_populates="anexos")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AvisoGlobal(Base):
|
|
|
__tablename__ = "aviso_global"
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
mensagem = Column(Text, nullable=False)
|
|
|
|
|
|
|
|
|
bg_color = Column(String(32), default="#FFF3CD")
|
|
|
text_color = Column(String(32), default="#664D03")
|
|
|
largura = Column(String(16), default="100%")
|
|
|
efeito = Column(String(16), default="marquee")
|
|
|
velocidade = Column(Integer, default=20)
|
|
|
font_size = Column(Integer, default=14)
|
|
|
|
|
|
|
|
|
ativo = Column(Boolean, default=True, index=True)
|
|
|
|
|
|
|
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
|
|
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RecebimentoRegistro(Base):
|
|
|
__tablename__ = "recebimento_registros"
|
|
|
|
|
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True, index=True)
|
|
|
id_planilha = Column(Integer, nullable=True, index=True, unique=True)
|
|
|
|
|
|
|
|
|
data = Column(Date, nullable=True)
|
|
|
data_emissao = Column(Date, nullable=True)
|
|
|
|
|
|
|
|
|
hora_chegada_portaria = Column(String(8), nullable=True)
|
|
|
hora_chegada_ifs = Column(String(8), nullable=True)
|
|
|
hora_saida_ifs_wms = Column(String(8), nullable=True)
|
|
|
hora_liberacao_operacao = Column(String(8), nullable=True)
|
|
|
hora_chegada_operacao = Column(String(8), nullable=True)
|
|
|
hora_saida_operacao = Column(String(8), nullable=True)
|
|
|
hora_retorno_operacao = Column(String(8), nullable=True)
|
|
|
hora_liberacao_motorista = Column(String(8), nullable=True)
|
|
|
|
|
|
|
|
|
placa_veiculo = Column(String(50), nullable=True)
|
|
|
transportadora = Column(String(255), nullable=True)
|
|
|
po = Column(String(60), nullable=True)
|
|
|
incoterms = Column(String(30), nullable=True)
|
|
|
qtd_sku = Column(Integer, nullable=True)
|
|
|
nota_fiscal = Column(String(80), nullable=True)
|
|
|
fornecedor = Column(String(255), nullable=True)
|
|
|
|
|
|
|
|
|
quimicos = Column(Boolean, nullable=True)
|
|
|
fds = Column(Boolean, nullable=True)
|
|
|
repetro = Column(Boolean, nullable=True)
|
|
|
aprovado = Column(Boolean, nullable=True)
|
|
|
|
|
|
|
|
|
natureza_operacao = Column(String(120), nullable=True)
|
|
|
tipo_operacao = Column(String(120), nullable=True)
|
|
|
barco = Column(String(80), nullable=True)
|
|
|
|
|
|
|
|
|
divergencia = Column(String(200), nullable=True)
|
|
|
|
|
|
ifs = Column(String(120), nullable=True)
|
|
|
wms = Column(String(120), nullable=True)
|
|
|
fotografia = Column(String(255), nullable=True)
|
|
|
entrega = Column(String(120), nullable=True)
|
|
|
projeto = Column(String(120), nullable=True)
|
|
|
good_receipt = Column(String(120), nullable=True)
|
|
|
divergencia_recebimento = Column(String(255), nullable=True)
|
|
|
qualidade = Column(String(120), nullable=True)
|
|
|
divergencia_qualidade = Column(String(255), nullable=True)
|
|
|
observacao = Column(Text, nullable=True)
|
|
|
agendamento = Column(String(120), nullable=True)
|
|
|
responsavel = Column(String(120), nullable=True)
|
|
|
|
|
|
|
|
|
po_alt = Column(String(60), nullable=True)
|
|
|
pn = Column(String(120), nullable=True)
|
|
|
lot_batch = Column(String(120), nullable=True)
|
|
|
|
|
|
|
|
|
created_by = Column(String(150), nullable=True)
|
|
|
updated_by = Column(String(150), nullable=True)
|
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
|
|