cadastro: CronJob diario dos logins (afastados/desligados e acesso vencido), 00:20 America/Sao_Paulo
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# =============================================================================
|
||||
# 07/10/2026 — a rotina DIARIA dos logins do app (cadastro, no runtime-core):
|
||||
#
|
||||
# 1. acompanhante ATIVO com a janela de acesso vencida (acesso_fim ANTES de
|
||||
# hoje, no fuso de Sao Paulo) vira EXPIRADO e perde o login do app dos pais
|
||||
# — o mesmo caminho de quem e marcado EXPIRADO na tela. O que ficou fora de
|
||||
# ATIVO com o login ainda nao desativado (Keycloak fora na hora) e tentado
|
||||
# de novo;
|
||||
# 2. funcionario que JA esta AFASTADO/DESLIGADO com login habilitado (gravado
|
||||
# antes da regra de 07/10, ou ligado a um login depois de afastado) tem os
|
||||
# logins desabilitados, com os ids guardados em
|
||||
# funcionario.logins_desabilitados_pela_situacao (voltar a ATIVO reabilita
|
||||
# so esses). Login com atm_admin fica habilitado — so um WARN no log.
|
||||
#
|
||||
# AGUARDANDO GRAVACAO no molde e nos 4 tenants antigos. Nada aqui foi aplicado.
|
||||
#
|
||||
# Por que CronJob, e nao @Scheduled: o mesmo motivo do financeiro e da retencao
|
||||
# — com mais de uma replica do runtime-core, um agendador no processo rodaria
|
||||
# duas vezes. A rotina e idempotente (a segunda rodada nao faz nada), mas uma so
|
||||
# e o desenho certo. Pela mesma razao NAO roda na subida do pod: para rodar logo
|
||||
# depois do deploy, `kubectl -n <tenant>-prod create job --from=cronjob/cadastro-logins cadastro-logins-agora`.
|
||||
#
|
||||
# DEPENDE do ConfigMap `financeiro-cron` (55-cronjobs-financeiro.yaml): o mesmo
|
||||
# `disparar.sh`, o mesmo client `operacao` e o mesmo Secret
|
||||
# `operacao-credentials`. O runtime-core so aceita a rota com token do client
|
||||
# `operacao` (SegurancaDoRuntime) — nenhum usuario humano, nem admin.
|
||||
#
|
||||
# Keycloak fora NAO falha o Job: o endpoint responde 200 com `falhas` > 0 no
|
||||
# corpo (e log ERROR no runtime-core), e a rodada seguinte tenta de novo. O Job
|
||||
# so falha se o runtime-core nao responder 2xx (rota inexistente = imagem
|
||||
# antiga, 401/403 = client errado, 5xx).
|
||||
#
|
||||
# ANTES DE APLICAR: o runtime-core do tenant tem de estar numa imagem com o
|
||||
# endpoint POST /api/cadastro/rotinas/logins (senao 404 e o Job falha todo dia).
|
||||
# =============================================================================
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: cadastro-logins
|
||||
namespace: {{TENANT}}-prod
|
||||
spec:
|
||||
# 00:20 em Sao Paulo: logo depois da virada do dia (a janela que terminou
|
||||
# ontem expira na primeira hora de hoje), longe do backup (02:30), do resumo
|
||||
# (04:30), da retencao (04:40) e das tarefas do financeiro (:15 e :30).
|
||||
schedule: "20 0 * * *"
|
||||
timeZone: America/Sao_Paulo
|
||||
concurrencyPolicy: Forbid
|
||||
successfulJobsHistoryLimit: 3
|
||||
failedJobsHistoryLimit: 5
|
||||
jobTemplate:
|
||||
spec:
|
||||
activeDeadlineSeconds: 900
|
||||
backoffLimit: 1
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
containers:
|
||||
- name: disparar
|
||||
image: docker.io/curlimages/curl:8.9.1
|
||||
imagePullPolicy: Never
|
||||
command: ["/bin/sh", "/script/disparar.sh"]
|
||||
env:
|
||||
- name: KEYCLOAK_URL
|
||||
value: http://keycloak.plataforma-prod.svc:8080/realms/{{REALM}}/protocol/openid-connect/token
|
||||
- name: ISSUER_HOST
|
||||
value: auth.athleticmap.com
|
||||
- name: ALVO
|
||||
value: http://runtime-core/api/cadastro/rotinas/logins
|
||||
- name: CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: operacao-credentials
|
||||
key: client-secret
|
||||
resources:
|
||||
requests: { cpu: 10m, memory: 32Mi }
|
||||
limits: { cpu: 200m, memory: 64Mi }
|
||||
volumeMounts:
|
||||
- name: script
|
||||
mountPath: /script
|
||||
volumes:
|
||||
- name: script
|
||||
configMap:
|
||||
name: financeiro-cron
|
||||
defaultMode: 0555
|
||||
@@ -0,0 +1,84 @@
|
||||
# =============================================================================
|
||||
# 07/10/2026 — a rotina DIARIA dos logins do app (cadastro, no runtime-core):
|
||||
#
|
||||
# 1. acompanhante ATIVO com a janela de acesso vencida (acesso_fim ANTES de
|
||||
# hoje, no fuso de Sao Paulo) vira EXPIRADO e perde o login do app dos pais
|
||||
# — o mesmo caminho de quem e marcado EXPIRADO na tela. O que ficou fora de
|
||||
# ATIVO com o login ainda nao desativado (Keycloak fora na hora) e tentado
|
||||
# de novo;
|
||||
# 2. funcionario que JA esta AFASTADO/DESLIGADO com login habilitado (gravado
|
||||
# antes da regra de 07/10, ou ligado a um login depois de afastado) tem os
|
||||
# logins desabilitados, com os ids guardados em
|
||||
# funcionario.logins_desabilitados_pela_situacao (voltar a ATIVO reabilita
|
||||
# so esses). Login com atm_admin fica habilitado — so um WARN no log.
|
||||
#
|
||||
# AGUARDANDO GRAVACAO no molde e nos 4 tenants antigos. Nada aqui foi aplicado.
|
||||
#
|
||||
# Por que CronJob, e nao @Scheduled: o mesmo motivo do financeiro e da retencao
|
||||
# — com mais de uma replica do runtime-core, um agendador no processo rodaria
|
||||
# duas vezes. A rotina e idempotente (a segunda rodada nao faz nada), mas uma so
|
||||
# e o desenho certo. Pela mesma razao NAO roda na subida do pod: para rodar logo
|
||||
# depois do deploy, `kubectl -n <tenant>-prod create job --from=cronjob/cadastro-logins cadastro-logins-agora`.
|
||||
#
|
||||
# DEPENDE do ConfigMap `financeiro-cron` (55-cronjobs-financeiro.yaml): o mesmo
|
||||
# `disparar.sh`, o mesmo client `operacao` e o mesmo Secret
|
||||
# `operacao-credentials`. O runtime-core so aceita a rota com token do client
|
||||
# `operacao` (SegurancaDoRuntime) — nenhum usuario humano, nem admin.
|
||||
#
|
||||
# Keycloak fora NAO falha o Job: o endpoint responde 200 com `falhas` > 0 no
|
||||
# corpo (e log ERROR no runtime-core), e a rodada seguinte tenta de novo. O Job
|
||||
# so falha se o runtime-core nao responder 2xx (rota inexistente = imagem
|
||||
# antiga, 401/403 = client errado, 5xx).
|
||||
#
|
||||
# ANTES DE APLICAR: o runtime-core do tenant tem de estar numa imagem com o
|
||||
# endpoint POST /api/cadastro/rotinas/logins (senao 404 e o Job falha todo dia).
|
||||
# =============================================================================
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: cadastro-logins
|
||||
namespace: acme-prod
|
||||
spec:
|
||||
# 00:20 em Sao Paulo: logo depois da virada do dia (a janela que terminou
|
||||
# ontem expira na primeira hora de hoje), longe do backup (02:30), do resumo
|
||||
# (04:30), da retencao (04:40) e das tarefas do financeiro (:15 e :30).
|
||||
schedule: "20 0 * * *"
|
||||
timeZone: America/Sao_Paulo
|
||||
concurrencyPolicy: Forbid
|
||||
successfulJobsHistoryLimit: 3
|
||||
failedJobsHistoryLimit: 5
|
||||
jobTemplate:
|
||||
spec:
|
||||
activeDeadlineSeconds: 900
|
||||
backoffLimit: 1
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
containers:
|
||||
- name: disparar
|
||||
image: docker.io/curlimages/curl:8.9.1
|
||||
imagePullPolicy: Never
|
||||
command: ["/bin/sh", "/script/disparar.sh"]
|
||||
env:
|
||||
- name: KEYCLOAK_URL
|
||||
value: http://keycloak.plataforma-prod.svc:8080/realms/athleticmap-3/protocol/openid-connect/token
|
||||
- name: ISSUER_HOST
|
||||
value: auth.athleticmap.com
|
||||
- name: ALVO
|
||||
value: http://runtime-core/api/cadastro/rotinas/logins
|
||||
- name: CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: operacao-credentials
|
||||
key: client-secret
|
||||
resources:
|
||||
requests: { cpu: 10m, memory: 32Mi }
|
||||
limits: { cpu: 200m, memory: 64Mi }
|
||||
volumeMounts:
|
||||
- name: script
|
||||
mountPath: /script
|
||||
volumes:
|
||||
- name: script
|
||||
configMap:
|
||||
name: financeiro-cron
|
||||
defaultMode: 0555
|
||||
@@ -0,0 +1,84 @@
|
||||
# =============================================================================
|
||||
# 07/10/2026 — a rotina DIARIA dos logins do app (cadastro, no runtime-core):
|
||||
#
|
||||
# 1. acompanhante ATIVO com a janela de acesso vencida (acesso_fim ANTES de
|
||||
# hoje, no fuso de Sao Paulo) vira EXPIRADO e perde o login do app dos pais
|
||||
# — o mesmo caminho de quem e marcado EXPIRADO na tela. O que ficou fora de
|
||||
# ATIVO com o login ainda nao desativado (Keycloak fora na hora) e tentado
|
||||
# de novo;
|
||||
# 2. funcionario que JA esta AFASTADO/DESLIGADO com login habilitado (gravado
|
||||
# antes da regra de 07/10, ou ligado a um login depois de afastado) tem os
|
||||
# logins desabilitados, com os ids guardados em
|
||||
# funcionario.logins_desabilitados_pela_situacao (voltar a ATIVO reabilita
|
||||
# so esses). Login com atm_admin fica habilitado — so um WARN no log.
|
||||
#
|
||||
# AGUARDANDO GRAVACAO no molde e nos 4 tenants antigos. Nada aqui foi aplicado.
|
||||
#
|
||||
# Por que CronJob, e nao @Scheduled: o mesmo motivo do financeiro e da retencao
|
||||
# — com mais de uma replica do runtime-core, um agendador no processo rodaria
|
||||
# duas vezes. A rotina e idempotente (a segunda rodada nao faz nada), mas uma so
|
||||
# e o desenho certo. Pela mesma razao NAO roda na subida do pod: para rodar logo
|
||||
# depois do deploy, `kubectl -n <tenant>-prod create job --from=cronjob/cadastro-logins cadastro-logins-agora`.
|
||||
#
|
||||
# DEPENDE do ConfigMap `financeiro-cron` (55-cronjobs-financeiro.yaml): o mesmo
|
||||
# `disparar.sh`, o mesmo client `operacao` e o mesmo Secret
|
||||
# `operacao-credentials`. O runtime-core so aceita a rota com token do client
|
||||
# `operacao` (SegurancaDoRuntime) — nenhum usuario humano, nem admin.
|
||||
#
|
||||
# Keycloak fora NAO falha o Job: o endpoint responde 200 com `falhas` > 0 no
|
||||
# corpo (e log ERROR no runtime-core), e a rodada seguinte tenta de novo. O Job
|
||||
# so falha se o runtime-core nao responder 2xx (rota inexistente = imagem
|
||||
# antiga, 401/403 = client errado, 5xx).
|
||||
#
|
||||
# ANTES DE APLICAR: o runtime-core do tenant tem de estar numa imagem com o
|
||||
# endpoint POST /api/cadastro/rotinas/logins (senao 404 e o Job falha todo dia).
|
||||
# =============================================================================
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: cadastro-logins
|
||||
namespace: demo-prod
|
||||
spec:
|
||||
# 00:20 em Sao Paulo: logo depois da virada do dia (a janela que terminou
|
||||
# ontem expira na primeira hora de hoje), longe do backup (02:30), do resumo
|
||||
# (04:30), da retencao (04:40) e das tarefas do financeiro (:15 e :30).
|
||||
schedule: "20 0 * * *"
|
||||
timeZone: America/Sao_Paulo
|
||||
concurrencyPolicy: Forbid
|
||||
successfulJobsHistoryLimit: 3
|
||||
failedJobsHistoryLimit: 5
|
||||
jobTemplate:
|
||||
spec:
|
||||
activeDeadlineSeconds: 900
|
||||
backoffLimit: 1
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
containers:
|
||||
- name: disparar
|
||||
image: docker.io/curlimages/curl:8.9.1
|
||||
imagePullPolicy: Never
|
||||
command: ["/bin/sh", "/script/disparar.sh"]
|
||||
env:
|
||||
- name: KEYCLOAK_URL
|
||||
value: http://keycloak.plataforma-prod.svc:8080/realms/athleticmap-2/protocol/openid-connect/token
|
||||
- name: ISSUER_HOST
|
||||
value: auth.athleticmap.com
|
||||
- name: ALVO
|
||||
value: http://runtime-core/api/cadastro/rotinas/logins
|
||||
- name: CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: operacao-credentials
|
||||
key: client-secret
|
||||
resources:
|
||||
requests: { cpu: 10m, memory: 32Mi }
|
||||
limits: { cpu: 200m, memory: 64Mi }
|
||||
volumeMounts:
|
||||
- name: script
|
||||
mountPath: /script
|
||||
volumes:
|
||||
- name: script
|
||||
configMap:
|
||||
name: financeiro-cron
|
||||
defaultMode: 0555
|
||||
@@ -0,0 +1,84 @@
|
||||
# =============================================================================
|
||||
# 07/10/2026 — a rotina DIARIA dos logins do app (cadastro, no runtime-core):
|
||||
#
|
||||
# 1. acompanhante ATIVO com a janela de acesso vencida (acesso_fim ANTES de
|
||||
# hoje, no fuso de Sao Paulo) vira EXPIRADO e perde o login do app dos pais
|
||||
# — o mesmo caminho de quem e marcado EXPIRADO na tela. O que ficou fora de
|
||||
# ATIVO com o login ainda nao desativado (Keycloak fora na hora) e tentado
|
||||
# de novo;
|
||||
# 2. funcionario que JA esta AFASTADO/DESLIGADO com login habilitado (gravado
|
||||
# antes da regra de 07/10, ou ligado a um login depois de afastado) tem os
|
||||
# logins desabilitados, com os ids guardados em
|
||||
# funcionario.logins_desabilitados_pela_situacao (voltar a ATIVO reabilita
|
||||
# so esses). Login com atm_admin fica habilitado — so um WARN no log.
|
||||
#
|
||||
# AGUARDANDO GRAVACAO no molde e nos 4 tenants antigos. Nada aqui foi aplicado.
|
||||
#
|
||||
# Por que CronJob, e nao @Scheduled: o mesmo motivo do financeiro e da retencao
|
||||
# — com mais de uma replica do runtime-core, um agendador no processo rodaria
|
||||
# duas vezes. A rotina e idempotente (a segunda rodada nao faz nada), mas uma so
|
||||
# e o desenho certo. Pela mesma razao NAO roda na subida do pod: para rodar logo
|
||||
# depois do deploy, `kubectl -n <tenant>-prod create job --from=cronjob/cadastro-logins cadastro-logins-agora`.
|
||||
#
|
||||
# DEPENDE do ConfigMap `financeiro-cron` (55-cronjobs-financeiro.yaml): o mesmo
|
||||
# `disparar.sh`, o mesmo client `operacao` e o mesmo Secret
|
||||
# `operacao-credentials`. O runtime-core so aceita a rota com token do client
|
||||
# `operacao` (SegurancaDoRuntime) — nenhum usuario humano, nem admin.
|
||||
#
|
||||
# Keycloak fora NAO falha o Job: o endpoint responde 200 com `falhas` > 0 no
|
||||
# corpo (e log ERROR no runtime-core), e a rodada seguinte tenta de novo. O Job
|
||||
# so falha se o runtime-core nao responder 2xx (rota inexistente = imagem
|
||||
# antiga, 401/403 = client errado, 5xx).
|
||||
#
|
||||
# ANTES DE APLICAR: o runtime-core do tenant tem de estar numa imagem com o
|
||||
# endpoint POST /api/cadastro/rotinas/logins (senao 404 e o Job falha todo dia).
|
||||
# =============================================================================
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: cadastro-logins
|
||||
namespace: escolinha-prod
|
||||
spec:
|
||||
# 00:20 em Sao Paulo: logo depois da virada do dia (a janela que terminou
|
||||
# ontem expira na primeira hora de hoje), longe do backup (02:30), do resumo
|
||||
# (04:30), da retencao (04:40) e das tarefas do financeiro (:15 e :30).
|
||||
schedule: "20 0 * * *"
|
||||
timeZone: America/Sao_Paulo
|
||||
concurrencyPolicy: Forbid
|
||||
successfulJobsHistoryLimit: 3
|
||||
failedJobsHistoryLimit: 5
|
||||
jobTemplate:
|
||||
spec:
|
||||
activeDeadlineSeconds: 900
|
||||
backoffLimit: 1
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
containers:
|
||||
- name: disparar
|
||||
image: docker.io/curlimages/curl:8.9.1
|
||||
imagePullPolicy: Never
|
||||
command: ["/bin/sh", "/script/disparar.sh"]
|
||||
env:
|
||||
- name: KEYCLOAK_URL
|
||||
value: http://keycloak.plataforma-prod.svc:8080/realms/athleticmap-4/protocol/openid-connect/token
|
||||
- name: ISSUER_HOST
|
||||
value: auth.athleticmap.com
|
||||
- name: ALVO
|
||||
value: http://runtime-core/api/cadastro/rotinas/logins
|
||||
- name: CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: operacao-credentials
|
||||
key: client-secret
|
||||
resources:
|
||||
requests: { cpu: 10m, memory: 32Mi }
|
||||
limits: { cpu: 200m, memory: 64Mi }
|
||||
volumeMounts:
|
||||
- name: script
|
||||
mountPath: /script
|
||||
volumes:
|
||||
- name: script
|
||||
configMap:
|
||||
name: financeiro-cron
|
||||
defaultMode: 0555
|
||||
@@ -0,0 +1,84 @@
|
||||
# =============================================================================
|
||||
# 07/10/2026 — a rotina DIARIA dos logins do app (cadastro, no runtime-core):
|
||||
#
|
||||
# 1. acompanhante ATIVO com a janela de acesso vencida (acesso_fim ANTES de
|
||||
# hoje, no fuso de Sao Paulo) vira EXPIRADO e perde o login do app dos pais
|
||||
# — o mesmo caminho de quem e marcado EXPIRADO na tela. O que ficou fora de
|
||||
# ATIVO com o login ainda nao desativado (Keycloak fora na hora) e tentado
|
||||
# de novo;
|
||||
# 2. funcionario que JA esta AFASTADO/DESLIGADO com login habilitado (gravado
|
||||
# antes da regra de 07/10, ou ligado a um login depois de afastado) tem os
|
||||
# logins desabilitados, com os ids guardados em
|
||||
# funcionario.logins_desabilitados_pela_situacao (voltar a ATIVO reabilita
|
||||
# so esses). Login com atm_admin fica habilitado — so um WARN no log.
|
||||
#
|
||||
# AGUARDANDO GRAVACAO no molde e nos 4 tenants antigos. Nada aqui foi aplicado.
|
||||
#
|
||||
# Por que CronJob, e nao @Scheduled: o mesmo motivo do financeiro e da retencao
|
||||
# — com mais de uma replica do runtime-core, um agendador no processo rodaria
|
||||
# duas vezes. A rotina e idempotente (a segunda rodada nao faz nada), mas uma so
|
||||
# e o desenho certo. Pela mesma razao NAO roda na subida do pod: para rodar logo
|
||||
# depois do deploy, `kubectl -n <tenant>-prod create job --from=cronjob/cadastro-logins cadastro-logins-agora`.
|
||||
#
|
||||
# DEPENDE do ConfigMap `financeiro-cron` (55-cronjobs-financeiro.yaml): o mesmo
|
||||
# `disparar.sh`, o mesmo client `operacao` e o mesmo Secret
|
||||
# `operacao-credentials`. O runtime-core so aceita a rota com token do client
|
||||
# `operacao` (SegurancaDoRuntime) — nenhum usuario humano, nem admin.
|
||||
#
|
||||
# Keycloak fora NAO falha o Job: o endpoint responde 200 com `falhas` > 0 no
|
||||
# corpo (e log ERROR no runtime-core), e a rodada seguinte tenta de novo. O Job
|
||||
# so falha se o runtime-core nao responder 2xx (rota inexistente = imagem
|
||||
# antiga, 401/403 = client errado, 5xx).
|
||||
#
|
||||
# ANTES DE APLICAR: o runtime-core do tenant tem de estar numa imagem com o
|
||||
# endpoint POST /api/cadastro/rotinas/logins (senao 404 e o Job falha todo dia).
|
||||
# =============================================================================
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: cadastro-logins
|
||||
namespace: piloto-prod
|
||||
spec:
|
||||
# 00:20 em Sao Paulo: logo depois da virada do dia (a janela que terminou
|
||||
# ontem expira na primeira hora de hoje), longe do backup (02:30), do resumo
|
||||
# (04:30), da retencao (04:40) e das tarefas do financeiro (:15 e :30).
|
||||
schedule: "20 0 * * *"
|
||||
timeZone: America/Sao_Paulo
|
||||
concurrencyPolicy: Forbid
|
||||
successfulJobsHistoryLimit: 3
|
||||
failedJobsHistoryLimit: 5
|
||||
jobTemplate:
|
||||
spec:
|
||||
activeDeadlineSeconds: 900
|
||||
backoffLimit: 1
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
containers:
|
||||
- name: disparar
|
||||
image: docker.io/curlimages/curl:8.9.1
|
||||
imagePullPolicy: Never
|
||||
command: ["/bin/sh", "/script/disparar.sh"]
|
||||
env:
|
||||
- name: KEYCLOAK_URL
|
||||
value: http://keycloak.plataforma-prod.svc:8080/realms/athleticmap-1/protocol/openid-connect/token
|
||||
- name: ISSUER_HOST
|
||||
value: auth.athleticmap.com
|
||||
- name: ALVO
|
||||
value: http://runtime-core/api/cadastro/rotinas/logins
|
||||
- name: CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: operacao-credentials
|
||||
key: client-secret
|
||||
resources:
|
||||
requests: { cpu: 10m, memory: 32Mi }
|
||||
limits: { cpu: 200m, memory: 64Mi }
|
||||
volumeMounts:
|
||||
- name: script
|
||||
mountPath: /script
|
||||
volumes:
|
||||
- name: script
|
||||
configMap:
|
||||
name: financeiro-cron
|
||||
defaultMode: 0555
|
||||
Reference in New Issue
Block a user