fix(1c): harden post-ingest manager brief refresh

This commit is contained in:
igor04091968
2026-05-22 16:34:53 +03:00
parent 5670ecd84b
commit 4f1b935bdc
6 changed files with 51 additions and 7 deletions
+30 -6
View File
@@ -4,6 +4,10 @@ set -euo pipefail
ROOT="${AW_1C_ROOT:-/opt/activitywatch/clickhouse-1c}"
ENV_FILE="${ROOT}/.env"
VENV="${ROOT}/.venv"
LOCK_FILE="${ROOT}/.manager-brief.lock"
RETRIES="${AW_1C_MANAGER_BRIEF_RETRIES:-3}"
RETRY_DELAY_SEC="${AW_1C_MANAGER_BRIEF_RETRY_DELAY_SEC:-20}"
LOCK_WAIT_SEC="${AW_1C_MANAGER_BRIEF_LOCK_WAIT_SEC:-1200}"
if [[ ! -f "${ENV_FILE}" ]]; then
echo "missing env file: ${ENV_FILE}" >&2
@@ -27,9 +31,29 @@ fi
export CLICKHOUSE_HOST="${CH_RUNTIME_HOST}"
exec "${VENV}/bin/python" "${ROOT}/ai/generate_manager_brief.py" \
--host "${CH_RUNTIME_HOST}" \
--port "${CLICKHOUSE_PORT}" \
--user "${CLICKHOUSE_USER}" \
--password "${CLICKHOUSE_PASSWORD}" \
--database "${CLICKHOUSE_DB}"
exec 9>"${LOCK_FILE}"
if ! flock -w "${LOCK_WAIT_SEC}" 9; then
echo "manager brief lock wait exceeded: ${LOCK_WAIT_SEC}s" >&2
exit 1
fi
attempt=1
while (( attempt <= RETRIES )); do
if "${VENV}/bin/python" "${ROOT}/ai/generate_manager_brief.py" \
--host "${CH_RUNTIME_HOST}" \
--port "${CLICKHOUSE_PORT}" \
--user "${CLICKHOUSE_USER}" \
--password "${CLICKHOUSE_PASSWORD}" \
--database "${CLICKHOUSE_DB}"; then
exit 0
fi
if (( attempt == RETRIES )); then
break
fi
echo "manager brief attempt ${attempt}/${RETRIES} failed, retrying in ${RETRY_DELAY_SEC}s" >&2
sleep "${RETRY_DELAY_SEC}"
attempt=$((attempt + 1))
done
echo "manager brief failed after ${RETRIES} attempts" >&2
exit 1