feat: tipos e funcoes de alertas do e-licencie

This commit is contained in:
marcio 2025-03-18 10:15:51 -03:00
parent 02f9f3902b
commit 3693c8db24
11 changed files with 141 additions and 6 deletions

View file

@ -159,4 +159,19 @@ declare const abrirNps: (emDesenvolvimento: boolean) => (parametros: tipo_proxim
declare const inquilinoStatus: z.ZodEnum<["ativo", "inativo"]>;
declare const statusinquilino: z.ZodEnum<["ativo", "inativo"]>;
export { abrirNps, inquilinoStatus, nomesSincronizacoes, statusinquilino, type tipo_proxima_avaliacao, type tipo_zUsuarioSincronizar, zAuntenticacaoResiduosSolicitar, zEmpreendedorSincronizar, zEmpreendimentoSincronizar, zUsuarioSincronizar };
type tipos_alertas = {
intervalo_alertas: "D" | "S" | "Q" | "M";
};
declare const intervalosDosAlertas: {
[k in tipos_alertas["intervalo_alertas"]]: string;
};
declare const enviarHoje: (inter: tipos_alertas["intervalo_alertas"] | null | undefined, data?: string) => boolean;
declare const intervalosTipos: (tipoEntrada: keyof typeof intervalosDosAlertas | undefined | null, log: string[]) => {
campo_situacao: string;
prefixo_assunto: string;
tipo: string;
enviar_hoje: boolean;
};
export { abrirNps, enviarHoje, inquilinoStatus, intervalosDosAlertas, intervalosTipos, nomesSincronizacoes, statusinquilino, type tipo_proxima_avaliacao, type tipo_zUsuarioSincronizar, type tipos_alertas, zAuntenticacaoResiduosSolicitar, zEmpreendedorSincronizar, zEmpreendimentoSincronizar, zUsuarioSincronizar };

View file

@ -1 +1 @@
import{z as o}from"zod";var C=o.object({codigo_token:o.string().optional(),codigo_usuario:o.string().uuid(),nome_usuario:o.string(),email_usuario:o.string(),documento_usuario:o.string(),inquilino:o.string(),rotas:o.object({}),url_usuarios:o.string().url(),url_empreendedores:o.string().url(),url_empreendimentos:o.string().url(),tipo_usuario:o.string(),sistema:o.string(),sistema_cor:o.string(),sistema_nome:o.string(),sistema_logo:o.string()}),S=o.object({codigo:o.string().uuid(),documento:o.string(),excluido:o.boolean(),nome:o.string(),permicoes:o.record(o.any()),versao:o.number().int(),credenciais_sinir:o.object({login:o.string().optional(),senha:o.string().optional()}).optional()}),j=o.object({codigo:o.string().uuid(),documento:o.string(),excluido:o.boolean(),nome:o.string(),versao:o.number().int()}),w=o.object({codigo:o.string().uuid(),codigo_empreendedor:o.string().uuid(),documento:o.string(),excluido:o.boolean(),nome:o.string(),unidade_sinir:o.string().nullable().optional(),versao:o.number().int()}),I=o.enum(["usuarios","empreendedores","empreendimentos"]);var a;(function(e){e[e.sucesso=200]="sucesso",e[e.erroConhecido=400]="erroConhecido",e[e.erroPermissao=401]="erroPermissao",e[e.erroNaoEncontrado=404]="erroNaoEncontrado",e[e.erroDesconhecido=500]="erroDesconhecido",e[e.tempoEsgotado=504]="tempoEsgotado"})(a||(a={}));var h=e=>{let c=(r,n)=>({cod:a.sucesso,valor:r,mensagem:void 0,eErro:!1,eCerto:!0,detalhes:n}),u=r=>({cod:a.sucesso,valor:!0,mensagem:void 0,eErro:!1,eCerto:!0,detalhes:r}),p=(r,n)=>({cod:a.erroConhecido,valor:void 0,mensagem:r,eErro:!0,eCerto:!1,detalhes:n}),d=(r,n)=>({cod:a.erroPermissao,valor:void 0,mensagem:r||"Sem permiss\xE3o para esse recurso.",eErro:!0,eCerto:!1,detalhes:n}),g=(r,n)=>({cod:a.erroNaoEncontrado,valor:void 0,mensagem:r||"Registro n\xE3o encontrado ou a execu\xE7\xE3o dessa a\xE7\xE3o depende de um registro existente.",eErro:!0,eCerto:!1,detalhes:n}),_=r=>{let n=e(r),t=`${r.mensagem||"Erro interno"}`;return{cod:a.erroDesconhecido,valor:void 0,mensagem:t,eErro:!0,eCerto:!1,...n}},s=(r,n)=>({cod:a.tempoEsgotado,valor:void 0,mensagem:r||"Tempo de resposta esgotado ao tentar acessar o recurso.",eErro:!0,eCerto:!1,detalhes:n});return{valor:c,valorTrue:u,erro:p,erroPermissao:d,erroInterno:_,naoEncontrado:g,tempoEsgotado:s,erroEspera:s}},v=h(()=>({}));var N=e=>async c=>{let u=e?"http://localhost:5040/nps":"https://carro-de-boi.idz.one/nps",p=`${u}/api`,{sistema:d,inquilino:g,codigo_usuario:_}=c,s=`nps_proxima_avaliacao_${d}_${_}_${g}_0`,l=localStorage.getItem(s);if(!l){let i=new URL(`${p}/${d}/proxima_avaliacao`);for(let[m,b]of Object.entries(c))i.searchParams.append(m,b);let x=(await fetch(i.href).then(m=>m.json()).catch(m=>v.erro(m.message))).valor;x&&localStorage.setItem(s,x)}if(!(l&&new Date().toISOString().slice(0,10)>=l))return;localStorage.removeItem(s);let n=new URL(u);for(let[i,f]of Object.entries(c))n.searchParams.append(i,f);let t=document.createElement("iframe");t.src=n.href,t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="100%",t.style.height="100%",t.style.border="none",t.style.zIndex="999999",document.body.appendChild(t),window.addEventListener("message",i=>{i.data==="fechar"&&document.body.removeChild(t)})};import{z as E}from"zod";var z=E.enum(["ativo","inativo"]),T=z;export{N as abrirNps,z as inquilinoStatus,I as nomesSincronizacoes,T as statusinquilino,C as zAuntenticacaoResiduosSolicitar,j as zEmpreendedorSincronizar,w as zEmpreendimentoSincronizar,S as zUsuarioSincronizar};
import{z as o}from"zod";var C=o.object({codigo_token:o.string().optional(),codigo_usuario:o.string().uuid(),nome_usuario:o.string(),email_usuario:o.string(),documento_usuario:o.string(),inquilino:o.string(),rotas:o.object({}),url_usuarios:o.string().url(),url_empreendedores:o.string().url(),url_empreendimentos:o.string().url(),tipo_usuario:o.string(),sistema:o.string(),sistema_cor:o.string(),sistema_nome:o.string(),sistema_logo:o.string()}),P=o.object({codigo:o.string().uuid(),documento:o.string(),excluido:o.boolean(),nome:o.string(),permicoes:o.record(o.any()),versao:o.number().int(),credenciais_sinir:o.object({login:o.string().optional(),senha:o.string().optional()}).optional()}),w=o.object({codigo:o.string().uuid(),documento:o.string(),excluido:o.boolean(),nome:o.string(),versao:o.number().int()}),k=o.object({codigo:o.string().uuid(),codigo_empreendedor:o.string().uuid(),documento:o.string(),excluido:o.boolean(),nome:o.string(),unidade_sinir:o.string().nullable().optional(),versao:o.number().int()}),$=o.enum(["usuarios","empreendedores","empreendimentos"]);var i;(function(e){e[e.sucesso=200]="sucesso",e[e.erroConhecido=400]="erroConhecido",e[e.erroPermissao=401]="erroPermissao",e[e.erroNaoEncontrado=404]="erroNaoEncontrado",e[e.erroDesconhecido=500]="erroDesconhecido",e[e.tempoEsgotado=504]="tempoEsgotado"})(i||(i={}));var y=e=>{let s=(r,t)=>({cod:i.sucesso,valor:r,mensagem:void 0,eErro:!1,eCerto:!0,detalhes:t}),a=r=>({cod:i.sucesso,valor:!0,mensagem:void 0,eErro:!1,eCerto:!0,detalhes:r}),u=(r,t)=>({cod:i.erroConhecido,valor:void 0,mensagem:r,eErro:!0,eCerto:!1,detalhes:t}),c=(r,t)=>({cod:i.erroPermissao,valor:void 0,mensagem:r||"Sem permiss\xE3o para esse recurso.",eErro:!0,eCerto:!1,detalhes:t}),p=(r,t)=>({cod:i.erroNaoEncontrado,valor:void 0,mensagem:r||"Registro n\xE3o encontrado ou a execu\xE7\xE3o dessa a\xE7\xE3o depende de um registro existente.",eErro:!0,eCerto:!1,detalhes:t}),m=r=>{let t=e(r),n=`${r.mensagem||"Erro interno"}`;return{cod:i.erroDesconhecido,valor:void 0,mensagem:n,eErro:!0,eCerto:!1,...t}},l=(r,t)=>({cod:i.tempoEsgotado,valor:void 0,mensagem:r||"Tempo de resposta esgotado ao tentar acessar o recurso.",eErro:!0,eCerto:!1,detalhes:t});return{valor:s,valorTrue:a,erro:u,erroPermissao:c,erroInterno:m,naoEncontrado:p,tempoEsgotado:l,erroEspera:l}},h=y(()=>({}));var U=e=>async s=>{let a=e?"http://localhost:5040/nps":"https://carro-de-boi.idz.one/nps",u=`${a}/api`,{sistema:c,inquilino:p,codigo_usuario:m}=s,l=`nps_proxima_avaliacao_${c}_${m}_${p}_0`,f=localStorage.getItem(l);if(!f){let d=new URL(`${u}/${c}/proxima_avaliacao`);for(let[_,S]of Object.entries(s))d.searchParams.append(_,S);let v=(await fetch(d.href).then(_=>_.json()).catch(_=>h.erro(_.message))).valor;v&&localStorage.setItem(l,v)}if(!(f&&new Date().toISOString().slice(0,10)>=f))return;localStorage.removeItem(l);let t=new URL(a);for(let[d,x]of Object.entries(s))t.searchParams.append(d,x);let n=document.createElement("iframe");n.src=t.href,n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%",n.style.border="none",n.style.zIndex="999999",document.body.appendChild(n),window.addEventListener("message",d=>{d.data==="fechar"&&document.body.removeChild(n)})};import{z as E}from"zod";var j=E.enum(["ativo","inativo"]),T=j;import b from"dayjs";import z from"dayjs/plugin/weekOfYear";b.extend(z);var g=(e,s)=>{let a=b(s||void 0);return!e||e=="D"||e=="M"&&a.get("D")==1||e=="S"&&a.get("d")==1||e=="S"&&a.get("d")==1&&a.week()%2==1},Y=(e,s)=>{s.push(`intervalosTipos -> tipoEntrada:${e}`);let a={M:{campo_situacao:"situacao_texto_30",prefixo_assunto:"(Previs\xE3o para os pr\xF3ximos 30 dias) ",tipo:"M",enviar_hoje:g("M")},Q:{campo_situacao:"situacao_texto_15",prefixo_assunto:"(Previs\xE3o para os pr\xF3ximos 15 dias) ",tipo:"Q",enviar_hoje:g("Q")},S:{campo_situacao:"situacao_texto_7",prefixo_assunto:"(Previs\xE3o para os pr\xF3ximos 7 dias) ",tipo:"S",enviar_hoje:g("S")},D:{campo_situacao:"situacao_texto",prefixo_assunto:"",tipo:"D",enviar_hoje:g("D")}},{campo_situacao:u,enviar_hoje:c,prefixo_assunto:p,tipo:m}=a[e||"D"]||a.D;return s.push(u,p,m,c?"S":"N"),{campo_situacao:u,prefixo_assunto:p,tipo:m,enviar_hoje:c}};var G={D:"Di\xE1rio",S:"Semanal, nas segundas-feira",Q:"Quinzenal, nas segundas-feira",M:"Mensal, primeiro dia de cada m\xEAs"};export{U as abrirNps,g as enviarHoje,j as inquilinoStatus,G as intervalosDosAlertas,Y as intervalosTipos,$ as nomesSincronizacoes,T as statusinquilino,C as zAuntenticacaoResiduosSolicitar,w as zEmpreendedorSincronizar,k as zEmpreendimentoSincronizar,P as zUsuarioSincronizar};

View file

@ -159,4 +159,19 @@ declare const abrirNps: (emDesenvolvimento: boolean) => (parametros: tipo_proxim
declare const inquilinoStatus: z.ZodEnum<["ativo", "inativo"]>;
declare const statusinquilino: z.ZodEnum<["ativo", "inativo"]>;
export { abrirNps, inquilinoStatus, nomesSincronizacoes, statusinquilino, type tipo_proxima_avaliacao, type tipo_zUsuarioSincronizar, zAuntenticacaoResiduosSolicitar, zEmpreendedorSincronizar, zEmpreendimentoSincronizar, zUsuarioSincronizar };
type tipos_alertas = {
intervalo_alertas: "D" | "S" | "Q" | "M";
};
declare const intervalosDosAlertas: {
[k in tipos_alertas["intervalo_alertas"]]: string;
};
declare const enviarHoje: (inter: tipos_alertas["intervalo_alertas"] | null | undefined, data?: string) => boolean;
declare const intervalosTipos: (tipoEntrada: keyof typeof intervalosDosAlertas | undefined | null, log: string[]) => {
campo_situacao: string;
prefixo_assunto: string;
tipo: string;
enviar_hoje: boolean;
};
export { abrirNps, enviarHoje, inquilinoStatus, intervalosDosAlertas, intervalosTipos, nomesSincronizacoes, statusinquilino, type tipo_proxima_avaliacao, type tipo_zUsuarioSincronizar, type tipos_alertas, zAuntenticacaoResiduosSolicitar, zEmpreendedorSincronizar, zEmpreendimentoSincronizar, zUsuarioSincronizar };

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
{
"name": "p-drives",
"version": "0.231.0",
"version": "0.233.0",
"description": "",
"main": "src/index.ts",
"exports": {
@ -37,6 +37,7 @@
"dependencies": {
"autenticacao-drive": "https://e-licencie.com.br/pacotes/autenticacao-drive-0.8.0.tgz",
"cross-fetch": "^4.0.0",
"dayjs": "^1.11.13",
"zod": "3.24.1"
}
}

15
pnpm-lock.yaml generated
View file

@ -14,6 +14,9 @@ importers:
cross-fetch:
specifier: ^4.0.0
version: 4.0.0
dayjs:
specifier: ^1.11.13
version: 1.11.13
zod:
specifier: 3.24.1
version: 3.24.1
@ -446,6 +449,9 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
dayjs@1.11.13:
resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'}
@ -759,6 +765,9 @@ packages:
zod@3.24.1:
resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==}
zod@3.24.2:
resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==}
snapshots:
'@biomejs/biome@1.9.4':
@ -1030,6 +1039,8 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
dayjs@1.11.13: {}
debug@4.4.0:
dependencies:
ms: 2.1.3
@ -1145,7 +1156,7 @@ snapshots:
p-respostas@git+http://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one:3000/git/multi-modulos-ambientais/_respostas.git#6ebb31d2b6b6335cb6e7795e4fc1f5efeb51b5be:
dependencies:
zod: 3.24.1
zod: 3.24.2
package-json-from-dist@1.0.1: {}
@ -1338,3 +1349,5 @@ snapshots:
strip-ansi: 7.1.0
zod@3.24.1: {}
zod@3.24.2: {}

View file

@ -0,0 +1,75 @@
import dayjs from "dayjs"
import weekOfYear from "dayjs/plugin/weekOfYear"
import type { intervalosDosAlertas, tipos_alertas } from "./tipos"
dayjs.extend(weekOfYear)
export const enviarHoje = (
inter: tipos_alertas["intervalo_alertas"] | null | undefined,
data?: string,
): boolean => {
const hoje = dayjs(data || undefined)
if (!inter) return true
if (inter == "D") return true
if (inter == "M" && hoje.get("D") == 1) return true
if (inter == "S" && hoje.get("d") == 1) return true
if (inter == "S" && hoje.get("d") == 1 && hoje.week() % 2 == 1) return true
return false
}
export const intervalosTipos = (
tipoEntrada: keyof typeof intervalosDosAlertas | undefined | null,
log: string[],
): {
campo_situacao: string //campo que será buscado nas tabelas alertas
prefixo_assunto: string // texto que vai no prefixo
tipo: string //tipo de intervalo
enviar_hoje: boolean //indica se está habilitado para envio hoje
} => {
log.push(`intervalosTipos -> tipoEntrada:${tipoEntrada}`)
const config: {
[k in keyof typeof intervalosDosAlertas]: {
campo_situacao: string
prefixo_assunto: string
tipo: k
enviar_hoje: boolean
}
} = {
M: {
campo_situacao: "situacao_texto_30",
prefixo_assunto: "(Previsão para os próximos 30 dias) ",
tipo: "M",
enviar_hoje: enviarHoje("M"),
},
Q: {
campo_situacao: "situacao_texto_15",
prefixo_assunto: "(Previsão para os próximos 15 dias) ",
tipo: "Q",
enviar_hoje: enviarHoje("Q"),
},
S: {
campo_situacao: "situacao_texto_7",
prefixo_assunto: "(Previsão para os próximos 7 dias) ",
tipo: "S",
enviar_hoje: enviarHoje("S"),
},
D: {
campo_situacao: "situacao_texto",
prefixo_assunto: "",
tipo: "D",
enviar_hoje: enviarHoje("D"),
},
}
const { campo_situacao, enviar_hoje, prefixo_assunto, tipo } =
config[tipoEntrada || "D"] || config.D
log.push(campo_situacao, prefixo_assunto, tipo, enviar_hoje ? "S" : "N")
return { campo_situacao, prefixo_assunto, tipo, enviar_hoje }
}

View file

@ -0,0 +1,2 @@
export * from "./funcoes_alertas"
export * from "./tipos"

View file

@ -0,0 +1,12 @@
export type tipos_alertas = {
intervalo_alertas: "D" | "S" | "Q" | "M"
}
export const intervalosDosAlertas: {
[k in tipos_alertas["intervalo_alertas"]]: string
} = {
D: "Diário",
S: "Semanal, nas segundas-feira",
Q: "Quinzenal, nas segundas-feira",
M: "Mensal, primeiro dia de cada mês",
}

1
src/e-licencie/index.ts Normal file
View file

@ -0,0 +1 @@
export * from "./Alertas"

View file

@ -1,3 +1,4 @@
export * from "./residuos"
export * from "./NPS"
export * from "./variaveis"
export * from "./e-licencie"