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
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>
36 lines
1.8 KiB
Markdown
36 lines
1.8 KiB
Markdown
# 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 dump** — `deploy/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 API** — `POST /api/admin/audit/export`
|
||
csv/jsonl streaming, multi-tenant.
|
||
- [ ] **6. MoySklad sync-status** — `GET /api/moysklad/sync-status`,
|
||
stub если не настроено.
|
||
- [ ] **7. Final ARCHITECTURE** — итоговый `docs/ARCHITECTURE.md`.
|
||
|
||
## Журнал
|
||
|
||
### 2026-06-07 старт
|
||
Sprint 21 закрыт (7/7 ✓). Поехали по data tooling — финальный sprint.
|