{
  "python_exe": "C:\\Users\\owner\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
  "project_root": "D:\\honghee\\blog_api",
  "manager_host": "0.0.0.0",
  "manager_port": 9200,
  "open_browser_on_start": true,
  "check_interval_seconds": 10,
  "external_ports": [
    {
      "key": "apache",
      "name": "Apache 웹서버",
      "host": "127.0.0.1",
      "port": 80,
      "protocol": "http",
      "url": "http://127.0.0.1/"
    },
    {
      "key": "filezilla",
      "name": "FileZilla FTP",
      "host": "127.0.0.1",
      "port": 21,
      "protocol": "tcp",
      "url": ""
    }
  ],
  "services": [
    {
      "key": "blog_analysis_api",
      "name": "블로그 분석 API",
      "script": "D:\\honghee\\blog_api\\app.py",
      "port": 5000,
      "auto_start": true,
      "cwd": "D:\\honghee\\blog_api",
      "health_url": "http://127.0.0.1:5000/"
    },
    {
      "key": "shorts_ai_api",
      "name": "숏츠 생성 API",
      "script": "D:\\honghee\\blog_api\\shorts_ai_api.py",
      "port": 9000,
      "auto_start": true,
      "cwd": "D:\\honghee\\blog_api",
      "health_url": "http://127.0.0.1:9000/health"
    },
    {
      "key": "realestate_content_api",
      "name": "부동산 콘텐츠 API",
      "script": "D:\\honghee\\blog_api\\realestate_api.py",
      "port": 9100,
      "auto_start": true,
      "cwd": "D:\\honghee\\blog_api",
      "health_url": "http://127.0.0.1:9100/health"
    }
  ],
  "jobs": {
    "day_pipeline": [
      {
        "name": "야간 수집/상세/초안 1회",
        "cmd": [
          "C:\\Users\\owner\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
          "jobs\\daily_pipeline_runner.py",
          "--limit-realtors",
          "1000",
          "--fetch-limit",
          "1000",
          "--draft-limit",
          "30",
          "--draft-buffer",
          "30",
          "--replenish-count",
          "1",
          "--fast-max-pages",
          "5",
          "--end-hour",
          "23",
          "--end-minute",
          "59"
        ],
        "cwd": "D:\\honghee\\blog_api"
      }
    ],
    "night_publish": [
      {
        "name": "주간 발행 07:00~23:00",
        "cmd": [
          "C:\\Users\\owner\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
          "workers\\publish_worker.py",
          "--limit",
          "1000",
          "--sleep",
          "60",
          "--until-time",
          "23:00",
          "--smart-sleep",
          "--per-realtor-daily-limit",
          "1"
        ],
        "cwd": "D:\\honghee\\blog_api"
      }
    ],
    "test_2_realtors": [
      {
        "name": "2개 중개사 파이프라인 테스트",
        "cmd": [
          "C:\\Users\\owner\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
          "jobs\\daily_pipeline_runner.py",
          "--limit-realtors",
          "2",
          "--fetch-limit",
          "50",
          "--draft-limit",
          "30",
          "--draft-buffer",
          "30",
          "--replenish-count",
          "1",
          "--fast-max-pages",
          "5"
        ],
        "cwd": "D:\\honghee\\blog_api"
      },
      {
        "name": "테스트 블로그 발행",
        "cmd": [
          "C:\\Users\\owner\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
          "workers\\publish_worker.py",
          "--limit",
          "2",
          "--sleep",
          "60",
          "--per-realtor-daily-limit",
          "1"
        ],
        "cwd": "D:\\honghee\\blog_api"
      }
    ]
  },
  "schedules": [
    {
      "key": "night_publish",
      "name": "주간 발행 07:00~23:00",
      "enabled": true,
      "times": [
        "07:00"
      ],
      "max_run_minutes": 960
    },
    {
      "key": "day_pipeline",
      "name": "야간 수집/상세/초안 1회",
      "enabled": true,
      "times": [
        "23:10"
      ],
      "max_run_minutes": 240
    }
  ],
  "scheduler_tick_seconds": 20
}