# Shared/storage 현재 기준 — SQLite v3 / MySQL v46 / 패키지 v229

- `record_media_saved()`는 자산·게시물·job·batch·P2P·sync_queue를 갱신한다.
- `record_downloaded_file()`는 실제 파일에서 계정·게시물·저장 루트·batch/job을 확보하고 공통 완료 처리를 호출한다.
- `canonical_instagram_post_url()`은 scope·프로필 URL을 거부하고 shortcode permalink만 반환한다.
- `upsert_observation()`은 다운로드와 무관하게 계정·게시물·최신 통계·이력·10분 버킷을 저장한다.
- `post_stat_10m`은 `post_id + bucket_at` 단위 UPSERT다.
- `list_accounts()`, `list_account_posts()`, `get_post_detail()`, `get_post_stats()`는 Analyze8780 조회 기반이다.
- `soft_delete_account()`, `soft_delete_post()`는 실제 파일을 지우지 않고 숨김·tombstone·DELETE sync_queue를 남긴다.
- `_StDown/instagram`은 권장 기본 루트다.
- 서버 payload에는 로컬 절대경로·상대경로를 넣지 않는다.
- MySQL은 v45 후 v46 순서이며 v227 신규 MySQL 쿼리는 없다.
- 고정 회귀 테스트: `test_shared_storage.py`.
