fix(ucepsa): pin Shop Floor sync context mapping

This commit is contained in:
Victor Fraile Garcia 2026-07-19 10:18:43 +02:00
parent 73544c0a85
commit 7f9a88d81a
3 changed files with 62 additions and 36 deletions

View File

@ -2,12 +2,31 @@
set -euo pipefail
ACTION="${1:-status}"
ROOT="${SHOPFLOOR_RUNTIME_ROOT:-/srv/mesavault/edge-oee-ucepsa}"
CONTAINER="${SHOPFLOOR_SYNC_CONTAINER:-mv_ucepsa_odoo_shopfloor_session_sync}"
CONTAINER="${
SHOPFLOOR_SYNC_CONTAINER:-
mv_ucepsa_odoo_shopfloor_session_sync
}"
NETWORK="${SHOPFLOOR_DOCKER_NETWORK:-mv_ucepsa_net}"
INTERVAL="${SHOPFLOOR_SYNC_INTERVAL_S:-15}"
LOOKBACK="${SHOPFLOOR_SYNC_LOOKBACK_HOURS:-168}"
OUTPUT="${SHOPFLOOR_SYNC_OUTPUT:-/tmp/ucepsa_odoo_shopfloor_session_sync.jsonl}"
TENANT="${SHOPFLOOR_TENANT:-ucepsa}"
SITE="${SHOPFLOOR_SITE:-ucepsa_onpremise}"
MACHINE_MAP_JSON="${
SHOPFLOOR_MACHINE_MAP_JSON:-
{"52":"CORT-00","53":"CORT-01","54":"CORT-02"}
}"
OUTPUT="${
SHOPFLOOR_SYNC_OUTPUT:-
/tmp/ucepsa_odoo_shopfloor_session_sync.jsonl
}"
cd "$ROOT"
@ -17,30 +36,40 @@ image() {
--format '{{.Config.Image}}'
}
docker_common_args=(
--network "$NETWORK"
--env-file .env
-e ODOO_DB_OVERRIDE=ucepsa_prod
-e TENANT_OVERRIDE="$TENANT"
-e SITE_OVERRIDE="$SITE"
-e SHOPFLOOR_MACHINE_MAP_JSON="$MACHINE_MAP_JSON"
-v "$ROOT:/app:ro"
-w /app
--entrypoint python
)
start_sync() {
local sync_image
sync_image="$(image)"
docker rm -f "$CONTAINER" >/dev/null 2>&1 || true
docker rm -f "$CONTAINER" \
>/dev/null 2>&1 || true
docker run -d \
--name "$CONTAINER" \
--restart unless-stopped \
--network "$NETWORK" \
--env-file .env \
-e ODOO_DB_OVERRIDE=ucepsa_prod \
-v "$ROOT:/app:ro" \
"${docker_common_args[@]}" \
-v /tmp:/probe-output \
-w /app \
--entrypoint python \
"$sync_image" \
tools/odoo_shopfloor_session_sync.py \
--watch \
--interval "$INTERVAL" \
--lookback-hours "$LOOKBACK" \
--output "/probe-output/$(basename "$OUTPUT")"
--output \
"/probe-output/$(basename "$OUTPUT")"
docker ps --format 'table {{.Names}}\t{{.Status}}' \
docker ps \
--format 'table {{.Names}}\t{{.Status}}' \
| grep -E "$CONTAINER|NAMES"
}
@ -49,12 +78,7 @@ one_shot() {
sync_image="$(image)"
docker run --rm -i \
--network "$NETWORK" \
--env-file .env \
-e ODOO_DB_OVERRIDE=ucepsa_prod \
-v "$ROOT:/app:ro" \
-w /app \
--entrypoint python \
"${docker_common_args[@]}" \
"$sync_image" \
tools/odoo_shopfloor_session_sync.py \
--once \
@ -66,12 +90,7 @@ dry_run_known() {
sync_image="$(image)"
docker run --rm -i \
--network "$NETWORK" \
--env-file .env \
-e ODOO_DB_OVERRIDE=ucepsa_prod \
-v "$ROOT:/app:ro" \
-w /app \
--entrypoint python \
"${docker_common_args[@]}" \
"$sync_image" \
tools/odoo_shopfloor_session_sync.py \
--once \
@ -85,12 +104,7 @@ backfill_known() {
sync_image="$(image)"
docker run --rm -i \
--network "$NETWORK" \
--env-file .env \
-e ODOO_DB_OVERRIDE=ucepsa_prod \
-v "$ROOT:/app:ro" \
-w /app \
--entrypoint python \
"${docker_common_args[@]}" \
"$sync_image" \
tools/odoo_shopfloor_session_sync.py \
--once \
@ -102,31 +116,43 @@ case "$ACTION" in
start)
start_sync
;;
stop)
docker stop "$CONTAINER"
;;
restart)
docker rm -f "$CONTAINER" >/dev/null 2>&1 || true
docker rm -f "$CONTAINER" \
>/dev/null 2>&1 || true
start_sync
;;
status)
docker ps -a --format 'table {{.Names}}\t{{.Status}}' \
docker ps -a \
--format 'table {{.Names}}\t{{.Status}}' \
| grep -E "$CONTAINER|NAMES"
;;
logs)
docker logs --tail 200 -f "$CONTAINER"
;;
once)
one_shot
;;
dry-run-known)
dry_run_known
;;
backfill-known)
backfill_known
;;
*)
echo "Uso: $0 {start|stop|restart|status|logs|once|dry-run-known|backfill-known}" >&2
echo \
"Uso: $0 {start|stop|restart|status|logs|once|dry-run-known|backfill-known}" \
>&2
exit 2
;;
esac

View File

@ -44,11 +44,11 @@ def connect_pg():
def tenant_site() -> tuple[str, str]:
return (
env_first("TENANT", "TENANT_OVERRIDE", default="ucepsa")
env_first("TENANT_OVERRIDE", "TENANT", default="ucepsa")
or "ucepsa",
env_first(
"SITE",
"SITE_OVERRIDE",
"SITE",
default="ucepsa_onpremise",
)
or "ucepsa_onpremise",

View File

@ -162,11 +162,11 @@ def load_config() -> Config:
)
return Config(
tenant=env_first("TENANT", "TENANT_OVERRIDE", default="ucepsa")
tenant=env_first("TENANT_OVERRIDE", "TENANT", default="ucepsa")
or "ucepsa",
site=env_first(
"SITE",
"SITE_OVERRIDE",
"SITE",
default="ucepsa_onpremise",
)
or "ucepsa_onpremise",