Two new multi-source rules using data we already collect, both wired into the existing hourly RecommendationsRunWorker. SectorOverload — fires when a Preseem-monitored AP has <25% free airtime AND active subscribers. Critical urgency when free airtime drops below 15%, OR when free airtime <25% AND QoE <50. Reuses the airtime/subscriber/QoE data already pulled by PreseemSyncWorker so no new collection is needed. UI: orange evidence card with free airtime, subscriber count, QoE score, and AP model. CpeRealign — fires when a wireless client has BOTH signal_strength <=-78 dBm AND SNR <=18 dB seen in the last 2 hours. This is the classic alignment / obstruction signature, distinct from the existing single-metric wireless_signal_weak / wireless_snr_low alerts produced by WirelessInsightWorker. One insight per (AP, CPE) pair via a metadata.dedup_key. Critical when signal <=-88 OR SNR <=10. UI: rose evidence card with signal, SNR, TX/RX rate, distance, hostname. Insights.insert_insight_if_new/1 dedup logic now prefers a metadata.dedup_key over device_id when explicitly set, allowing per-CPE insights without collapsing multiple CPEs on the same AP into a single insight. Existing rules without dedup_key are unaffected. Insight.@valid_types extended with sector_overload and cpe_realign. LLM enrichment automatically applies to both new types via the existing Phase 1 worker — no extra wiring. Also adds k8s/secrets.yaml to .gitignore so operators can drop a local Secret manifest with real values, kubectl apply manually, and never accidentally commit it. Documented in k8s/README.md.
111 lines
2.2 KiB
Text
111 lines
2.2 KiB
Text
# Development worktrees
|
|
.worktrees/
|
|
|
|
# Nix development environment state
|
|
.nix-mix/
|
|
.nix-hex/
|
|
.nix-postgres/
|
|
.nix-redis/
|
|
.nix-services-started
|
|
|
|
# The directory Mix will write compiled artifacts to.
|
|
/_build/
|
|
|
|
# If you run "mix test --cover", coverage assets end up here.
|
|
/cover/
|
|
|
|
# The directory Mix downloads your dependencies sources to.
|
|
/deps/
|
|
|
|
# Development log files
|
|
/log/dev.log*
|
|
|
|
# Vendored package dependencies and build artifacts
|
|
vendor/*/deps/
|
|
vendor/*/_build/
|
|
|
|
# Where 3rd-party dependencies like ExDoc output generated docs.
|
|
/doc/
|
|
|
|
# Ignore .fetch files in case you like to edit your project deps locally.
|
|
/.fetch
|
|
|
|
# If the VM crashes, it generates a dump, let's ignore it too.
|
|
erl_crash.dump
|
|
|
|
# Also ignore archive artifacts (built via "mix archive.build").
|
|
*.ez
|
|
|
|
# Temporary files, for example, from tests.
|
|
/tmp/
|
|
|
|
# Ignore package tarball (built via "mix hex.build").
|
|
towerops-*.tar
|
|
|
|
# Ignore assets that are produced by build tools.
|
|
/priv/static/assets/
|
|
|
|
# Ignore digested assets cache.
|
|
/priv/static/cache_manifest.json
|
|
|
|
# In case you use Node.js/npm, you want to ignore these.
|
|
npm-debug.log
|
|
/assets/node_modules/
|
|
|
|
# macOS system files
|
|
.DS_Store
|
|
|
|
# Dialyzer PLT files
|
|
/priv/plts/
|
|
|
|
# Environment variables (used by direnv and Kustomize secretGenerator)
|
|
.envrc
|
|
k8s/.envrc
|
|
|
|
/towerops-agent/
|
|
|
|
# TODO tracking (personal notes, not for version control)
|
|
TODO.md
|
|
|
|
# SNMP profiles export (temporary/local data)
|
|
profiles.json
|
|
|
|
# Elixir language server and tooling
|
|
.elixir-tools/
|
|
.expert/
|
|
|
|
# MIB files directories (keep directory structure in git, ignore contents)
|
|
/mibs/*
|
|
!/mibs/.gitkeep
|
|
|
|
# Application MIB files (now committed to git and included in Docker image)
|
|
# Only ignore the top-level librenms mibs directory (symlink)
|
|
|
|
# Compiled NIF binaries (platform-specific, should be built in Docker)
|
|
/priv/*.so
|
|
/priv/*.dylib
|
|
/c_src/*.o
|
|
/.expert/
|
|
|
|
|
|
# Gas Town (added by gt)
|
|
.runtime/
|
|
.claude/
|
|
.beads/
|
|
.agents/
|
|
.logs/
|
|
.direnv/
|
|
|
|
# Stride API credentials (contains secrets - never commit)
|
|
.stride_auth.md
|
|
|
|
# Local k8s secret manifest — copy from any *.example.yaml in k8s/, fill in
|
|
# real values, then `kubectl apply -f k8s/secrets.yaml`. Never commit.
|
|
k8s/secrets.yaml
|
|
|
|
|
|
# Build artifacts
|
|
/build/
|
|
|
|
# Generated by nix, machine-specific paths
|
|
.pre-commit-config.yaml
|