food-market/tests/food-market.UnitTests
nns f15a12695c fix(pos): автопоиск весов не виснет на Bluetooth-портах (реальный баг на кассе 11.10)
На ноутбуке магазина автопоиск спотыкался о Bluetooth-порты (COM7/COM8 — Open/Write
висят), выбирал по умолчанию BT и не доходил до COM22 (USB-SERIAL CH340, где весы).
Парсер/протокол исправны (ручной выбор COM22 57600 работает) — баг только в поиске.

- ScaleAutodiscovery.DiscoverAsync: тирами по типу порта — USB-serial первыми,
  неопознанные в середине, Bluetooth последними; на каждый порт ЖЁСТКИЙ таймаут
  (Open обёрнут в задачу с гонкой против Task.Delay — SerialPort.Open на BT виснет);
  порты перебираются параллельно (до 4), общий бюджет ~15 с; любая ошибка/таймаут →
  следующий порт; по каждому порту строка в лог («COM22 CH340: ENQ→ACK, вес 0.000 кг»,
  «COM7 Bluetooth: пропущен», «COM15: нет ответа»).
- HardwareProbe: Classify (CH340/Prolific/FTDI/CP210x → USB-serial; BTHENUM/Bluetooth
  → Bluetooth; ttyUSB/ttyACM → USB-serial), ClassifyPorts (без открытия портов),
  OpenCloseBounded (жёсткий таймаут — листинг не виснет на BT). ListComPorts не
  открывает Bluetooth-порты.
- HwCheck: по умолчанию выбирается НЕ Bluetooth-порт; окно показывает журнал
  автопоиска по портам; список портов помечает [USB-serial]/[Bluetooth].
- Основная касса (экран «Оборудование») — та же DiscoverScaleAsync; --probe-hw не
  открывает BT-порты.
- Из zip hardware-check убран ярлык «(с тестовой печатью).bat» (печать — отдельно
  по слову владельца).
- Тесты: зависающий порт (Open 30 с) не задерживает поиск > таймаута, живой порт
  вторым — найден; USB-serial проверяется раньше Bluetooth (BT не трогаем). 53/53.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 09:03:45 +05:00
..
Support feat(audit): per-tenant журнал мутаций OrgAuditLog (P1-18) 2026-05-28 16:26:36 +05:00
AdvancedModeFilterTests.cs test(s29): unit (6) + integration (7) + e2e scenario для simple-mode (шаг 7/8) 2026-10-04 12:02:44 +05:00
ApiReferenceDocsJobTests.cs test: ApiReferenceDocsJob regex lock-down (Sprint 28) 2026-06-09 03:38:29 +05:00
BarcodeScanTests.cs feat(pos): отдельная программа «ALL MARKET — Проверка оборудования» (без входа/сервера/БД) 2026-10-11 08:37:55 +05:00
BusinessTimeTests.cs fix(sales): дата чека в UTC + защита от «будущих» времён 2026-10-09 09:58:34 +05:00
CatalogDtosSmokeTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
ClaudeCliInvoiceExtractorParseTests.cs test(s31): unit 20/20 + integration 2/2 для invoice pipeline (7/8) 2026-10-04 21:46:10 +05:00
ClaudeCliInvoicePhotosParseTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
DomainFullPropertyTouchTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
DomainPocoSmokeTests.cs feat(inventory): модель МойСклада — инвентаризация не двигает остатки 2026-10-08 20:34:05 +05:00
EanTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
EmailTemplateRendererTests.cs feat(email): HTML-шаблоны MailKit + invite/weekly/low-stock джобы (P1-22) 2026-05-28 16:37:32 +05:00
FiscalMockProviderTests.cs feat(s11): ОФД-scaffolding — IFiscalProvider + 4 провайдера + UI/тесты 2026-06-07 02:27:17 +05:00
food-market.UnitTests.csproj feat(pos-core): логика кассы без UI + 37 unit-тестов 2026-10-08 04:58:22 +05:00
HousekeepingJobsTests.cs feat(hangfire): dashboard + scheduled cleanup джобы (P1-16) 2026-05-28 10:07:14 +05:00
InternalBarcodeTests.cs fix: внутренний ШК 2x (не 02/ведущий-0) + разовый прогон «Проверки данных» при старте 2026-10-09 12:45:17 +05:00
InventoryResultTests.cs feat(inventory): модель МойСклада — инвентаризация не двигает остатки 2026-10-08 20:34:05 +05:00
InvoiceMatcherTests.cs test(s31): unit 20/20 + integration 2/2 для invoice pipeline (7/8) 2026-10-04 21:46:10 +05:00
InvoicePhotoRetentionTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
MassaKScaleTests.cs fix(pos): автопоиск весов не виснет на Bluetooth-портах (реальный баг на кассе 11.10) 2026-10-11 09:03:45 +05:00
MediatrHandlerTests.cs feat(cqrs): MediatR partial — 3 handler-образца (TD-1) 2026-05-28 17:51:08 +05:00
MoneyMathTests.cs test(money): независимый инвариант остатка счёта (нач+платежи+смены) + unit/integration 2026-10-08 03:11:09 +05:00
MovingAverageCostTests.cs test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
NegativeStockNotifyQuietHoursTests.cs feat(notifications): центр уведомлений + агрегация/эскалация минусов + каналы 2026-10-09 02:56:59 +05:00
NoopNegativeStockAlertService.cs feat(notifications): центр уведомлений + агрегация/эскалация минусов + каналы 2026-10-09 02:56:59 +05:00
PagedRequestTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
PhoneNormalizationTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
PinHasherTests.cs feat(pos): быстрый вход кассира по PIN (grant_type=pin) + lockout 2026-10-08 09:38:36 +05:00
PosContractsTests.cs feat(pos-shared): контракты POS v1 в food-market.shared (P1-12a) 2026-05-28 12:03:04 +05:00
PosCoreTests.cs feat(pos): весовой товар на кассе — вес с весов/вручную + автопоиск весов 2026-10-09 11:17:35 +05:00
RequiredGuidTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
RetailPaymentValidatorTests.cs test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
RolePermissionsTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
ScaleAutodiscoveryTests.cs fix(pos): автопоиск весов не виснет на Bluetooth-портах (реальный баг на кассе 11.10) 2026-10-11 09:03:45 +05:00
ScaleMonitorTests.cs feat(pos): весовой товар на кассе — вес с весов/вручную + автопоиск весов 2026-10-09 11:17:35 +05:00
StockServicePropertyTests.cs feat(notifications): центр уведомлений + агрегация/эскалация минусов + каналы 2026-10-09 02:56:59 +05:00
StockServiceTests.cs feat(notifications): центр уведомлений + агрегация/эскалация минусов + каналы 2026-10-09 02:56:59 +05:00
TableReaderTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
TenantQueryFilterTests.cs test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
UnitShortTests.cs fix(barcode): весовой разбор выкл по умолчанию; поиск по ШК — точное совпадение 2026-10-09 11:02:43 +05:00
ValidatorTests.cs feat(validation): FluentValidation + ValidationFilter для DTO (TD-2) 2026-05-28 17:40:46 +05:00
WebkassaProviderTests.cs feat(s11): ОФД-scaffolding — IFiscalProvider + 4 провайдера + UI/тесты 2026-06-07 02:27:17 +05:00
WeightedBarcodeTests.cs fix(barcode): весовой разбор выкл по умолчанию; поиск по ШК — точное совпадение 2026-10-09 11:02:43 +05:00