|
Some checks failed
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
Docker Public / Build + push Public (push) Has been cancelled
Docker Public / Deploy Public on stage (push) Has been cancelled
1. TD-3 Mapster — Application/Mapping/MapsterConfig.cs с
TypeAdapterConfig для Product, Counterparty + collections.
ProductsController.List/Get/GetInternalAsync + CounterpartiesController.
List/Get переведены на .ProjectToType<TDto>(MapsterConfig.Config).
Inline Projection-Expression удалён.
2. SSO scaffold — Microsoft.AspNetCore.Authentication.Google + .MicrosoftAccount
пакеты, условная регистрация в Program.cs (только если ClientId задан).
ExternalAuthController с GET /api/auth/external/{provider} (Challenge или
503 если не настроено), /callback (501 с email — invite-flow TODO),
/providers (булевый список). docs/sso.md инструкция.
3. Stale-data cleanup — HousekeepingJobs расширен:
PruneOrgAuditLogAsync (>90д из Cleanup:OrgAuditLogDays),
PruneDraftsAsync (Supply/RetailSale/Demand старше 30д),
PruneRevokedRefreshTokensAsync (raw SQL DELETE из OpenIddictTokens).
3 новых cron'a в HangfireJobsConfigurator (03:00-03:20 UTC).
4. DB VACUUM automation — DatabaseMaintenanceJobs.VacuumTopTablesAsync:
pg_total_relation_size → топ-5 таблиц → VACUUM (ANALYZE) per table
с замером времени. Default cron еженедельно вс 04:00 UTC.
5. Disk usage monitoring — DiskMonitoringJob ежечасно: DriveInfo.AvailableFreeSpace
на пути из Monitoring:DiskPaths (default "/opt,/var/lib/docker").
<1GB → Telegram-alert на Monitoring:SuperAdminTelegramChatIds.
Anti-spam cooldown 6h. Gauge food_market_disk_free_bytes{mount}.
6. Performance regression detection — ~/nightly-perf-check.sh после
nightly-verify. Парсит /metrics, считает db_avg_ms, сравнивает с
baseline в ~/.fm-watchdog/perf-baseline.json. Δ>30% → Telegram alert
+ baseline НЕ обновляется (sliding window).
7. Public-site analytics placeholder — Astro BaseLayout рендерит
gtag/Yandex.Metrika только если задан PUBLIC_GA_ID / PUBLIC_YM_ID;
иначе <script data-id="REPLACE_ME" data-doc="docs/analytics.md">
маркер. docs/analytics.md с инструкцией подключения.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| sprint17-screenshots | ||
| 24x7.md | ||
| analytics.md | ||
| ARCHITECTURE.md | ||
| architecture.md | ||
| audit-2026-04-27.md | ||
| audit-2026-05-06.md | ||
| audit-moysklad.md | ||
| backup-restore.md | ||
| DEVELOPER-GUIDE.md | ||
| food-market-server-postgres-role.md | ||
| forgejo.md | ||
| logging.md | ||
| MULTI-TENANCY.md | ||
| observability.md | ||
| ofd-integration.md | ||
| openapi.md | ||
| openiddict-keys.md | ||
| performance-baseline.md | ||
| release-checklist.md | ||
| RUNBOOK.md | ||
| secrets.md | ||
| sprint-ui-deep-progress.md | ||
| sprint1-progress.md | ||
| sprint2-progress.md | ||
| sprint3-progress.md | ||
| sprint4-progress.md | ||
| sprint5-progress.md | ||
| sprint6-progress.md | ||
| sprint7-progress.md | ||
| sprint8-progress.md | ||
| sprint9-progress.md | ||
| sprint10-progress.md | ||
| sprint11-progress.md | ||
| sprint12-progress.md | ||
| sprint13-progress.md | ||
| sprint14-progress.md | ||
| sprint15-progress.md | ||
| sprint16-progress.md | ||
| sprint17-progress.md | ||
| sprint18-progress.md | ||
| sprint19-progress.md | ||
| sprint20-progress.md | ||
| sso.md | ||
| stage-access.md | ||
| stage-setup.md | ||
| stage-testing-progress.md | ||
| telegram-bridge.md | ||
| TZ-доработка.md | ||
| TZ-тестирование.md | ||
| verify-progress.md | ||