food-market/tests/food-market.IntegrationTests
nns e39e4fe1d5
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
Docker Web / Build + push Web (push) Waiting to run
Docker Web / Deploy Web on stage (push) Blocked by required conditions
feat(registry+pricing): «Реестр товаров» + схема цен (закупочная/себестоимость/продажная)
РЕЕСТР ТОВАРОВ (глобальный системный шаблон карточек):
- Домен ProductRegistry{Group,Card,Barcode} (Entity, без OrganizationId),
  миграция Phase47; штрихкод уникален в реестре (ключ новизны).
- Наполнение «из МойСклад заново» (команда суперадмина, повторяемая): читает
  entity/product (архивные/модификации/комплекты/услуги — считает и пропускает),
  группы из productFolder (путь), штрихкоды всех типов; buyPrice→закупочная+
  себестоимость, salePrices→продажная; пересоздаёт только MoySklad-карточки,
  Shop-карточки не трогает. МойСклад только чтение (пагинация 1000, 429-бэкофф).
- Фоновое пополнение из каталогов магазинов-участников (recurring, флаг в
  PlatformSettings, по умолчанию ВЫКЛ): новые штрихкоды → карточки; фильтр
  мусора (неверная контр. цифра EAN-13/8, пустое имя); существующие не трогает.
- Копия реестра в каталог нового магазина при регистрации — фоновым заданием
  (Hangfire) сразу после signup; баннер «Каталог загружается…», повторно не
  копирует. Остатков нет (0).
- Флаг организации ContributesToRegistry (демо/автотест — ВЫКЛ миграцией).
- SuperAdmin раздел «Реестр товаров»: поиск/правка/удаление карточек, тоггл
  фонового пополнения (причина+аудит), кнопка наполнения из МойСклад, флаги
  участия орг. Только SuperAdmin.

СХЕМА ЦЕН (решение владельца 12.10): три цены в карточке.
- Закупочная: ReferencePrice→PurchasePrice (миграция Phase48 RENAME COLUMN,
  данные сохранены). Каждая проведённая приёмка пишет закупочную = цена строки;
  unpost возвращает из предыдущей проведённой приёмки. API отдаёт purchasePrice
  и временно referencePrice (алиас для iOS).
- Себестоимость (Cost): только чтение, скользящее среднее (как было).
- Продажная (бывш. «розничная»): меняется приёмкой только при ручной правке в
  строке. Системный тип цены «Розничная цена»→«Продажная цена» (миграция+сидер),
  подписи в UI переименованы.
- Убраны: автозаполнение эталонной при первой приёмке, ReferencePriceRefreshJob
  (30-дневная перезапись), понятие «эталонная» в UI.

