food-market/docs/sprint22-progress.md
nns aa83f82dc5
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
feat(s22): data tooling — export/import + schema docs + anon dump (7 пунктов)
1. GDPR org export — domain OrgExport + Phase22a миграция, OrgExportJob
   собирает ZIP с JSON по каждой сущности через IObjectStorage,
   DownloadToken 64-hex + 24h TTL + email-notify.
   POST /api/org/export, GET /api/org/export[/{id}], GET download/{token}.

2. 1C CSV import — POST /api/catalog/products/import/1c-csv:
   Windows-1251/UTF-8 BOM auto-detect, разделитель ;/, русские заголовки
   (Артикул/Наименование/Единица/Цена/Группа/Штрихкод) или английские.
   Нормализация unit-кодов (шт/кг/г/л/мл/упак). Делегирует на ImportCsv
   (транзакция, multi-tenant). docs/imports.md.

3. deploy/anonymize-prod.sh — pg_dump прода → restore во временную БД →
   UPDATE PII (email→user{N}@example.kz, phone→+7700111{N:04}, password→
   тестовый hash, BIN/IIN синтетические, MoySkladToken=NULL, аудиты
   TRUNCATE) → pg_dump → gz файл.

4. DbSchemaDocsJob (weekly вс 05:00 UTC) — information_schema → md с
   таблицами + колонками + FK + mermaid ER-диаграммой (топ-20 таблиц).
   Сохраняет в content-root db-schema-generated.md.

5. POST /api/admin/audit-log/export?format=csv|jsonl — streaming через
   AsAsyncEnumerable. UTF-8 BOM для CSV, JSONL для grep'a. Multi-tenant.

6. GET /api/moysklad/sync-status — агрегат по import_jobs:
   { configured, lastSuccessAt, errorCountLast7Days, pendingCount,
     byKind: { products: KindStatus, counterparties: KindStatus } }.
   Stub если MoySkladToken=null.

7. docs/ARCHITECTURE.md — финальный итог 22 спринтов:
   - Sprint 13-22 changes-сводка
   - «Реализовано полностью» секция
   - «Scaffolding» таблица с указанием что нужно от user'а
   - «Не реализовано» секция (прод, SSO callback, KZ-перевод, POS-тест)
   - Актуальная файловая структура

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-07 23:00:54 +05:00

1.8 KiB
Raw Blame History

Sprint 22 — data tooling: export/import, schema docs, anonymized dump

Цель: финальный спринт автономной работы. GDPR-ready export, 1С-import, схема-документация, audit-export, anonymized stage dump, MoySklad status endpoint, итоговый ARCHITECTURE.

Старт: 2026-06-07 (после Sprint 21). Исполнитель: Claude Opus 4.7. Последний автономный спринт — после очередь пустая, watchdog молчит.

Принципы

  • Все export/import — multi-tenant строго (нельзя выгрузить чужое).
  • Долгие операции — Hangfire job + status polling (не блокировать HTTP).
  • НЕ трогать: global.json, prod admin.food-market.kz, POS WPF.

Чек-лист

  • 1. GDPR-export организацииPOST /api/org/export для админа, Hangfire job, ZIP с JSON каждой сущности, signed URL 24h, email-notify.
  • 2. CSV-импорт каталога из 1СPOST /api/catalog/import/1c-csv, preview → транзакция, multi-tenant. docs/imports.md.
  • 3. Anonymized stage dumpdeploy/anonymize-prod.sh: pg_dump + PII-обфускация (email/phone/passwords/IIN).
  • 4. DB schema auto-docs — Hangfire weekly: docs/db-schema.md с mermaid ER-диаграммой.
  • 5. Audit-log export APIPOST /api/admin/audit/export csv/jsonl streaming, multi-tenant.
  • 6. MoySklad sync-statusGET /api/moysklad/sync-status, stub если не настроено.
  • 7. Final ARCHITECTURE — итоговый docs/ARCHITECTURE.md.

Журнал

2026-06-07 старт

Sprint 21 закрыт (7/7 ✓). Поехали по data tooling — финальный sprint.