food-market/src/food-market.api/appsettings.json
nns 606b81b4d9 feat(pos-api): привязка чеков кассы к смене/точке + возвраты + версия
- PosSaleDto: CashShiftId/RetailPointId/IsReturn/ReferenceSaleId (nullable,
  обратносовместимо с v1). PosController проставляет их в RetailSale, резолвит
  склад по точке продаж, проверяет что смена открыта. Без этого чеки кассы не
  попадали в Z-отчёт/материализацию денег смены (MoneyService агрегирует продажи
  по CashShiftId).
- Возврат покупателю (IsReturn): движение +остаток (CustomerReturn), без
  pre-flight на остаток; наличные к выдаче, учитывается в смене.
- GET /api/pos/v1/version (anon): версия + ссылки на сборки из конфигурации Pos
  (автообновление кассы + ссылка в админке).
- Интеграционные тесты: продажа в смене попадает в expected cash при закрытии;
  возврат возвращает остаток (9/9 PosSyncTests зелёные, Testcontainers).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 04:58:05 +05:00

47 lines
1 KiB
JSON

{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft.AspNetCore": "Warning",
"Microsoft.EntityFrameworkCore": "Warning"
}
},
"WriteTo": [
{ "Name": "Console" },
{
"Name": "File",
"Args": {
"path": "logs/food-market-.log",
"rollingInterval": "Day",
"retainedFileCountLimit": 14
}
}
]
},
"ConnectionStrings": {
"Default": "Host=localhost;Port=5432;Database=food_market;Username=nns;Password="
},
"OpenIddict": {
"Issuer": "https://localhost:5001/",
"AccessTokenLifetime": "01:00:00",
"RefreshTokenLifetime": "30.00:00:00"
},
"Cors": {
"AllowedOrigins": [
"http://localhost:5173",
"http://localhost:4173",
"https://test.food-market.kz",
"https://admin.food-market.kz"
]
},
"Pos": {
"LatestVersion": "0.0.0",
"DownloadWindows": "",
"DownloadLinux": "",
"ReleaseNotes": "",
"Mandatory": false
},
"AllowedHosts": "*"
}