@echo off if not defined GYXX_PYTHON set "GYXX_PYTHON=python" REM Monthly summary: run on 1st of each month at 08:00 REM 1. Compute last month date range REM 2. Query PG for notes per style REM 3. For each style: note analysis + LLM cross-compare + Feishu doc + write back + save to DB REM Register: schtasks /Create /SC MONTHLY /D 1 /TN YingxiaoYunying_MonthlySummary /TR %PROJECT_DIR%\data\tools\monthly_summary.bat /ST 08:00 /F setlocal for %%I in ("%~dp0..\..") do set "PROJECT_DIR=%%~fI" if not defined GYXX_DATA_ROOT ( if not defined GYXX_PROJECT_ROOT ( echo ERROR: GYXX_DATA_ROOT or GYXX_PROJECT_ROOT must be defined. 1>&2 exit /b 3 ) set "GYXX_DATA_ROOT=%GYXX_PROJECT_ROOT%\var" ) set LOG_DIR=%GYXX_DATA_ROOT%\logs\content_marketing\scheduled set PYTHON=%GYXX_PYTHON% where %PYTHON% >nul 2>&1 || set PYTHON=python if not exist "%LOG_DIR%" mkdir "%LOG_DIR%" set TS=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% set TS=%TS: =0% set LOG_FILE=%LOG_DIR%\monthly_summary_%TS%.log echo === Monthly summary started at %date% %time% === > "%LOG_FILE%" echo PROJECT_DIR=%PROJECT_DIR% >> "%LOG_FILE%" cd /d "%PROJECT_DIR%" call %PYTHON% -u -X utf8 monthly_summary_all.py --max-workers 4 >> "%LOG_FILE%" 2>&1 set RC=%ERRORLEVEL% echo monthly_summary exit=%RC% >> "%LOG_FILE%" echo === Monthly summary finished at %date% %time% (rc=%RC%) === >> "%LOG_FILE%" endlocal