Files
momentry_core/v1.1/scripts/package_release_v1.11.sh
Accusys 2cfcfdd1af feat: Phase 2.6 edges migration to Qdrant (TKG-only architecture)
Phase 2.6.1: co_occurrence_edges migration
- build_co_occurrence_edges_from_qdrant()
- Qdrant embeddings → frame grouping → YOLO objects
- Result: 6679 edges (vs 6701 PostgreSQL)

Phase 2.6.2: face_face_edges migration
- build_face_face_edges_from_qdrant()
- Qdrant embeddings → frame grouping → face pairs
- mutual_gaze detection preserved
- Result: 6 edges (exact match)

Phase 2.6.3: speaker_face_edges migration
- build_speaker_face_edges_from_qdrant()
- Qdrant embeddings → trace_id frame ranges
- SPEAKS_AS edge creation

Architecture:
- All edges use Qdrant payload (no face_detections queries)
- PostgreSQL fallback for empty Qdrant
- Estimated 3.6x performance improvement

Testing:
- Playground (3003): ✓ All Phase 2.6 logs verified
- Edge counts: ✓ Close match with PostgreSQL
- Fallback: ✓ Working

Docs:
- docs_v1.0/DESIGN/TKG_PHASE2_6_EDGES_MIGRATION.md
- docs_v1.0/M4_workspace/2026-06-21_phase2_6_test.md
2026-06-21 04:47:49 +08:00

101 lines
3.6 KiB
Bash

#!/bin/bash
# ===========================================================
# Package Release — Standard Deliverable for M4
# Usage: bash scripts/package_release.sh <version> [file_uuid]
# version: e.g. v1.0.2
# file_uuid: default aeed71342a899fe4b4c57b7d41bcb692
# ===========================================================
set -euo pipefail
VERSION="${1:?Usage: $0 <version> [file_uuid]}"
UUID="${2:-aeed71342a899fe4b4c57b7d41bcb692}"
PG_BIN="/Users/accusys/pgsql/18.3/bin"
PROJECT="/Users/accusys/momentry_core_0.1"
OUTPUT="$PROJECT/release/phase1/${VERSION}"
M4_DIR="$PROJECT/docs_v1.0/M4_HANDOVER"
T0=$(date +%s)
echo "=========================================="
echo " Package Release ${VERSION}"
echo " UUID: ${UUID}"
echo "=========================================="
echo ""
mkdir -p "$OUTPUT"
# ── Step 1: DB backup (post-correction) ──
echo "[1/5] DB backup (post-correction)..."
$PG_BIN/pg_dump -U accusys -d momentry \
--schema=dev \
--table=dev.chunk \
--table=dev.chunk_vectors \
--data-only --column-inserts \
> "$OUTPUT/dev_backup_post_correction.sql" 2>/dev/null
echo " $(ls -lh "$OUTPUT/dev_backup_post_correction.sql" | awk '{print $5}')"
# ── Step 2: Verify counts ──
echo "[2/5] Verify counts..."
SENTENCE=$($PG_BIN/psql -U accusys -d momentry -t -A -c "SELECT count(*) FROM dev.chunk WHERE file_uuid='$UUID' AND chunk_type='sentence';" 2>/dev/null)
VECTORS=$($PG_BIN/psql -U accusys -d momentry -t -A -c "SELECT count(*) FROM dev.chunk_vectors WHERE uuid='$UUID';" 2>/dev/null)
MATCHED=$($PG_BIN/psql -U accusys -d momentry -t -A -c "
SELECT count(*) FROM dev.chunk_vectors cv
JOIN dev.chunk c ON c.file_uuid=cv.uuid AND c.chunk_id=cv.chunk_id
WHERE cv.uuid='$UUID';" 2>/dev/null)
echo " sentence chunks: $SENTENCE"
echo " vectors: $VECTORS"
echo " matched: $MATCHED"
if [ "$SENTENCE" != "$VECTORS" ] || [ "$VECTORS" != "$MATCHED" ]; then
echo " ❌ MISMATCH — aborting"
exit 1
fi
echo " ✅ All counts consistent"
# ── Step 3: Source code archive ──
echo "[3/5] Source code (git archive)..."
cd "$PROJECT"
git archive --format=tar.gz -o "$OUTPUT/momentry_core_${VERSION}_source.tar.gz" HEAD 2>/dev/null
echo " $(ls -lh "$OUTPUT/momentry_core_${VERSION}_source.tar.gz" | awk '{print $5}')"
# ── Step 4: Correction record ──
echo "[4/5] Correction record (asr-1.json)..."
ASR1="/Users/accusys/momentry/output_dev/${UUID}.asr-1.json"
if [ -f "$ASR1" ]; then
cp "$ASR1" "$OUTPUT/"
echo " $(ls -lh "$OUTPUT/${UUID}.asr-1.json" | awk '{print $5}')"
else
echo " ⚠️ No asr-1.json found for $UUID"
fi
# ── Step 5: Copy to M4_HANDOVER ──
echo "[5/5] Deploy to M4_HANDOVER..."
rm -rf "${M4_DIR:?}"/*
cp "$OUTPUT/dev_backup_post_correction.sql" "$M4_DIR/"
cp "$OUTPUT/momentry_core_${VERSION}_source.tar.gz" "$M4_DIR/"
if [ -f "$OUTPUT/${UUID}.asr-1.json" ]; then
cp "$OUTPUT/${UUID}.asr-1.json" "$M4_DIR/"
fi
# Scripts
for s in generate_asr1.py apply_asr_corrections.py clean_sentence_text.py pipeline_status.py; do
cp "$PROJECT/scripts/$s" "$M4_DIR/"
done
# Handover doc + test script
cp "$PROJECT/docs_v1.0/API_V1.0.0/RELEASE/PHASE1_HANDOVER_V1.0.0.md" "$M4_DIR/HANDOVER_${VERSION}.md"
cp "/tmp/test_api.sh" "$M4_DIR/api_test.sh"
# Create RELEASE_INFO
cat > "$M4_DIR/RELEASE_INFO.txt" << EOF
Release: ${VERSION}
Date: $(date +%Y-%m-%d)
UUID: ${UUID}
Pipeline: $(python3 $PROJECT/scripts/pipeline_status.py 2>/dev/null | grep "TOTAL" | tr -d ' ')
EOF
ELAPSED=$(($(date +%s) - T0))
echo ""
echo "=========================================="
echo " Package ${VERSION} complete (${ELAPSED}s)"
echo " Output: $OUTPUT"
echo " M4: $M4_DIR"
echo "=========================================="