|
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
Sprint 23 (adversarial): атаковали систему как недоброжелатель. Найдено 4 бага, все починены. Bug #001 (Medium): NULL-byte в Product.Name вызывал 500 без тела. Postgres TEXT не принимает \x00. Добавил NoControlChars() в ProductInputValidator + CounterpartyInputValidator. Bug #002 (Low): ProductInputValidator MaximumLength(200) конфликтовал со StringLength(500) в DTO и schema HasMaxLength(500). Сделал 500 везде. Counterparty: 200 → 255 (matches HasMaxLength). Bug #003 (CRITICAL): параллельные posting'и под Serializable выбрасывали PostgresException 40001 → middleware → 500 empty body. Добавил SerializationConflictMiddleware который мапит 40001 → 409 Conflict с {error, retryable: true}. Также SerializableRetry helper для явного retry внутри endpoint'ов с exp backoff. Применил retry-wrap к RetailSalesController.Post (PostCoreAsync extracted). Bug #004 (Low): цена 0.0000001 округлялась до 0 уже после прохождения required-price check (check был ДО RoundIfNeeded). FindMissing- RequiredPriceAsync теперь округляет перед сравнением — required цена реально > 0 после rounding. Bug reports: tests/e2e/reports/bugs/bug-00[1-4]-*.md (github-issue format). Multi-tenant attacks (cat 3): clean — все cross-org GET/PUT/DELETE дают 404, bulk-update affected=0, lists не утекают. Auth-edge (cat 2): clean — JWT tampering 401, garbage 401, CORS evil.com не получает allow-origin, fake refresh 400 invalid_grant. DOS (cat 7): clean — 50MB body 413, 200 headers 431, long URL 200. Hangfire safety (cat 8): clean — regular Admin → /hangfire 403, seed-demo использует tenant context, body org-id игнорируется. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| bugs | ||
| auth-edge-2026-05-26T07-02-25-461Z.md | ||
| auth-password-2026-05-26T07-02-30-329Z.md | ||
| catalog-edge-2026-05-26T07-02-35-811Z.md | ||
| documents-edge-2026-05-23T07-32-53-747Z.md | ||
| documents-edge-2026-05-26T07-02-17-822Z.md | ||
| employees-2026-05-26T07-03-24-714Z.md | ||
| full-cycle-2026-05-07-baseline.md | ||
| full-cycle-2026-05-07T19-04-12-955Z.md | ||
| full-cycle-2026-05-07T19-05-09-027Z.md | ||
| full-cycle-2026-05-08-after-fixes.md | ||
| full-cycle-2026-05-08-bugs-fixed.md | ||
| full-cycle-2026-05-08-full-pass.md | ||
| full-cycle-2026-05-23T07-24-23-067Z.md | ||
| full-cycle-2026-05-26T07-02-03-862Z.md | ||
| moysklad-import-2026-05-26T07-03-16-516Z.md | ||
| multi-tenant-isolation-2026-05-23T07-24-06-445Z.md | ||
| multi-tenant-isolation-2026-05-26T07-02-11-129Z.md | ||
| platform-smtp-2026-05-26T07-03-43-053Z.md | ||
| reports-stats-2026-05-26T07-03-01-171Z.md | ||
| roles-2026-05-26T07-03-30-039Z.md | ||
| roles-2026-05-26T21-41-37-170Z.md | ||
| security-edge-2026-05-26T07-03-49-977Z.md | ||
| stage-2fa-2026-05-29T12-41-15-748Z.md | ||
| stage-audit-log-2026-05-29T12-39-46-499Z.md | ||
| stage-catalog-2026-05-29T11-45-48-560Z.md | ||
| stage-customer-return-2026-05-29T12-08-23-637Z.md | ||
| stage-customer-return-2026-05-29T12-09-36-698Z.md | ||
| stage-customer-return-2026-05-29T12-10-01-968Z.md | ||
| stage-demand-2026-05-29T12-22-57-924Z.md | ||
| stage-enter-2026-05-29T11-57-30-531Z.md | ||
| stage-inventory-2026-05-29T12-05-16-271Z.md | ||
| stage-loss-2026-05-29T11-59-44-610Z.md | ||
| stage-pos-2026-05-29T12-52-58-611Z.md | ||
| stage-reports-2026-05-29T12-35-11-888Z.md | ||
| stage-smoke-2026-05-29T11-28-24-096Z.md | ||
| stage-supplier-return-2026-05-29T12-21-24-232Z.md | ||
| stage-swagger-2026-05-29T12-51-12-067Z.md | ||
| stage-transfer-2026-05-29T12-01-42-704Z.md | ||
| stock-concurrency-2026-05-26T07-02-53-977Z.md | ||
| stock-invariant-deep-2026-05-26T07-02-45-558Z.md | ||
| superadmin-console-2026-05-26T07-03-38-197Z.md | ||
| systemic-2026-05-23.md | ||
| systemic-2026-05-26.md | ||