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>
61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
# 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.
|