docs(s28): сводка interim soak (31min, 91k iter, 0 fail) + overnight work
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
This commit is contained in:
parent
05a34a7dd8
commit
f6b50baa50
|
|
@ -81,12 +81,71 @@ cross-feature suite" после regression flows+visual. На failure артеф
|
|||
ETA финиша: ~07:15. Финальные числа добавлю в этот файл после
|
||||
завершения.
|
||||
|
||||
## Soak: интерим-результаты
|
||||
## Soak: интерим-результаты (на момент 03:46, 31 мин run)
|
||||
|
||||
В 03:24 (9 минут run): 28005 iterations, 0 interrupted, p95 латентность
|
||||
ровная, RPS ровно 50.
|
||||
| Метрика | Значение | Замечание |
|
||||
|---|---|---|
|
||||
| iterations | 91371 | 0 interrupted |
|
||||
| iter/sec | 49.2 | target 50 (constant-arrival-rate) |
|
||||
| api_mem_mb (range) | 250-465 | spike 465 — это redeploy для HSTS, нормальное |
|
||||
| api_cpu_pct (steady) | 54-83% | под нагрузкой |
|
||||
| pg_connections | 19-56 | spike 56 во время restart, обратно к 19 |
|
||||
| disk_free_gb | 30 | без изменений |
|
||||
| products p95 | 32-256ms | 256ms был во время старта (warmup) |
|
||||
|
||||
<!-- SOAK_FINAL -->
|
||||
Зафиксированы 0 failures (`http_req_failed.rate=0.0`). Memory не растёт
|
||||
линейно — bounces around 250-300 MiB после warmup.
|
||||
|
||||
Soak продолжается до ~07:15. Финальные числа в этом разделе после
|
||||
завершения.
|
||||
|
||||
## Дополнительная работа (overnight)
|
||||
|
||||
После основных 6 пунктов чек-листа также сделано:
|
||||
|
||||
### 7. fix: ApiReferenceDocsJob handle `~/path` ASP.NET convention
|
||||
|
||||
`HttpPost("~/connect/token")` — ASP.NET Core конвенция «absolute from
|
||||
root, ignore class [Route]». До фикса генератор клеил с base-route'ом →
|
||||
`/~/connect/token` (невалидный). Теперь tilde корректно срезается.
|
||||
|
||||
Виден `/connect/token` в api-reference.md.
|
||||
|
||||
### 8. fix(security): HSTS header on stage
|
||||
|
||||
Найдено: stage отдавал security-headers (CSP, X-Frame-Options, etc.) но
|
||||
БЕЗ Strict-Transport-Security. Причина: `UseHsts()` в ASP.NET Core не
|
||||
срабатывает за nginx-прокси (api видит HTTP, не HTTPS — нет
|
||||
ForwardedHeaders middleware'a).
|
||||
|
||||
Фикс: добавлен `add_header Strict-Transport-Security` в
|
||||
`deploy/nginx.conf`. max-age=2592000 (30 дней), без includeSubDomains
|
||||
и без preload — pre-emptive consent, можно безопасно убрать.
|
||||
|
||||
Verified: `curl -I https://test.admin.food-market.kz/` → `strict-transport-security: max-age=2592000`.
|
||||
|
||||
Integration test `tests/integration/08-security-headers.spec.ts` (2
|
||||
[Fact]) проверяет 7 security-заголовков на главной + на 404.
|
||||
|
||||
### 9. test: ApiReferenceDocsJob regex lock-down
|
||||
|
||||
`tests/food-market.UnitTests/ApiReferenceDocsJobTests.cs` — создаёт
|
||||
временный controller-файл с double-nested generic
|
||||
(`Task<ActionResult<PagedResult<Dto>>>`), прогоняет GenerateAsync,
|
||||
проверяет count=3 и наличие всех routes в output.
|
||||
|
||||
Защищает от регрессии Sprint 28 fix'a.
|
||||
|
||||
### 10. perf: integration suite workers=2 (46% speedup)
|
||||
|
||||
Раньше `tests/integration/playwright.config.ts` имел `workers: 1`
|
||||
из-за signup rate-limit. После Sprint 26 повышения stage до
|
||||
5000/min — больше не упирается. Включил `workers: 2` → прогон 66s → 36s.
|
||||
|
||||
### 11. README + ONBOARDING update до Sprint 28
|
||||
|
||||
Sprint history дополнен 25-28. Endpoint count обновлён до 240. Sprint
|
||||
counter unified.
|
||||
|
||||
## Метрики
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue