Files
vector/scripts/test-mig-seed.sh
Sadmin 5bdb345e33 B14+B15: чистый SearchEngine + слоистая модель данных
B14 (поведение-сохраняющий рефакторинг):
- services/search_engine.py — вся SAR-математика из analyze.py:
  SearchInput/SearchModel, build_search_model (чистая функция,
  без DB/auth/HTTP), деривации профилей/времени суток, unmodeled.
- analyze.py — тонкая обёртка: сборка SearchInput + запись БД.
- closed_cases.py — импорты хелперов из движка.
- 12 юнит-тестов движка (claude_analyze мокается).
- Контракт /analyze не изменён; регресс спеки подтверждён:
  bike 8yo 2h лес день -> 5.4 км.

B15 (слои данных, Alembic):
- backend/alembic (env из DATABASE_URL) + миграция 006_b15_layers.
- Слой 4: search_models (case_id, version, input_snapshot, model_json).
- Слой 3: search_teams, field_observations, areas_checked, found_events
  (geom JSONB GeoJSON, PostGIS в B16).
- Слой 1: reference_priors (пустой, B12 заблокирован).
- Бэкфилл: cases.analysis_log (объект с primary_zones) -> search_models v1;
  legacy-массивы и analysis_log-таблица не тронуты.
- Проверено на CT108 в одноразовых pg16-контейнерах: чистая БД (без
  данных и с ними), бэкфилл=1 из 3 seed-кейсов, downgrade->upgrade
  идемпотентен, check-constraints работают, источник не модифицирован.

pytest: 214 passed.
2026-09-09 15:48:29 +03:00

17 lines
1.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# Seed для теста миграции 006 (idempotent: 001 содержит DROP TABLE)
set -e
cd /root/vector
for f in backend/migrations/001_create_cases_table.sql backend/migrations/002_add_detailed_fields.sql backend/migrations/003_create_users_and_analysis_log.sql; do
docker exec -i vec-mig-pg psql -U postgres -d vector_mchs < "$f" 2>&1 | grep -i "error" && exit 1 || true
done
docker exec vec-mig-pg psql -U postgres -d vector_mchs <<'SQL'
INSERT INTO cases (id, age_years, status, analysis_log) VALUES
('11111111-1111-4111-8111-000000000001', 10, 'active', '{"primary_zones": [{"priority": 1, "name": "З"}], "urgency": "высокая", "max_distance_km": 5.4}'::jsonb),
('11111111-1111-4111-8111-000000000002', 12, 'new', '[{"legacy": true}]'::jsonb),
('11111111-1111-4111-8111-000000000003', 8, 'active', NULL);
SQL
echo "--- cases seeded:"
docker exec vec-mig-pg psql -U postgres -d vector_mchs -t -c "SELECT count(*) FROM cases;"
echo "--- analysis_log types:"
docker exec vec-mig-pg psql -U postgres -d vector_mchs -t -c "SELECT id, jsonb_typeof(analysis_log) FROM cases;"