설명 없음

Luis Rosales 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전
cmd 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전
deploy 75554256e1 M4(2/3): M4 verification doc + smoke log + smoke script + EMQX env-var refactor + ACL deploy README 2 달 전
internal 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전
loadgen 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전
migrations 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전
scripts 75554256e1 M4(2/3): M4 verification doc + smoke log + smoke script + EMQX env-var refactor + ACL deploy README 2 달 전
testfakes fed63e411f M3(1/3): telegram tables + seed_m3 + per-channel binary split + compose/Dockerfile 2 달 전
.env.example bc907d9409 M4(1/3): MQTT subscriber in ingestd + loadgen-mqtt + EMQX per-source ACL 2 달 전
.gitignore 264d284a4b M1(1-2/8): migrations + seed + cmd/seed runner 2 달 전
ARCHITECTURE.md 8ca86628a1 feat(spec): add gRPC bidi-streaming as fourth ingest protocol (M11) 2 달 전
Dockerfile bc907d9409 M4(1/3): MQTT subscriber in ingestd + loadgen-mqtt + EMQX per-source ACL 2 달 전
M0_VERIFICATION.md d76aa0b08d chore: shift app HTTP ports 8080-8083 to 8800-8803 (project rule) 2 달 전
M1_SMOKE_LOG.md af90a2cb4d M1(verified): live smoke test all 9 steps green + 6 compose/Dockerfile fixes 2 달 전
M1_VERIFICATION.md d5a211622a M1(8/8): M1 verification doc + SPEC update + PROMPT log 2 달 전
M2_SMOKE_LOG.md 280e0489de M2(3/3): verification doc + smoke log + smoke script + README/SPEC bump 2 달 전
M2_VERIFICATION.md 280e0489de M2(3/3): verification doc + smoke log + smoke script + README/SPEC bump 2 달 전
M3_SMOKE_LOG.md 692798a1a5 M3(3/3): M3 verification doc + smoke log + smoke script + README/PROMPT/SPEC bump 2 달 전
M3_VERIFICATION.md 692798a1a5 M3(3/3): M3 verification doc + smoke log + smoke script + README/PROMPT/SPEC bump 2 달 전
M4_SMOKE_LOG.md 75554256e1 M4(2/3): M4 verification doc + smoke log + smoke script + EMQX env-var refactor + ACL deploy README 2 달 전
M4_VERIFICATION.md 75554256e1 M4(2/3): M4 verification doc + smoke log + smoke script + EMQX env-var refactor + ACL deploy README 2 달 전
PROMPT.md 5f0b6c0bef M4(3/3): README + PROMPT + SPEC bump to 'shipped 2026-06-14' 2 달 전
README.md 5f0b6c0bef M4(3/3): README + PROMPT + SPEC bump to 'shipped 2026-06-14' 2 달 전
SPEC.md 5f0b6c0bef M4(3/3): README + PROMPT + SPEC bump to 'shipped 2026-06-14' 2 달 전
docker-compose.yml 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전
go.mod 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전
go.sum 64169e99ad M5(1/3): WebSocket ingest + live tail + per-IP concurrency cap (SPEC §22 layer 2) 1 개월 전

README.md

broad-announce

Multi-tenant notification router. Receives alerts from many source systems (HTTP/JSON webhooks, WebSockets, MQTT, gRPC bidi-streaming), normalizes them, resolves recipients via companiesgroupsindividuals + subscriptions, and delivers to FCM (Android), Telegram, SMS, email, voice, Slack, MS Teams, and arbitrary outbound webhooks.

