RESO import — post-incident verification (register check)
Purpose: Prove the W3 RESO Excel import path is really working after an
incident, by confirming new successful import runs appear in the import
register (tasklogs) after the incident-solve timestamp. HTTP 200 on the
endpoint is not sufficient — it does not prove parse → Mongo write → S3 store.
Schema pinned 2026-07-13 (discovery on bms-1). The register is
tasklogs. A successful import isactivityName = "Import poprawny"withstatus = "completed"— the phraseimport udanydoes not exist in W3. Imported data rows themselves land inregRecords(7.5M docs).
Use after: any W3/RESO import incident (e.g. #4078, solved 2026-07-13 09:58 UTC
via PR #4086). Related: v32-reso-socket-stale-image-redis-v5-crashloop.md,
pinbox24-w3-operations.md.
Inputs
SOLVE_TS— incident-solve time in UTC (e.g.2026-07-13T09:58:00Z).- Service:
v32-prod-resoon bms-1 (94.23.26.113). SSH:root@94.23.26.113(if default key fails, use~/.ssh/vps_root_key). - Endpoint:
https://w3.reso-integration-addrecords.pinbox24.com(expect 200). - DB:
w3_dbviaV32_PMONGODB_URL, read from/opt/p24-infra/bms-1/pinbox24-w3.env. Never print the URI. mongoshruns on the host (the reso container has no mongo client).
Pinned schema (tasklogs)
| Field | Meaning |
|---|---|
activityName | "Import poprawny" = success; also "Import cofnięty" (reverted), "Importuj dane / import data", "Koniec importu / import end" |
status | completed / error / not-started |
createdAt / updatedAt | ISODate — use for time comparison |
registredDataTime | string "YYYY-MM-DD HH:mm:ss" (local, not for $gt) |
No S3 key is stored on the register — S3 write is handled by the
s3-v32-prod-reso sidecar (see Step 4).
Step 1 — connectivity sanity (fast)
# PLAYBOOK: reso-import-post-incident-verify.md
ssh root@94.23.26.113 "docker ps --filter name=v32-prod-reso --format '{{.Names}} {{.Status}}'"
curl -s -o /dev/null -w '%{http_code}\n' https://w3.reso-integration-addrecords.pinbox24.comContainer online, 0 restarts, endpoint 200 → proceed. Else stop, this is a fresh outage.
Step 2 — schema re-confirm (skip if unchanged — already pinned above)
Only needed if the W3 schema may have changed. Read V32_PMONGODB_URL
silently into $URI (grep, never echo); mongosh runs on the host:
# PLAYBOOK: reso-import-post-incident-verify.md
URI=$(grep '^V32_PMONGODB_URL=' /opt/p24-infra/bms-1/pinbox24-w3.env | cut -d= -f2-)
mongosh "$URI" --quiet --eval \
'printjson(Object.keys(db.tasklogs.find().sort({_id:-1}).limit(1).toArray()[0]));
printjson(db.tasklogs.distinct("status"));'
unset URIStep 3 — the check (new successful imports after solve)
# PLAYBOOK: reso-import-post-incident-verify.md
URI=$(grep '^V32_PMONGODB_URL=' /opt/p24-infra/bms-1/pinbox24-w3.env | cut -d= -f2-)
mongosh "$URI" --quiet --eval '
const SOLVE = ISODate("2026-07-13T09:58:00Z"); // <-- SOLVE_TS
const q = { activityName: "Import poprawny", status: "completed",
createdAt: { $gt: SOLVE } };
print("count=" + db.tasklogs.countDocuments(q));
db.tasklogs.find(q, {activityName:1, status:1, createdAt:1, registredDataTime:1})
.sort({createdAt:-1}).limit(10).forEach(d=>printjson(d));
'
unset URIPASS: count >= 1 — at least one Import poprawny / completed run with
createdAt > SOLVE_TS. Definitive proof the import path (parse → Mongo write)
works post-fix.
FAIL / count=0: no successful import since the fix — path is NOT confirmed.
Ask RESO to run one real upload, then re-run Step 3.
Cross-check:
regRecordsshould also show new import docs (importUpload/excelImportRecord/importedRecordsCount) afterSOLVE_TS.
Step 4 — S3 leg (register stores no S3 key)
tasklogs/regRecords do not persist an S3 object key — the source file is
read transiently (fileObj.path/fileObj.bucket) and S3 storage is handled by
the s3-v32-prod-reso sidecar. To confirm the S3 leg, check that the sidecar is
Up and, if needed, list recent objects in Wasabi bucket s3-v32-prod-reso
with timestamp after SOLVE_TS.
Step 5 — report
- Green:
Nnewimport udanyrecords sinceSOLVE_TS, newest at<ts>→ incident fully verified, close the loop on the originating issue. - Red: 0 new successful imports → keep incident open, request a live upload test.
Schema pinned 2026-07-13 (bms-1 discovery). If a future run finds the field names changed, re-run Step 2 and update the pinned table above.