feat: defasagem configuravel entre corte e solda no cronograma e dashboard de producao

This commit is contained in:
2026-09-09 18:04:27 +00:00
parent bd429856a6
commit aa457ffa0c
4 changed files with 64 additions and 0 deletions
+5
View File
@@ -72,6 +72,7 @@ export const useCronogramas = () => {
of_id: cronograma.of_id,
gestor_id: cronograma.gestor_id,
revisao: cronograma.revisao,
defasagem_solda: cronograma.defasagem_solda ?? 10,
processos: processos || [],
peso_total: cronograma.ordens_fabricacao?.peso_total,
ordem_fabricacao: cronograma.ordens_fabricacao,
@@ -106,6 +107,7 @@ export const useCronogramas = () => {
.update({
gestor_id: cronograma.gestor_id,
revisao: novaRevisao,
defasagem_solda: cronograma.defasagem_solda !== undefined ? cronograma.defasagem_solda : 10,
updated_at: new Date().toISOString()
})
.eq('id', cronograma.id)
@@ -139,6 +141,7 @@ export const useCronogramas = () => {
.update({
gestor_id: cronograma.gestor_id,
revisao: novaRevisao,
defasagem_solda: cronograma.defasagem_solda !== undefined ? cronograma.defasagem_solda : 10,
updated_at: new Date().toISOString()
})
.eq('id', existingCronograma.id)
@@ -163,6 +166,7 @@ export const useCronogramas = () => {
of_id: cronograma.of_id,
gestor_id: cronograma.gestor_id,
revisao: 1,
defasagem_solda: cronograma.defasagem_solda !== undefined ? cronograma.defasagem_solda : 10,
created_by: user.id
})
.select()
@@ -255,6 +259,7 @@ export const useCronogramas = () => {
of_id: cronograma.of_id,
gestor_id: cronograma.gestor_id,
revisao: cronograma.revisao,
defasagem_solda: cronograma.defasagem_solda ?? 10,
processos: processos || [],
peso_total: cronograma.ordens_fabricacao?.peso_total,
ordem_fabricacao: cronograma.ordens_fabricacao,
@@ -215,6 +215,7 @@ export const useDashboardProducaoOtimizado = (ofNumber: string) => {
.from('cronogramas_of')
.select(`
id,
defasagem_solda,
processos_cronograma:processos_cronograma(
nome_processo,
data_inicio,
@@ -287,6 +288,27 @@ export const useDashboardProducaoOtimizado = (ofNumber: string) => {
console.log(`Processo ${nomeProcesso}: ${diasDecorridos}/${diasTotais} dias = ${percentualEsperado.toFixed(2)}%`);
}
// Se for o processo de Solda, aplicar o fator de defasagem configurado em relação ao Corte
if (nomeProcesso.toLowerCase().includes('solda')) {
const defasagem = cronogramaOf?.defasagem_solda !== undefined && cronogramaOf?.defasagem_solda !== null
? Number(cronogramaOf.defasagem_solda)
: 10;
if (percentualEsperado <= defasagem) {
console.log(`Processo Solda: Fabricação esperada (${percentualEsperado.toFixed(2)}%) <= defasagem (${defasagem}%) -> Progresso esperado Solda: 0%`);
return 0;
}
if (hoje > dataFim) {
return 100;
}
// Escalonamento suave proporcional: de defasagem% até 100%
const progressoSolda = ((percentualEsperado - defasagem) / (100 - defasagem)) * 100;
console.log(`Processo Solda: Fabricação (${percentualEsperado.toFixed(2)}%) com defasagem (${defasagem}%) -> Solda esperada: ${progressoSolda.toFixed(2)}%`);
return Math.min(100, Math.max(0, progressoSolda));
}
return Math.min(100, Math.max(0, percentualEsperado));
};