'mysql:host=localhost;dbname=CHANGEME_DB_NAME;charset=utf8mb4', 'db_user' => 'CHANGEME_DB_USER', // 카페24 MySQL 아이디 'db_pass' => 'CHANGEME_DB_PASSWORD', // 카페24 MySQL 비밀번호 — 비밀. 어디에도 붙여넣지 마세요. // ---- 2. 저장 경로 (그대로 두세요) ----------------------------------- // 여기서 __DIR__ 은 이 config.php 가 있는 폴더(= FTP 최상위)입니다. // src/Config.php 의 기본값은 '/../storage/snapshots' 이지만 그것은 src/ 기준이라 // '..' 이 하나 더 붙습니다. 둘 다 결국 같은 <최상위>/storage/snapshots 를 가리킵니다. 'snapshot_dir' => __DIR__ . '/storage/snapshots', // ---- 3. 조절값 (기본값. 필요할 때만 바꾸세요) ------------------------ 'nonce_ttl' => 86400, // 재전송 방지 nonce 보관 시간(초) 'timestamp_window' => 300, // HMAC 허용 시간 오차(초) 'rate_limit_per_min' => 60, // 장비 1대당 분당 이벤트 상한 'ingest_ip_rate_limit_per_min' => 300, // IP 1개당 분당 이벤트 상한 (DoS 방어) 'snapshot_retention_days' => 7, // 작업자 스냅샷 보존일 (PIPA; 지나면 삭제, 0=비활성) // 이벤트 '기록'(이미지 아님) 보존일. 0 = 영구 보존이 기본값입니다 — 산업안전 조사나 // 노사 분쟁에서 수년 뒤에도 필요할 수 있는 사고 기록이라, 시스템이 임의로 지우지 않습니다. // DB 용량 제한이 있는 현장만 값을 넣으세요(예: 1095 = 3년). 스냅샷 보존일보다 훨씬 커야 합니다. 'event_retention_days' => 0, // ---- 4. 통보 (알림을 쓰려면 채우세요) ------------------------------- // 대시보드 주소입니다. 알림 메일/웹훅에 들어가는 사건 링크가 이 주소로 만들어집니다. // 비워두면 통보 디스패처(tools/dispatch_alerts.php)가 실행을 거부합니다 — // 열리지 않는 링크가 담긴 알림을 보내는 것보다 안 보내는 편이 낫기 때문입니다. 'public_base_url' => '', // 예: 'https://example.com/move_detect' // 위급/높음 이벤트를 이 시간(초) 동안 아무도 확인하지 않으면 '미확인 경보' 이벤트를 // 새로 만들어 상위 담당자에게 통보합니다. 300 = 5분. 'escalate_after_seconds' => 300, // 노드가 이 시간(초) 동안 아무 소식이 없으면 '장치 이상' 이벤트를 만듭니다. 하트비트는 // 30초 간격이라 180 이면 몇 번 걸러 먹어도 견딥니다. 짧게 줄이면 잠깐의 네트워크 // 끊김마다 알람이 울려, 정작 노드가 정말 죽었을 때 아무도 쳐다보지 않게 됩니다. 'device_stale_seconds' => 180, // 노드 성능 저하(프레임 저하·카메라 오류·발열 감속)가 이 시간(초) 이상 계속되면 // '감시 성능 저하' 이벤트를 만듭니다. 한 번 튄 값으로는 만들지 않습니다. 'degraded_sustain_seconds' => 300, // 성능 저하 판정 기준: 실제 프레임률이 target_fps 의 이 비율 아래로 떨어지면 저하로 봅니다. // 노드를 일부러 낮은 프레임으로 돌리는 현장은 target_fps 를 실제 값으로 맞추세요. // 그러지 않으면 모든 노드가 계속 '감시 성능 저하' 로 보고됩니다. 'degraded_fps_ratio' => 0.6, 'target_fps' => 12.0, // 알림 메일·웹훅에 찍히는 시각의 기준 시간대입니다. 대시보드 화면은 보는 사람의 PC // 시각을 쓰지만 알림은 서버가 만들기 때문에, 이 값이 틀리면 화면과 메일의 시각이 // 서로 다르게 나옵니다. 한국 현장은 그대로 두세요. 'timezone' => 'Asia/Seoul', // ---- 5. 용량 관리 (그대로 두세요) ----------------------------------- // 장비 성능 추이 기록 보존일. 장비 1대당 하루 약 2,880행이 쌓입니다. 'metric_retention_days' => 30, // 스냅샷 저장 공간 여유 하한(MB). 밑돌면 대시보드에 경고가 뜹니다. 0 = 검사 안 함. 'storage_min_free_mb' => 200, ];