Files
QuantEngineByItz/docs/SYNOLOGY_SNAPSHOT_ADMIN_DEPLOYMENT_CHECKLIST_FILLED.md
T
kjh2064 af1236202d WBS-7.3: GAS→Python 마이그레이션 5개 항목 완료 (F14, F02-F06)
- F14: late_chase_risk_score 검증
  * GAS가 유일한 생산처 (Python canonical 없음)
  * migration_action: KEEP_IN_GAS로 정정, status: DONE

- F02/F03/F04/F06: priceBasis 로직 포팅
  * formulas/price_basis_v1.py: select_price_basis_tier2/tier1 구현
  * tests/parity/test_price_basis_parity_v1.py: 8 parity 테스트 (모두 PASS)
  * GAS Number.isFinite() 의미론 정확히 재현 (math.isfinite 사용)
  * 모든 테스트 112/112 PASS

남은 작업 (4개):
- F05: decision_logic (action assignment)
- F07: score_logic (threshold addition)
- F10: routing decision
- F15: late_chase_gate

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-22 22:45:00 +09:00

3.6 KiB

Synology Snapshot Admin Deployment Checklist - Filled Example

This is the deployment-ready example for the current repo state. Replace only the hostname, certificate name, and strong password if your NAS uses different values.

1. Target paths

  • Project root: /volume1/projects/data_feed
  • Launch script: /volume1/projects/data_feed/tools/run_snapshot_admin_synology.sh
  • Local DB: /volume1/projects/data_feed/outputs/snapshot_admin/snapshot_admin.db
  • Local seed JSON: /volume1/projects/data_feed/GatherTradingData.json
  • PID file: /volume1/projects/data_feed/Temp/snapshot_admin.pid
  • Log file: /volume1/projects/data_feed/Temp/snapshot_admin.log

2. Service account

  • Preferred DSM user: snapshot-admin
  • Fallback for first POC: root
  • Folder access: read/write on /volume1/projects/data_feed

3. Environment variables

SNAPSHOT_ADMIN_AUTH_USER=snapshot-admin
SNAPSHOT_ADMIN_AUTH_PASSWORD=<strong-password>
SNAPSHOT_ADMIN_HOST=127.0.0.1
SNAPSHOT_ADMIN_PORT=8787
SNAPSHOT_ADMIN_ALLOW_REMOTE=0
SNAPSHOT_ADMIN_PID_FILE=/volume1/projects/data_feed/Temp/snapshot_admin.pid
SNAPSHOT_ADMIN_LOG_FILE=/volume1/projects/data_feed/Temp/snapshot_admin.log
SNAPSHOT_ADMIN_STATE_URL=http://127.0.0.1:8787/api/state
SNAPSHOT_ADMIN_PUBLIC_STATE_URL=https://admin.example.com/api/state

4. Task Scheduler

Boot task

  • Name: snapshot-admin-start
  • User: snapshot-admin
  • Trigger: Boot-up
  • Command:
bash /volume1/projects/data_feed/tools/run_snapshot_admin_synology.sh start

Healthcheck task

  • Name: snapshot-admin-healthcheck
  • User: snapshot-admin
  • Trigger: every 5 minutes
  • Command:
bash /volume1/projects/data_feed/tools/run_snapshot_admin_synology.sh healthcheck

Manual restart task

  • Name: snapshot-admin-restart
  • User: snapshot-admin
  • Trigger: manual
  • Command:
bash /volume1/projects/data_feed/tools/run_snapshot_admin_synology.sh restart

5. Reverse proxy

  • DSM path: Control Panel > Login Portal > Advanced > Reverse Proxy
  • Rule name: snapshot-admin
  • Source protocol: HTTPS
  • Source hostname: admin.example.com
  • Source port: 443
  • Source path: /
  • Destination protocol: HTTP
  • Destination hostname: 127.0.0.1
  • Destination port: 8787
  • TLS certificate: admin.example.com certificate

6. Firewall

  • Allow inbound 443/TCP
  • Block inbound 8787/TCP from WAN
  • Allowlist only trusted office/VPN ranges if needed

7. Verification commands

curl -i http://127.0.0.1:8787/api/state
curl -i https://admin.example.com/api/state
curl -u 'snapshot-admin:<strong-password>' https://admin.example.com/api/state
curl -I https://admin.example.com/
curl -I https://admin.example.com/tables

7b. Final preflight

Use docs/SYNOLOGY_SNAPSHOT_ADMIN_FINAL_PREFLIGHT_10.md immediately before you mark the deployment complete.

8. Completion wording

Use this exact wording when evidence is complete:

WBS-7.9 실배포 검증 완료: Synology NAS에서 tools/run_snapshot_admin_synology.sh 기반 서비스가 127.0.0.1:8787에 정상 기동되고, DSM Reverse Proxy HTTPS:443 -> HTTP 127.0.0.1:8787 경유 외부 접속이 Basic Auth와 함께 200 OK로 확인되었으며, 미인증 요청은 401 Unauthorized로 차단되었다. //tables 렌더링과 재시작 후 지속성도 확인되었고, 증빙은 docs/SYNOLOGY_SNAPSHOT_ADMIN_EVIDENCE_TEMPLATE.md 양식으로 보관되었다.

9. What to replace

  • admin.example.com if your public hostname differs
  • <strong-password> with your generated password
  • TLS certificate name if the DSM certificate uses another label