- Sidebar: после создания консолидации перечитывается список группы - useLegalEntityFiles: убран biome-ignore в зависимостях эффекта - FilesDrawer: курсор и pointer-events у недоступной кнопки загрузки - design.md: решения R-4..R-8 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
54 lines
3.2 KiB
Bash
Executable File
54 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Подготовка демо: загрузить квартальные ОСВ РБ и Счастливочной за 2024 Q1–Q3 в консолидацию версии и подтвердить ОСВ-документы.
|
||
# Использование: scripts/demo-prepare.sh <version_id> [email] (стенд arm-core на localhost:8000, DEBUG=true)
|
||
# Каталог фикстур: FIXTURES_DIR (по умолчанию ../../fixtures относительно репозитория arm-web, т.е. workspace/fixtures).
|
||
set -euo pipefail
|
||
V="${1:?version_id}"
|
||
EMAIL="${2:-ka_go@armka.local}"
|
||
API="${API:-localhost:8000/api/v1}"
|
||
F="${FIXTURES_DIR:-$(cd "$(dirname "$0")/../.." && pwd)/fixtures}/osv"
|
||
H="Authorization: Bearer $(curl -sf -X POST "$API/dev/token" -H 'Content-Type: application/json' -d "{\"email\":\"$EMAIL\"}" | python3 -c 'import sys,json;print(json.load(sys.stdin)["access_token"])')"
|
||
|
||
card=$(curl -sf "$API/consolidations/versions/$V" -H "$H")
|
||
# загрузка идёт в консолидацию (период), а не в версию: consolidation_id берём из карточки версии
|
||
C=$(echo "$card" | python3 -c 'import sys,json;print(json.load(sys.stdin)["consolidation_id"])')
|
||
members=$(echo "$card" | python3 -c '
|
||
import sys,json
|
||
for m in json.load(sys.stdin)["members"]: print(m["id"], m["inn"], m["name"])')
|
||
# ЮЛ ищем по ИНН (в справочнике имена могут быть в верхнем регистре)
|
||
le_by_inn() { echo "$members" | awk -v inn="$1" '$2 == inn { print $1; exit }'; }
|
||
LE_RB=$(le_by_inn 3528052718)
|
||
LE_SCH=$(le_by_inn 3528104476)
|
||
[ -n "$LE_RB" ] && [ -n "$LE_SCH" ] || { echo "В периметре версии нет РБ или Счастливочной:"; echo "$members"; exit 1; }
|
||
|
||
upload() { for f in "$F/$2"/2024-Q{1,2,3}/*; do
|
||
curl -s -X POST "$API/consolidations/$C/legal-entities/$1/files" -H "$H" -F "files=@$f" \
|
||
| python3 -c 'import sys,json;d=json.load(sys.stdin);print("принят" if d.get("accepted") else d.get("rejected") or d)'
|
||
done; }
|
||
upload "$LE_RB" rb
|
||
upload "$LE_SCH" schastl
|
||
|
||
echo "Жду распознавания…"
|
||
for _ in $(seq 1 60); do
|
||
pending=0
|
||
for LE in $LE_RB $LE_SCH; do
|
||
n=$(curl -sf "$API/consolidations/$C/legal-entities/$LE/files?limit=100" -H "$H" | python3 -c 'import sys,json;print(sum(f["status"] in ("UPLOADED","PROCESSING") for f in json.load(sys.stdin)["items"]))')
|
||
pending=$((pending + n))
|
||
done
|
||
[ "$pending" -eq 0 ] && break
|
||
sleep 5
|
||
done
|
||
|
||
for LE in $LE_RB $LE_SCH; do
|
||
curl -sf "$API/consolidations/$C/legal-entities/$LE/files?limit=100" -H "$H" | python3 -c '
|
||
import sys,json
|
||
for f in json.load(sys.stdin)["items"]:
|
||
for d in f["documents"]:
|
||
if d["document_type"] == "OSV" and d["status"] in ("RECOGNIZED","NEEDS_CHECK"): print(d["id"])' \
|
||
| while read -r DOC; do curl -s -o /dev/null -w "%{http_code} $DOC\n" -X POST "$API/documents/$DOC/confirm" -H "$H"; done
|
||
done
|
||
|
||
curl -sf "$API/consolidations/versions/$V/osv/summary" -H "$H" | python3 -c '
|
||
import sys,json
|
||
s=json.load(sys.stdin); print("строк:", s["rows_total"], "документов:", s["documents_total"], "несопоставленных:", s["unmapped_total"], "пробелов:", len(s["gaps"]))'
|