daf6a0ade9
plan ds-s1-backend-1 잔여 구현 (A·C-1 은 16b0fe1):
- B 중복검사: services/dedup.py (OFF-list law_monitor 공용) + 업로드 채움(B-1)
+ GET /documents/duplicates(B-2) + post-upload near-dup 비동기(B-3)
+ backfill_dedup.py(B-4) + 야간 dedup_reconcile 잡(03:30 KST 멱등 재계산)
- C MD-first: marker_worker office/hwp 분기 _process_office(C-2) + md_status
상태머신 postcondition success|failed(C-5) + backfill_nonpdf_markdown.py(C-4)
+ requirements markitdown
- D 스토리지: services/storage ABC+Range 계약 / LocalBackend / NasApiBackend 503
(D-1) + /file resolver 경유, 로컬 동작 불변(D-2)
- E 운영: pre-change pg_dump + rollback_287.sql + apply runbook(E-3) + 테스트(E-1)
비파괴 불변식 유지(기존 응답 shape 무변경, md_status success→completed read-time 매핑).
어드버서리얼 리뷰 확정 1건(soft-delete canonical 승격 시 stale duplicate_of) → B-1
승격 정규화 + 야간 재계산으로 정합.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
31 lines
1.3 KiB
Bash
31 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
# pre-change pg_dump — plan ds-s1-backend-1 E-3.
|
|
# A-1(migration 287) / B-4 backfill 적용 *전* 안전망. repo cp -p 가 아니라 진짜 DB 덤프.
|
|
#
|
|
# 사용 (GPU 서버, repo 루트에서):
|
|
# bash scripts/s1_pre_change_backup.sh # pre-A-1
|
|
# bash scripts/s1_pre_change_backup.sh pre-b4 # pre-B-4 (라벨만 다름)
|
|
#
|
|
# 백업 위치 = repo 밖 (feedback_backup_outside_repo): $HOME/.local/share/ds-s1-backups/
|
|
set -euo pipefail
|
|
|
|
LABEL="${1:-pre-a1}"
|
|
DATE="$(date +%Y%m%d-%H%M%S)"
|
|
BACKUP_DIR="${BACKUP_DIR:-$HOME/.local/share/ds-s1-backups}"
|
|
mkdir -p "$BACKUP_DIR"
|
|
OUT="$BACKUP_DIR/pkm-${LABEL}-${DATE}.sql.gz"
|
|
|
|
echo "[s1-backup] pg_dump pkm → $OUT"
|
|
# 단일 pkm DB 덤프(pg_dumpall 아님). gzip 은 redirect(파일명 추측 함정 회피).
|
|
docker compose exec -T postgres pg_dump -U pkm -d pkm | gzip > "$OUT"
|
|
|
|
echo "[s1-backup] done: $(du -h "$OUT" | cut -f1)"
|
|
echo -n "[s1-backup] gzip 무결성: "
|
|
gzip -t "$OUT" && echo "OK"
|
|
|
|
echo
|
|
echo "[s1-backup] 롤백 옵션:"
|
|
echo " (a) 287 컬럼만 되돌림(빠름): scripts/rollback_287.sql 수동 실행"
|
|
echo " (b) 전체 복원: gunzip -c '$OUT' | docker compose exec -T postgres psql -U pkm -d pkm"
|
|
echo "[s1-backup] 보존 7일 권장. (DR-grade 검증은 ephemeral restore — D5 트랙, 본 안전망 범위 밖.)"
|