3.6.4
What's Changed
- Atualizar para branch mais recente by @GabrielPintoSouza in #1338
- Gabriel 260105 by @GabrielPintoSouza in #1345
- Pedro 260105 by @GabrielPintoSouza in #1346
- Raphael 260105 by @GabrielPintoSouza in #1350
- Correção de bugs e ajustes de segurança 260105 by @GabrielPintoSouza in #1352
- Sprint de janeiro de 2026 by @GabrielPintoSouza in #1353
- Raphael 260105 by @rapharx2 in #1372
- Adaptação dos atendidos para utilização da nova tabela de arquivos by @GabrielPintoSouza in #1373
- create: Descrições especiais [Issue #1344] by @GabrielPintoSouza in #1374
- Pa implementos by @rapharx2 in #1377
- Gabriel 260122 by @GabrielPintoSouza in #1390
- Raphael 260122 by @GabrielPintoSouza in #1391
- Implementos de funcionalidade no Processo de aceitação by @GabrielPintoSouza in #1397
Full Changelog: 3.6.2...3.6.4
Passo a passo para atualizar o Banco de dados:
Migrar documentação de atendidos
- Desabilitar temporariamente a verificação de chaves estrangeiras
SET FOREIGN_KEY_CHECKS = 0;- Criar a nova tabela pessoa_arquivo
CREATE TABLE IF NOT EXISTS `pessoa_arquivo` (
`id` INT NOT NULL AUTO_INCREMENT,
`id_pessoa` INT NOT NULL,
`data` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`arquivo_nome` VARCHAR(255) NOT NULL,
`arquivo_extensao` VARCHAR(10) NOT NULL,
`arquivo` LONGBLOB NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_pessoa_arquivo_pessoa_id_pessoa`
FOREIGN KEY (`id_pessoa`)
REFERENCES `pessoa` (`id_pessoa`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB;- Adicionar a coluna de relacionamento na tabela atendido_documentacao
ALTER TABLE `atendido_documentacao`
ADD COLUMN `id_pessoa_arquivo` INT NULL
AFTER `atendido_docs_atendidos_idatendido_docs_atendidos`;- Migrar os arquivos existentes para a tabela pessoa_arquivo
INSERT INTO pessoa_arquivo (
id_pessoa,
data,
arquivo_nome,
arquivo_extensao,
arquivo
)
SELECT
a.pessoa_id_pessoa,
ad.data,
ad.arquivo_nome,
ad.arquivo_extensao,
ad.arquivo
FROM atendido_documentacao ad
JOIN atendido a
ON a.idatendido = ad.atendido_idatendido;- Atualizar a tabela atendido_documentacao com o ID do arquivo migrado
UPDATE atendido_documentacao ad
JOIN atendido a
ON a.idatendido = ad.atendido_idatendido
JOIN pessoa_arquivo pa
ON pa.id_pessoa = a.pessoa_id_pessoa
AND pa.arquivo_nome = ad.arquivo_nome
AND pa.arquivo_extensao = ad.arquivo_extensao
AND pa.arquivo = ad.arquivo
SET ad.id_pessoa_arquivo = pa.id;- Validar se ainda existem registros não migrados. O resultado deve ser 0.
SELECT COUNT(*) AS pendentes
FROM atendido_documentacao
WHERE id_pessoa_arquivo IS NULL;- Tornar a coluna id_pessoa_arquivo obrigatória
ALTER TABLE `atendido_documentacao`
MODIFY COLUMN `id_pessoa_arquivo` INT NOT NULL;- Criar índice e chave estrangeira para otimização e integridade
CREATE INDEX `idx_atendido_documentacao_arquivo`
ON `atendido_documentacao` (`id_pessoa_arquivo`);
ALTER TABLE `atendido_documentacao`
ADD CONSTRAINT `fk_atendido_documentacao_pessoa_arquivo`
FOREIGN KEY (`id_pessoa_arquivo`)
REFERENCES `pessoa_arquivo` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION;- Remover as colunas antigas de arquivo da tabela atendido_documentacao
ALTER TABLE `atendido_documentacao`
DROP COLUMN `data`,
DROP COLUMN `arquivo_nome`,
DROP COLUMN `arquivo_extensao`,
DROP COLUMN `arquivo`;- Reativar a verificação de chaves estrangeiras
SET FOREIGN_KEY_CHECKS = 1;Tabela socio_log
ALTER TABLE `wegia`.`socio_log`
ADD COLUMN `ip` VARCHAR(39) NULL AFTER `descricao`,
ADD COLUMN `user_agent` VARCHAR(512) NULL AFTER `ip`;Procedures
DELIMITER $$
DROP PROCEDURE IF EXISTS `cadatendido`$$
CREATE PROCEDURE `cadatendido`(
IN `strNome` VARCHAR(100),
IN `strSobrenome` VARCHAR(100),
IN `strCpf` VARCHAR(40),
IN `strSexo` CHAR(1),
IN `strTelefone` VARCHAR(25),
IN `dateNascimento` DATE,
IN `intStatus` INT,
IN `intTipo` INT
)
BEGIN
DECLARE idP INT;
INSERT INTO pessoa(cpf, nome, sobrenome, sexo, telefone, data_nascimento)
VALUES (strCpf, strNome, strSobrenome, strSexo, strTelefone, dateNascimento);
SET idP = LAST_INSERT_ID();
IF EXISTS (
SELECT 1
FROM atendido
WHERE pessoa_id_pessoa = idP
) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Já existe atendido para esta pessoa.';
END IF;
INSERT INTO atendido(
pessoa_id_pessoa,
atendido_tipo_idatendido_tipo,
atendido_status_idatendido_status
)
VALUES (idP, intTipo, intStatus);
END$$
DELIMITER ;Processo de aceitação (processo_aceitacao)
- Renomear a tabela principal
RENAME TABLE `wegia`.`processo_de_aceitacao`
TO `wegia`.`processo_aceitacao`;2.1. Remover a foreign key antiga
ALTER TABLE `wegia`.`pa_etapa`
DROP FOREIGN KEY `fk_etapa_processo`;2.2. Renomear e ajustar colunas
ALTER TABLE `wegia`.`pa_etapa`
CHANGE COLUMN `descricao` `titulo` VARCHAR(128) NOT NULL,
CHANGE COLUMN `id_processo` `id_processo_aceitacao` INT NOT NULL;2.3. Criar a nova foreign key
ALTER TABLE `wegia`.`pa_etapa`
ADD CONSTRAINT `fk_etapa_processo`
FOREIGN KEY (`id_processo_aceitacao`)
REFERENCES `wegia`.`processo_aceitacao` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;- Alterar campo descrição
ALTER TABLE processo_aceitacao
MODIFY COLUMN descricao TEXT NULL after data_fim;Processo de aceitação (pa_arquivo)
- Remover foreign keys antigas
ALTER TABLE `wegia`.`pa_arquivo`
DROP FOREIGN KEY `fk_pa_arquivo_processo`,
DROP FOREIGN KEY `fk_pa_arquivo_etapa`;2.1. Renomear id_processo → id_processo_aceitacao
ALTER TABLE `wegia`.`pa_arquivo`
CHANGE COLUMN `id_processo` `id_processo_aceitacao` INT NULL;2.2. Remover colunas antigas de arquivo físico
ALTER TABLE `wegia`.`pa_arquivo`
DROP COLUMN `arquivo_nome`,
DROP COLUMN `arquivo_extensao`,
DROP COLUMN `arquivo`,
DROP COLUMN `data_upload`;2.3. Adicionar novas colunas
ALTER TABLE `wegia`.`pa_arquivo`
ADD COLUMN `id_tipo_documentacao` INT NULL AFTER `id_etapa`,
ADD COLUMN `id_pessoa_arquivo` INT NOT NULL AFTER `id_tipo_documentacao`;3.3. Criar índices
ALTER TABLE `wegia`.`pa_arquivo`
ADD CONSTRAINT `fk_pa_arquivo_processo`
FOREIGN KEY (`id_processo_aceitacao`)
REFERENCES `wegia`.`processo_aceitacao` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_pa_arquivo_etapa`
FOREIGN KEY (`id_etapa`)
REFERENCES `wegia`.`pa_etapa` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_pa_arquivo_tipo_doc`
FOREIGN KEY (`id_tipo_documentacao`)
REFERENCES `wegia`.`atendido_docs_atendidos` (`idatendido_docs_atendidos`)
ON DELETE SET NULL
ON UPDATE CASCADE,
ADD CONSTRAINT `fk_pa_arquivo_pessoa_arquivo`
FOREIGN KEY (`id_pessoa_arquivo`)
REFERENCES `wegia`.`pessoa_arquivo` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION;Ajustes em atendido
- Verificar duplicidades
SELECT pessoa_id_pessoa, COUNT(*)
FROM atendido
GROUP BY pessoa_id_pessoa
HAVING COUNT(*) > 1;- Adicionar unicidade para pessoa_id_pessoa
ALTER TABLE `wegia`.`atendido`
ADD CONSTRAINT `uq_atendido_pessoa`
UNIQUE (`pessoa_id_pessoa`);Processo aceitação (pa_etapa)
ALTER TABLE pa_etapa
ADD COLUMN descricao TEXT NULL AFTER titulo;