Тесты: SupplyPricingSchemeTests (приёмка без правок → продажная не меняется,
закупочная = цена строки, себестоимость средняя; правка продажной в строке;
unpost → закупочная вернулась) — 3/3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-12 19:19:47 +05:00
..
Support fix(stock): «показать нулевые» и фильтр по группе показывают товары без прихода 2026-10-09 09:44:50 +05:00
AbcReportTests.cs feat(reports): ABC-анализ по Парето (P1-11) 2026-05-28 11:24:26 +05:00
AdvancedModeTests.cs test(s29): unit (6) + integration (7) + e2e scenario для simple-mode (шаг 7/8) 2026-10-04 12:02:44 +05:00
ConcurrencyTokenTests.cs feat(concurrency): RowVersion на документах через Postgres xmin (TD-6) 2026-05-28 17:33:01 +05:00
CustomerReturnTests.cs feat(returns): возврат от покупателя (CustomerReturn) (P1-6) 2026-05-28 09:51:04 +05:00
DataQualityTests.cs feat(data-quality): фоновая «Проверка данных» — бэкенд (п.1,3,4) 2026-10-09 08:11:57 +05:00
DemandPostUnpostTests.cs feat(demands): оптовая отгрузка контрагенту-юрлицу (P1-5) 2026-05-28 16:18:49 +05:00
DemoSeederIdempotencyTests.cs fix(seed): DemoTenantSeeder гардит по наличию ЛЮБЫХ товаров в орге 2026-10-06 00:50:50 +05:00
EnterPostUnpostTests.cs feat(enters): оприходование товара без поставщика (P1-1) 2026-05-28 09:18:13 +05:00
FiscalMockFlowTests.cs feat(s11): ОФД-scaffolding — IFiscalProvider + 4 провайдера + UI/тесты 2026-06-07 02:27:17 +05:00
food-market.IntegrationTests.csproj feat(realtime): SignalR hub /hubs/notifications per-org + dashboard live 2026-05-31 19:29:59 +05:00
HangfireAccessTests.cs feat(s13): security headers + rate-limits + sensitive-ops audit + session revoke + Grafana 2026-06-07 12:30:10 +05:00
HangfireDashboardTests.cs feat(hangfire): dashboard + scheduled cleanup джобы (P1-16) 2026-05-28 10:07:14 +05:00
ImportJobPersistenceTests.cs feat(import-jobs): persisted ImportJobRegistry в БД (TD-5) 2026-05-28 16:45:08 +05:00
InventoryPostUnpostTests.cs test(inventory): обновлены устаревшие ассерты (ActualQty=BookQty, no-diff post = no-op) 2026-10-09 01:27:14 +05:00
InvoiceApplySklad0610Tests.cs feat(invoices+catalog): порт улучшений 06.10.2026 из sklad 2026-10-07 19:50:03 +05:00
InvoicePipelineTests.cs test(s31): unit 20/20 + integration 2/2 для invoice pipeline (7/8) 2026-10-04 21:46:10 +05:00
InvoiceUploadHttpTests.cs fix(hotfix): invoice500 + фоновые 403 на reload + regression e2e 2026-10-05 00:21:41 +05:00
LossPostUnpostTests.cs feat(losses): списание со склада с указанием причины (P1-2) 2026-05-28 09:24:40 +05:00
LoyaltyFlowTests.cs feat(loyalty+promotions): P2-12 + P2-13 — лояльность и промокоды (Sprint 9 п.1-2) 2026-05-31 21:06:10 +05:00
MetricsEndpointTests.cs feat(observability): Prometheus метрики /metrics + бизнес-счётчики (P1-17) 2026-05-28 12:20:01 +05:00
MobileApiTests.cs fix(barcode): весовой разбор выкл по умолчанию; поиск по ШК — точное совпадение 2026-10-09 11:02:43 +05:00
MoneyModuleTests.cs feat(money): автооткрытие смены первой продажей + Z-отчёт по товарам + 24ч 2026-10-09 05:58:31 +05:00
NegativeStockTests.cs fix(inventory): записывать автора движения (CauseUserId) для всех документов 2026-10-09 09:52:33 +05:00
OrgAuditLogTests.cs feat(audit): per-tenant журнал мутаций OrgAuditLog (P1-18) 2026-05-28 16:26:36 +05:00
PermissionTests.cs feat(pos): регистрация устройства на точке продаж + привязка кассира 2026-10-08 09:24:51 +05:00
PinLoginTests.cs feat(pos): быстрый вход кассира по PIN (grant_type=pin) + lockout 2026-10-08 09:38:36 +05:00
PosSyncTests.cs feat(money): автооткрытие смены на POS-синке + уведомление о сменах >24ч (п.1) 2026-10-09 07:11:29 +05:00
ProductCardParityTests.cs feat(catalog): карточка товара как МойСклад+ — обязательно только наименование 2026-10-09 05:45:38 +05:00
ProfitReportTests.cs feat(reports): отчёт «Прибыль» (выручка − COGS) (P1-10) 2026-05-28 11:19:19 +05:00
PromotionFlowTests.cs feat(loyalty+promotions): P2-12 + P2-13 — лояльность и промокоды (Sprint 9 п.1-2) 2026-05-31 21:06:10 +05:00
PruneQualityTestOrgsTests.cs docs(s28): api-reference 195→240 + observability + integration #7 + CI 2026-06-09 03:26:39 +05:00
QuickLoginTests.cs feat(s30): sentinel pwd для SPA — реальный мастер-пароль только в server-env 2026-10-04 21:02:36 +05:00
RetailOversellingTests.cs test(sales): привести oversell-тест к политике «продажа в минус разрешена» 2026-10-09 10:01:56 +05:00
RetailReturnParityTests.cs feat(sales): возврат — способ по умолчанию = оплата чека; иной способ по праву+причине 2026-10-09 05:50:41 +05:00
SalesReportTests.cs feat(reports): отчёт «Продажи» с группировками и экспортом (P1-8) 2026-05-28 11:09:52 +05:00
SessionRevokeTests.cs feat(s13): security headers + rate-limits + sensitive-ops audit + session revoke + Grafana 2026-06-07 12:30:10 +05:00
SignalRNotificationsTests.cs feat(realtime): SignalR hub /hubs/notifications per-org + dashboard live 2026-05-31 19:29:59 +05:00
SignupFlowTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
Sprint18To23FeaturesTests.cs docs(s24): docs cross-check + auto-gen + onboarding + test gap-fill (8/8 ✓) 2026-06-08 02:15:56 +05:00
StockReportTests.cs feat(reports): отчёт «Остатки на дату» с реконструкцией (P1-9) 2026-05-28 11:14:24 +05:00
StockStateFilterTests.cs feat(stock): фильтры остатков «В наличии / Нулевые / В минусе» (states, объединение ИЛИ) 2026-10-11 18:29:31 +05:00
StorageAbstractionTests.cs feat(storage): IObjectStorage abstraction (Local + MinIO) — P2-15 2026-05-31 20:17:10 +05:00
SupplierReconciliationTests.cs feat(money): акт сверки с поставщиком — печать/PDF (п.7) 2026-10-09 06:39:08 +05:00
SupplierReturnFromSupplyTests.cs feat(documents): единый блок «Связанные документы» на всех документах (п.5) 2026-10-09 07:06:07 +05:00
SupplierReturnTests.cs feat(supplier-returns): возврат поставщику (P1-7) 2026-05-28 09:58:29 +05:00
SupplyPostUnpostTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
SupplyPricingSchemeTests.cs feat(registry+pricing): «Реестр товаров» + схема цен (закупочная/себестоимость/продажная) 2026-10-12 19:19:47 +05:00
TelegramOwnerSummaryTests.cs feat(telegram): OwnerDailySummaryJob + bot binding (P2-14) 2026-05-31 19:50:33 +05:00
TenantIsolationTests.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00
TransferPostUnpostTests.cs feat(transfers): атомарное перемещение между складами (P1-3) 2026-05-28 09:32:32 +05:00
TwoFactorTests.cs feat(auth): TOTP 2FA для админов через AuthenticatorTokenProvider (P2-4) 2026-05-28 17:57:32 +05:00