Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Hourly smoke watchdog + auto-fix loop + dashboard + multi-tenant guard + perf regression + cleanup job + README badge. 1. ~/quality-watchdog.sh (cron 5 * * * *) — 8 checks (~60s): /health/ready, signup→login→/api/me, GET products, Playwright UI smoke (3.1 product CRUD), /metrics format, /hubs/notifications negotiate with token, multi-tenant isolation, perf p95. 2. Auto-fix loop: 2× consecutive red → ~/.fm-watchdog/incident-*.txt + queue/0000-incident-* to bump it ahead of Server-Claude's sprint queue. fm-watchdog.sh sees prefix 0000- as next. 3. scripts/quality-dashboard.py — renders docs/quality-status.md (current emoji, 8-step table, perf baseline, 7-day history, 24-run sparkline) + injects README badge 🟢/🟡/🔴. 4. Multi-tenant smoke: signup 2 orgs `quality-{epoch}-A/B`, create product in A, verify B sees 404/403 + total=0. 5. Perf regression: p95 over 10 reqs for /api/me, products, sales/retail/stats. Baseline = median of last 10 samples (robust to noise). >50% from baseline → alert. First 5 runs always green (warm-up). 6. HousekeepingJobs.PruneQualityTestOrgsAsync (cron 30 2 * * * UTC): finds orgs `quality-%` older than 24h, dynamically scans information_schema for tables with OrganizationId, iteratively DELETEs with FK-violation retry (up to 10 passes), then cleans AspNetUser*/OpenIddict* by email pattern `quality-%@test-fm.local`, finally users + organizations. 7. README badge: <!-- quality-badge --> marker updated each run. Validated: stage deploy ✓, Hangfire job registered ✓, dry-run SQL on 24 stage candidates → 0 remaining ✓, 3 cron-triggered runs all 8/8 green (12:42/12:45/12:48 +05) ✓. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Quality status
Обновлено: 2026-06-08T07:48:24+00:00 · auto-gen из ~/quality-watchdog.sh
🟢 Текущий статус
Последний прогон: 2026-06-08T12:48:01+05:00
Зелёных шагов: 8/8
Красных шагов: 0
Шаги smoke-suite
| Шаг | Статус | Последнее изменение | Consecutive fail |
|---|---|---|---|
| /health/ready | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
| signup→login→/api/me | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
| GET /api/catalog/products | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
| Playwright UI (product CRUD) | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
| /metrics (Prometheus) | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
| /hubs/notifications/negotiate | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
| Multi-tenant isolation | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
| Performance p95 vs baseline | 🟢 | 2026-06-08T12:48:01+05:00 |
0 |
Performance baseline (p95, ms)
| Endpoint | p95 (ms) |
|---|---|
/api/catalog/products/page/1/pageSize/10 |
233 |
/api/me |
259 |
/api/sales/retail/stats/days/7 |
228 |
Регрессия = текущий p95 >50% от baseline. Baseline обновляется только когда регрессии нет (берёт min).
История за 7 дней
Прогонов: 14
С красным: 7
Green-ratio: 50%
Прогоны с красным шагом
| Время | Красные шаги |
|---|---|
2026-06-08T12:16:05+05:00 |
multi_tenant |
2026-06-08T12:16:52+05:00 |
multi_tenant |
2026-06-08T12:18:01+05:00 |
multi_tenant |
2026-06-08T12:18:35+05:00 |
multi_tenant |
2026-06-08T12:22:49+05:00 |
health, auth_me, products, metrics, signalr, multi_tenant, perf |
2026-06-08T12:23:00+05:00 |
health, auth_me, products, metrics, signalr, multi_tenant, perf |
2026-06-08T12:23:18+05:00 |
perf |
Последние 24 прогона
🔴🔴🔴🔴🟢🟢🔴🔴🔴🟢🟢🟢🟢🟢
Скрипт: ~/quality-watchdog.sh (cron 0 * * * *).
Источник: ~/.fm-watchdog/quality-history.jsonl.
Sprint 25 — autonomous continuous quality monitoring.