diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index e0691aa..4044db5 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,5 +1,5 @@ # Admin Task Board -_Updated: 2026-08-20 — 🟡 **[sched-pipelines-local-stack]** ym-фиксы приняты (email go2 JSON + дефолты sched-task, 93/93, воркер пересобран ✓). Ждём: ozon-фиксы (7 пунктов), ратификацию vitya по envelope-fallback (sched), sender-domain go2. Следующий ран: завтра 02:00 ozon / 02:30 yandex (DRY-RUN)._ +_Updated: 2026-08-20 — 🟡 **[sched-pipelines-local-stack]** ozon-фиксы приняты (7/7, d198710 + b3046d3 вложенная email-форма), стенд пересобран на их Dockerfile, envelope проверен живьём (hash-стадия → правильный envelope-failed). ym: пересборка ждёт вложенную форму notify (коррекция 17:40Z). Осталось: tracking-домен trk.snolla.com (NS лежали под trk.snolla.com.snolla.com — жду ре-добавления с именем trk), потом 229 уходит и email оживает._ ## 🟡 [sched-pipelines-local-stack] — локальный стенд: sched daemon + ym/ozon воркеры + browser/ntfy/alert-bridge, потом VDS **Status:** active diff --git a/host-stacks/local/sched-pipelines/bridge/index.cjs b/host-stacks/local/sched-pipelines/bridge/index.cjs index 18601f3..a6d7cb6 100644 --- a/host-stacks/local/sched-pipelines/bridge/index.cjs +++ b/host-stacks/local/sched-pipelines/bridge/index.cjs @@ -79,11 +79,14 @@ async function sendEmail(m) { headers: { 'content-type': 'application/json' }, body: JSON.stringify({ api_key: UNISENDER_API_KEY, - email: EMAIL_TO, - sender_name: 'sched-pipeline', - sender_email: UNISENDER_FROM, - subject: m.title, - body: m.body, + message: { + template_engine: 'velocity', + body: { text: m.body }, + subject: m.title, + from_email: UNISENDER_FROM, + from_name: 'sched-pipeline', + recipients: [{ email: EMAIL_TO }], + }, }), }); const text = await res.text(); diff --git a/host-stacks/local/sched-pipelines/docker-compose.yml b/host-stacks/local/sched-pipelines/docker-compose.yml index 928f8b2..04a984f 100644 --- a/host-stacks/local/sched-pipelines/docker-compose.yml +++ b/host-stacks/local/sched-pipelines/docker-compose.yml @@ -68,9 +68,7 @@ services: ozon-seller-builder: build: context: ../../../../ozon-seller-api-client - dockerfile: C:/Users/vitya/projects/.admin/host-stacks/local/sched-pipelines/ozon.Dockerfile - args: - VERDACCIO_TOKEN: ${VERDACCIO_TOKEN:-} + dockerfile: service/Dockerfile image: sched-pipelines/ozon-seller-builder:local environment: WORKER_PORT: "8080" @@ -85,6 +83,8 @@ services: NTFY_URL: http://ntfy NTFY_TOPIC: ozon-seller-pipeline UNISENDER_API_KEY: ${UNISENDER_API_KEY:-} + UNISENDER_SENDER_EMAIL: ${UNISENDER_SENDER_EMAIL:-} + UNISENDER_SENDER_NAME: ${UNISENDER_SENDER_NAME:-} NOTIFY_EMAIL_TO: ${NOTIFY_EMAIL_TO:-} GH_TOKEN: ${GITHUB_TOKEN:-} NPM_TOKEN: ${NPM_TOKEN:-} diff --git a/host-stacks/local/sched-pipelines/ozon.Dockerfile b/host-stacks/local/sched-pipelines/ozon.Dockerfile deleted file mode 100644 index ae475a7..0000000 --- a/host-stacks/local/sched-pipelines/ozon.Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -# Локальная копия service/Dockerfile из ozon-seller-api-client с фиксом: -# `COPY state.json ./state.json 2>/dev/null || true` — шелл-синтаксис в COPY не валиден, -# docker падает «"/2>/dev/null": not found». state.json в контексте есть, копируем напрямую. -FROM node:22-alpine - -RUN apk add --no-cache openjdk21-jre-headless git - -WORKDIR /app - -COPY package.json package-lock.json ./ -# lock пинит yaml на verdaccio (локальный .npmrc хоста имеет токен, контейнер — нет) -ARG VERDACCIO_TOKEN -RUN npm config set //verdaccio.kzntsv.site/:_authToken=${VERDACCIO_TOKEN} \ - && npm ci --no-audit --no-fund || npm install --no-audit --no-fund - -COPY service/ ./service/ -COPY generator/ ./generator/ -COPY test/ ./test/ -COPY LICENSE ./ -COPY state.json ./state.json - -ENV NODE_ENV=production -ENV WORKER_PORT=8080 -ENV WORKER_TOKEN= - -# крон-расписание (формат node-cron): в стеке переопределяется на «никогда» — -# расписанием рулит sched daemon -ENV CRON_SCHEDULE="0 0 31 2 *" - -EXPOSE 8080 - -CMD ["node", "service/entrypoint.js"]