2.4 KiB
2.4 KiB
InterferenceETL project context
2026-07-31: Initial hourly interference pipeline
- This repository is developed as the
InterferenceETLsubmodule under Metrix and is intended to run later in Metrix Script Management on an hourly schedule. main.pyreads the configured Metrix SFTP storage through Metrix API Token authentication or a local directory for tests. It selects the newest hour containing all seven known interference source types and falls back from a newer incomplete hour.- Each selected ZIP must contain exactly one XLSX. The script strictly validates the known
Sheet0header, writes one full UTF-8-BOM CSV per source type, and writes one merged CSV containinghour_start,hour_end,source_type,cgi,cell_name,interference_dbm, andsource_path. - LTE/SDR CGI currently uses
460-00-{node}-{cell}; NR usesmasterOperatorIdunchanged. This is an explicit assumption pending user confirmation. - Runs are idempotent at the output-window directory level. Generation happens in a scoped temporary directory, then replaces only the same window below the configured output root. Source storage is never modified.
- Database persistence is intentionally not implemented because the target schema and credentials are pending.
manifest.jsonrecords input paths, sizes, SHA-256 hashes, row counts, warnings, and generated files for later ingestion auditing. - The Metrix script container needs
openpyxl==3.1.5, bridge networking,python main.py, a reachableMETRIX_API_BASE_URL, andMETRIX_API_TOKENinjected through project environment settings. Secrets must not be committed. - Read-only validation against the current Metrix storage selected window
2026073110001100, processed all seven source ZIP files, and produced 1,831 summary rows. Per-source row counts were7 / 804 / 45 / 86 / 700 / 164 / 25inEXPECTED_TYPESorder; sampled CGI, cell name, and interference values matched the source workbooks. - The Linux/amd64 runtime image is
interference-etl-runtime:1.0. Its offline archive is generated locally atdist/interference-etl-runtime-1.0.tar(46,828,032 bytes, SHA-256B65B94941BB304CA955224B885582E36BE05E390CBD76FC4C069494352E77746) and remains excluded from Git. - Mock tests pass on Windows Python and inside the runtime image. They cover complete-hour fallback, strict schema rejection, summary extraction, and cross-midnight window parsing.