Status: M0 + M1 + M2 + M3 + M4 shipped 2026-06-14. M0 is the single-host docker-compose stack + 4 Go services + loadgen-http

  • alert schema. M1 is the end-to-end: signed webhook → broker → router → deliverd-fcm → fakefcmd (live-verified, 1530 deliveries in the loadgen burst, 0 failures). M2 is the recipient-resolution rules engine (source.allowed_targets + routing_rules + subscriptions with min_severity, quiet hours, inminent_colapse bypass; hard-fail on zero recipients). M3 is Telegram delivery + bot commands (deliverd split into per-channel binaries, telegramd long-polling bot with /start /subscribe /unsubscribe /preferences /status /mute /unmute, faketgmd fake Bot API, 14 deliveries in 8 sendMessage calls, 0 failures). M4 is MQTT ingest (EMQX 5.10.4 broker with per-source ACL on ba/<co>/<src>/incoming, ingestd's MQTT subscriber reuses the same ProcessAlert pipeline as HTTP, loadgen-mqtt publisher, 12 deliveries in 5-step smoke with 0 failures). See M0_VERIFICATION.md, M1_VERIFICATION.md, M2_VERIFICATION.md, M3_VERIFICATION.md, M4_VERIFICATION.md, M1_SMOKE_LOG.md, M2_SMOKE_LOG.md, M3_SMOKE_LOG.md, and M4_SMOKE_LOG.md for the smoke tests. Spec is in SPEC.md, diagrams in ARCHITECTURE.md, build log in PROMPT.md.

v1 in one paragraph

Six Go services (ingestd, routerd, deliverd-fcm, deliverd-telegram, telegramd, admind) wired together by NATS JetStream. Postgres + Timescale for live data, ClickHouse for archive, Redis for dedupe + rate limits, EMQX for MQTT. Strict app-level multi-tenant isolation. ~5k alerts/sec on Docker Compose, 50k/sec design ceiling for v2 K8s.

Repo layout

SPEC.md             — requirements, entities, severity, retention
ARCHITECTURE.md     — diagrams, sequences, SLOs, capacity model
PROMPT.md           — build log, decisions, open questions
M0_VERIFICATION.md  — M0 smoke test (signed webhook → 202)
M1_VERIFICATION.md  — M1 smoke test (end-to-end → fakefcmd)
M2_VERIFICATION.md  — M2 smoke test (recipient resolution)
M3_VERIFICATION.md  — M3 smoke test (Telegram delivery + bot)
M4_VERIFICATION.md  — M4 smoke test (MQTT ingest + EMQX ACL)
M1_SMOKE_LOG.md     — M1 live run results
M2_SMOKE_LOG.md     — M2 live run results
M3_SMOKE_LOG.md     — M3 live run results
M4_SMOKE_LOG.md     — M4 live run results
docker-compose.yml  — single-host M0–M3 stack
Dockerfile          — multi-stage build for all 7 binaries
.env.example        — every BA_* knob documented
cmd/ingestd/        — HTTP POST handler (M0) + MQTT subscriber (M4); M5 = WS, M11 = TLS
cmd/routerd/        — M2 rules engine + M3 channel union
cmd/deliverd-fcm/   — M1 FCM HTTP v1 delivery (renamed from deliverd M3)
cmd/deliverd-telegram/ — M3 Telegram Bot API delivery
cmd/telegramd/      — M3 long-polling bot loop + command handler
cmd/admind/         — scaffold + /v1/ping (M8)
loadgen/cmd/http/   — HTTP traffic generator (M0)
loadgen/cmd/mqtt/   — MQTT traffic generator (M4)
internal/alert/     — Alert v1 type + Validate() + Severity.Rank
internal/broker/    — NATS JetStream wrapper
internal/config/    — env-driven config
internal/dedupe/    — 60s SET NX EX + INCR
internal/ratelimit/ — per-second INCR bucket
internal/httpserver/ — /health + /metrics scaffold
internal/observability/ — slog + Prometheus
internal/postgres/  — pgxpool wrapper
internal/routing/   — Resolver (M2 rules engine, M3 channel union)
internal/telegram/  — BotClient + command parser + handler
internal/store/     — Redis + (later) Postgres
deploy/prometheus/  — prometheus.yml
migrations/         — 001–004 + seed/seed_m2/seed_m3.sql
testfakes/          — fakefcmd (M1), faketgmd (M3)

License

Private. © 2026 Techno-World.