From 1771d54ba20e6df456e57a5266ef496b8ae981c8 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sat, 26 Sep 2026 14:34:35 -0300 Subject: [PATCH 1/6] =?UTF-8?q?feat/colaborador:=20adiciona=20campo=20nick?= =?UTF-8?q?name=20ao=20DTO=20e=20=C3=A0=20entidade=20Colaborador,=20atuali?= =?UTF-8?q?za=20valida=C3=A7=C3=B5es=20e=20mapeamentos=20correspondentes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../colaborador/ColaboradorRequestDTO.java | 24 +++++++++++---- .../colaborador/ColaboradorResponseDTO.java | 13 ++++---- .../br/com/acta/entity/core/Colaborador.java | 30 ++++++++++++++----- .../com/acta/service/ColaboradorService.java | 24 ++++++++------- .../resources/ValidationMessages.properties | 1 + 5 files changed, 63 insertions(+), 29 deletions(-) diff --git a/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorRequestDTO.java b/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorRequestDTO.java index 04b991c..31ab638 100644 --- a/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorRequestDTO.java +++ b/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorRequestDTO.java @@ -1,18 +1,26 @@ package br.com.acta.dto.core.colaborador; +import java.time.LocalDate; +import java.util.List; + +import org.hibernate.validator.constraints.br.CPF; + +import com.fasterxml.jackson.annotation.JsonFormat; + import br.com.acta.common.config.swagger.examples.SwaggerRequestExamples; import br.com.acta.dto.core.contato.email.EmailRequestDTO; import br.com.acta.dto.core.contato.telefone.TelefoneRequestDTO; import br.com.acta.dto.core.usuario.UsuarioRequestDTO; -import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.Valid; -import jakarta.validation.constraints.*; -import org.hibernate.validator.constraints.br.CPF; - -import java.time.LocalDate; -import java.util.List; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Past; +import jakarta.validation.constraints.PastOrPresent; +import jakarta.validation.constraints.Positive; +import jakarta.validation.constraints.Size; public record ColaboradorRequestDTO( @Schema(description = "CPF do colaborador", example = SwaggerRequestExamples.CPF, minLength = 11, maxLength = 11) @@ -26,6 +34,10 @@ public record ColaboradorRequestDTO( @Size(max = 160, message = "{validation.nome.size}") String nome, + @Schema(description = "Nome do colaborador exibido na interface", example = SwaggerRequestExamples.NOME, maxLength = 160) + @Size(max = 160, message = "{validation.colaborador.nickname.size}") + String nickname, + @Schema(description = "Cargo do colaborador", example = SwaggerRequestExamples.CARGO, maxLength = 100) @NotBlank(message = "{validation.colaborador.cargo.notblank}") @Size(max = 100, message = "{validation.colaborador.cargo.size}") diff --git a/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorResponseDTO.java b/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorResponseDTO.java index eba10e4..ab674f3 100644 --- a/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorResponseDTO.java +++ b/src/main/java/br/com/acta/dto/core/colaborador/ColaboradorResponseDTO.java @@ -1,17 +1,20 @@ package br.com.acta.dto.core.colaborador; -import br.com.acta.dto.core.contato.email.EmailResponseDTO; -import br.com.acta.dto.core.contato.telefone.TelefoneResponseDTO; -import br.com.acta.entity.enums.StatusGeral; -import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDate; import java.time.OffsetDateTime; import java.util.List; +import com.fasterxml.jackson.annotation.JsonFormat; + +import br.com.acta.dto.core.contato.email.EmailResponseDTO; +import br.com.acta.dto.core.contato.telefone.TelefoneResponseDTO; +import br.com.acta.entity.enums.StatusGeral; + public record ColaboradorResponseDTO( Long id, String cpf, String nome, + String nickname, String cargo, String area, @@ -34,4 +37,4 @@ public record ColaboradorResponseDTO( @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") OffsetDateTime atualizadoEm ) { -} +} \ No newline at end of file diff --git a/src/main/java/br/com/acta/entity/core/Colaborador.java b/src/main/java/br/com/acta/entity/core/Colaborador.java index eb7350d..9b8d501 100644 --- a/src/main/java/br/com/acta/entity/core/Colaborador.java +++ b/src/main/java/br/com/acta/entity/core/Colaborador.java @@ -1,19 +1,30 @@ package br.com.acta.entity.core; +import java.time.LocalDate; +import java.util.HashSet; +import java.util.Set; + +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; + import br.com.acta.entity.base.auditoria.AuditoriaBase; import br.com.acta.entity.core.contato.EmailColaborador; import br.com.acta.entity.core.contato.TelefoneColaborador; import br.com.acta.entity.enums.StatusGeral; -import jakarta.persistence.*; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.hibernate.annotations.JdbcTypeCode; -import org.hibernate.type.SqlTypes; - -import java.time.LocalDate; -import java.util.HashSet; -import java.util.Set; @Entity @Table(name = "colaborador", schema = "public") @@ -26,6 +37,9 @@ public class Colaborador extends AuditoriaBase { @Column(name = "nome", length = 160, nullable = false) private String nome; + @Column(name = "nickname", length = 160, nullable = false) + private String nickname; + @Column(name = "cargo", length = 100, nullable = false) private String cargo; @@ -58,4 +72,4 @@ public class Colaborador extends AuditoriaBase { @OneToMany(mappedBy = "colaborador", cascade = CascadeType.ALL, orphanRemoval = true) private Set telefones = new HashSet<>(); -} +} \ No newline at end of file diff --git a/src/main/java/br/com/acta/service/ColaboradorService.java b/src/main/java/br/com/acta/service/ColaboradorService.java index 3352198..1029fd8 100644 --- a/src/main/java/br/com/acta/service/ColaboradorService.java +++ b/src/main/java/br/com/acta/service/ColaboradorService.java @@ -1,17 +1,25 @@ package br.com.acta.service; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + import br.com.acta.common.handler.exception.ActiveEntityDeletionException; import br.com.acta.common.handler.exception.ModelNotFoundException; import br.com.acta.common.handler.exception.RegexException; import br.com.acta.common.handler.exception.UniqueViolationException; import br.com.acta.common.utils.PatchConfig; import br.com.acta.common.utils.Validador; +import br.com.acta.dto.core.colaborador.ColaboradorMapper; import br.com.acta.dto.core.colaborador.ColaboradorRequestDTO; import br.com.acta.dto.core.colaborador.ColaboradorResponseDTO; -import br.com.acta.dto.core.colaborador.ColaboradorMapper; -import br.com.acta.dto.core.usuario.UsuarioResponseDTO; import br.com.acta.dto.core.contato.email.EmailColaboradorMapper; import br.com.acta.dto.core.contato.telefone.TelefoneColaboradorMapper; +import br.com.acta.dto.core.usuario.UsuarioResponseDTO; import br.com.acta.entity.core.Colaborador; import br.com.acta.entity.core.Empresa; import br.com.acta.entity.core.Usuario; @@ -25,13 +33,6 @@ import br.com.acta.repository.padrao.TelefoneColaboradorRepository; import br.com.acta.service.base.BaseService; import br.com.caelum.stella.validation.CPFValidator; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Map; -import java.util.Set; @Service public class ColaboradorService extends BaseService { @@ -46,7 +47,7 @@ public class ColaboradorService extends BaseService { if (emailRepo.existsByContatoIgnoreCase(email.email())) throw new UniqueViolationException("E-mail"); diff --git a/src/main/resources/ValidationMessages.properties b/src/main/resources/ValidationMessages.properties index a4a0ce1..ee96c12 100644 --- a/src/main/resources/ValidationMessages.properties +++ b/src/main/resources/ValidationMessages.properties @@ -113,6 +113,7 @@ validation.colaborador.cpf.notblank=O CPF é obrigatório. validation.colaborador.cpf.invalid=Informe um CPF válido. validation.colaborador.cpf.size=O CPF deve ter no máximo {max} caracteres. validation.colaborador.nome.notblank=O nome do colaborador é obrigatório. +validation.colaborador.nickname.size=O nickname deve ter no máximo {max} caracteres. validation.colaborador.cargo.notblank=O cargo é obrigatório. validation.colaborador.cargo.size=O cargo deve ter no máximo {max} caracteres. validation.colaborador.dataNascimento.notnull=A data de nascimento é obrigatória. From 43dc345b8dc183c81d2020d0ae32691935d7bdb3 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sat, 26 Sep 2026 14:42:14 -0300 Subject: [PATCH 2/6] =?UTF-8?q?feat/dto:=20adiciona=20campo=20iconeUrl=20a?= =?UTF-8?q?os=20DTOs=20CicloRequestDTO=20e=20CicloResponseDTO=20para=20sup?= =?UTF-8?q?orte=20a=20=C3=ADcones=20personalizados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acta/dto/pdca/ciclo/CicloRequestDTO.java | 18 +++++++++++++----- .../acta/dto/pdca/ciclo/CicloResponseDTO.java | 4 +++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/br/com/acta/dto/pdca/ciclo/CicloRequestDTO.java b/src/main/java/br/com/acta/dto/pdca/ciclo/CicloRequestDTO.java index 5315695..ff9277c 100644 --- a/src/main/java/br/com/acta/dto/pdca/ciclo/CicloRequestDTO.java +++ b/src/main/java/br/com/acta/dto/pdca/ciclo/CicloRequestDTO.java @@ -1,11 +1,16 @@ package br.com.acta.dto.pdca.ciclo; -import br.com.acta.common.config.swagger.examples.SwaggerRequestExamples; +import java.time.LocalDate; + import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.*; -import java.time.LocalDate; +import br.com.acta.common.config.swagger.examples.SwaggerRequestExamples; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.FutureOrPresent; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; +import jakarta.validation.constraints.Size; public record CicloRequestDTO( @Schema(description = "Título do ciclo", example = SwaggerRequestExamples.TITULO_CICLO) @@ -30,6 +35,9 @@ public record CicloRequestDTO( @FutureOrPresent(message = "{validation.ciclo.dataEstimadaFim.future}") LocalDate dataEstimadaFim, + @Schema(description = "URL do ícone do ciclo. Quando omitida, utiliza people-icon.svg") + String iconeUrl, + @Schema(description = "ID da empresa", example = SwaggerRequestExamples.ID_EMPRESA) @NotNull(message = "{validation.idEmpresa.notnull}") @Positive(message = "{validation.idEmpresa.positive}") @@ -40,4 +48,4 @@ public record CicloRequestDTO( @Positive(message = "{validation.ciclo.idGestor.positive}") Long idGestor ) { -} +} \ No newline at end of file diff --git a/src/main/java/br/com/acta/dto/pdca/ciclo/CicloResponseDTO.java b/src/main/java/br/com/acta/dto/pdca/ciclo/CicloResponseDTO.java index 451d3d7..4bf58df 100644 --- a/src/main/java/br/com/acta/dto/pdca/ciclo/CicloResponseDTO.java +++ b/src/main/java/br/com/acta/dto/pdca/ciclo/CicloResponseDTO.java @@ -21,6 +21,8 @@ public record CicloResponseDTO( @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy") LocalDate dataFimReal, + String iconeUrl, + Long idEmpresa, Long idGestor, List colaboradores, @@ -30,4 +32,4 @@ public record CicloResponseDTO( @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX") OffsetDateTime atualizadoEm ) { -} +} \ No newline at end of file From e0b20d4b22fbbbda59a9d2f4f7d1477a07cc5c96 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sat, 26 Sep 2026 14:45:31 -0300 Subject: [PATCH 3/6] =?UTF-8?q?feat/icons:=20adiciona=20enumera=C3=A7?= =?UTF-8?q?=C3=A3o=20IconeCiclo=20com=20URLs=20de=20=C3=ADcones=20para=20u?= =?UTF-8?q?so=20em=20DTOs=20e=20valida=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../br/com/acta/entity/enums/IconeCiclo.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/br/com/acta/entity/enums/IconeCiclo.java diff --git a/src/main/java/br/com/acta/entity/enums/IconeCiclo.java b/src/main/java/br/com/acta/entity/enums/IconeCiclo.java new file mode 100644 index 0000000..ad080be --- /dev/null +++ b/src/main/java/br/com/acta/entity/enums/IconeCiclo.java @@ -0,0 +1,27 @@ +package br.com.acta.entity.enums; + +import java.util.Arrays; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter @RequiredArgsConstructor +public enum IconeCiclo { + WALLET("https://res.cloudinary.com/kcypohk3/image/upload/v1790336465/wallet-icon.svg"), + TARGET("https://res.cloudinary.com/kcypohk3/image/upload/v1790336454/target-icon.svg"), + SHIELD("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/shield-icon.svg"), + SETTINGS("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/settings-icon.svg"), + PEOPLE("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/people-icon.svg"), + HEADPHONE("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/headphone-icon.svg"), + FOLDER("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/folder-icon.svg"), + DATABASE("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/database-icon.svg"), + CODE("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/code-icon.svg"), + CLOCK("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/clock-icon.svg"), + BOX("https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/box-icon.svg"); + + private final String url; + + public static boolean permite(String url) { + return Arrays.stream(values()).anyMatch(icone -> icone.url.equals(url)); + } +} \ No newline at end of file From 7c6ee8d6cb37a0decfba444f7f0ba9a6a43a9621 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sat, 26 Sep 2026 15:07:50 -0300 Subject: [PATCH 4/6] =?UTF-8?q?feat/conversor:=20adiciona=20m=C3=A9todo=20?= =?UTF-8?q?toIconeCicloUrl=20para=20valida=C3=A7=C3=A3o=20e=20convers?= =?UTF-8?q?=C3=A3o=20de=20URLs=20de=20=C3=ADcones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../br/com/acta/common/utils/ConversorObject.java | 11 ++++++++++- src/main/java/br/com/acta/entity/pdca/Ciclo.java | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/br/com/acta/common/utils/ConversorObject.java b/src/main/java/br/com/acta/common/utils/ConversorObject.java index 6247390..584310f 100644 --- a/src/main/java/br/com/acta/common/utils/ConversorObject.java +++ b/src/main/java/br/com/acta/common/utils/ConversorObject.java @@ -1,6 +1,7 @@ package br.com.acta.common.utils; import br.com.acta.common.handler.exception.InvalidRequestException; +import br.com.acta.entity.enums.IconeCiclo; import java.math.BigDecimal; import java.time.LocalDate; @@ -78,4 +79,12 @@ public static > T toEnum(Object valor, Class enumClass) thr throw new InvalidRequestException("O valor informado é inválido"); } } -} + + public static String toIconeCicloUrl(Object valor) { + if (valor == null) throw new InvalidRequestException("A URL do ícone não pode ser removida"); + + String url = valor.toString(); + if (!IconeCiclo.permite(url)) throw new InvalidRequestException("A URL do ícone informada não é permitida"); + return url; + } +} \ No newline at end of file diff --git a/src/main/java/br/com/acta/entity/pdca/Ciclo.java b/src/main/java/br/com/acta/entity/pdca/Ciclo.java index 119aeb1..1d26f8d 100644 --- a/src/main/java/br/com/acta/entity/pdca/Ciclo.java +++ b/src/main/java/br/com/acta/entity/pdca/Ciclo.java @@ -33,6 +33,9 @@ public class Ciclo extends TituloDescricaoBase { @Column(name = "data_fim_real") private LocalDate dataFimReal; + @Column(name = "icone_url", nullable = false) + private String iconeUrl; + @OneToMany(mappedBy = "ciclo", fetch = FetchType.LAZY) private Set colaboradores; From 385a18fe173fbb39ee6ce123ac4d88f762f07203 Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sat, 26 Sep 2026 15:08:05 -0300 Subject: [PATCH 5/6] =?UTF-8?q?feat/ciclo:=20adiciona=20suporte=20para=20i?= =?UTF-8?q?coneUrl=20no=20CicloService,=20permitindo=20a=20configura=C3=A7?= =?UTF-8?q?=C3=A3o=20e=20convers=C3=A3o=20de=20URLs=20de=20=C3=ADcones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/br/com/acta/service/CicloService.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/br/com/acta/service/CicloService.java b/src/main/java/br/com/acta/service/CicloService.java index 96a10a7..f4f9830 100644 --- a/src/main/java/br/com/acta/service/CicloService.java +++ b/src/main/java/br/com/acta/service/CicloService.java @@ -12,6 +12,7 @@ import br.com.acta.dto.pdca.ciclo.CicloResponseDTO; import br.com.acta.entity.core.Empresa; import br.com.acta.entity.core.Usuario; +import br.com.acta.entity.enums.IconeCiclo; import br.com.acta.entity.enums.StatusCiclo; import br.com.acta.entity.pdca.Ciclo; import br.com.acta.repository.padrao.CicloRepository; @@ -30,8 +31,8 @@ public class CicloService private final CicloRepository repo; private final CicloMapper mapper; private final PatchConfig patchConfig = new PatchConfig( - Set.of("titulo", "descricao", "dataInicio", "dataEstimadaFim", "idGestor", "idEmpresa"), - Set.of("titulo", "descricao", "dataEstimadaFim") + Set.of("titulo", "descricao", "dataInicio", "dataEstimadaFim", "iconeUrl", "idGestor", "idEmpresa"), + Set.of("titulo", "descricao", "dataEstimadaFim", "iconeUrl") ); private final UsuarioService usuarioService; private final EmpresaService empresaService; @@ -59,6 +60,9 @@ public CicloResponseDTO patch(Long id, Map campos) { Object dataObject = campos.get("dataEstimadaFim"); ciclo.setDataEstimadaFim(ConversorObject.toLocalDate(dataObject, false)); } + if (campos.containsKey("iconeUrl")) { + ciclo.setIconeUrl(ConversorObject.toIconeCicloUrl(campos.get("iconeUrl"))); + } Ciclo salvo = repo.save(ciclo); return mapper.toResponse(salvo); @@ -120,6 +124,9 @@ protected void antesInserir(Ciclo ciclo, CicloRequestDTO dto) { Empresa empresa = empresaService.getEntity(dto.idEmpresa()); Usuario gestor = usuarioService.getEntity(dto.idGestor()); + if (ciclo.getIconeUrl() == null) ciclo.setIconeUrl(IconeCiclo.PEOPLE.getUrl()); + else ciclo.setIconeUrl(ConversorObject.toIconeCicloUrl(ciclo.getIconeUrl())); + ciclo.setStatus(StatusCiclo.PLANEJAMENTO); ciclo.setEmpresa(empresa); ciclo.setGestor(gestor); @@ -143,4 +150,4 @@ public Ciclo getEntity(Long id) { return repo.findByIdAndEmpresaId(id, atual().idEmpresa()) .orElseThrow(() -> new ModelNotFoundException("Ciclo", id)); } -} +} \ No newline at end of file From 59538c069074e19edeaf8411b05b7be663ebc39f Mon Sep 17 00:00:00 2001 From: Davi Aliaga Date: Sat, 26 Sep 2026 15:29:16 -0300 Subject: [PATCH 6/6] =?UTF-8?q?feat/sql:=20adiciona=20campo=20nickname=20?= =?UTF-8?q?=C3=A0=20tabela=20colaborador=20e=20icone=5Furl=20=C3=A0=20tabe?= =?UTF-8?q?la=20ciclo,=20al=C3=A9m=20de=20ajustar=20o=20campo=20caminho=5F?= =?UTF-8?q?arquivo=20na=20tabela=20anexo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/sql/script.sql | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/sql/script.sql b/src/main/resources/sql/script.sql index 0c7c7aa..36bfe8e 100644 --- a/src/main/resources/sql/script.sql +++ b/src/main/resources/sql/script.sql @@ -56,6 +56,7 @@ CREATE TABLE IF NOT EXISTS colaborador ( id_usuario BIGINT NOT NULL UNIQUE REFERENCES usuario_sistema(id) ON DELETE CASCADE, cpf CHAR(11) NOT NULL UNIQUE CHECK (cpf ~ '^[0-9]{11}$'), nome VARCHAR(160) NOT NULL, + nickname VARCHAR(160) NOT NULL, cargo VARCHAR(100) NOT NULL, area VARCHAR(100) NOT NULL, data_nascimento DATE NOT NULL CHECK(data_nascimento <= CURRENT_DATE - INTERVAL '18 years'), @@ -124,6 +125,7 @@ CREATE TABLE IF NOT EXISTS pdca.ciclo ( id_empresa BIGINT NOT NULL REFERENCES empresa(id) ON DELETE CASCADE, id_responsavel BIGINT NOT NULL REFERENCES usuario_sistema(id), id_ishikawa_mongo UUID, + icone_url TEXT DEFAULT 'https://res.cloudinary.com/kcypohk3/image/upload/v1790336437/people-icon.svg', titulo VARCHAR(160) NOT NULL, descricao TEXT NOT NULL, status VARCHAR(40) NOT NULL CHECK (status IN ('PLANEJAMENTO', 'EXECUCAO', 'VERIFICACAO', 'PADRONIZACAO', 'CONCLUIDO', 'CANCELADO', 'PAUSADO')), @@ -408,7 +410,7 @@ CREATE TABLE IF NOT EXISTS pdca.anexo ( tipo_arquivo VARCHAR(150) NOT NULL, tamanho_arquivo BIGINT NOT NULL CHECK (tamanho_arquivo > 0), bucket_arquivo VARCHAR(100) NOT NULL DEFAULT 'acta-arquivos', - caminho_arquivo TEXT NOT NULL, + caminho_arquivo TEXT, status VARCHAR(30) NOT NULL DEFAULT 'PROCESSANDO' CHECK (status IN ('PROCESSANDO', 'ATIVO', 'ERRO', 'EXCLUIDO')), descricao TEXT, criado_em TIMESTAMPTZ NOT NULL DEFAULT NOW(), @@ -444,4 +446,4 @@ CREATE TABLE IF NOT EXISTS pdca.anexo ( ) OR tipo_arquivo LIKE 'image/%' ) -); +); \ No newline at end of file