71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const JOBS_FILE = path.join(process.env.HOME, '.openclaw/cron/jobs.json');
|
|
|
|
// V2: 자기평가를 출력 형식에 포함 (강제)
|
|
const SELF_REVIEW_V2 = `
|
|
|
|
**📊 자기평가 (아래 형식으로 반드시 출력):**
|
|
\`\`\`
|
|
✅/⚠️ 완성도: [X/5] (누락 항목 명시)
|
|
✅/⚠️ 정확성: [OK] or [WARNING: XXX]
|
|
✅/⚠️ 톤: [Jarvis] or [ChatGPT-like]
|
|
✅/⚠️ 간결성: [X emojis, Y lines]
|
|
💡 개선: [다음엔 XXX를 YYY하게]
|
|
\`\`\``;
|
|
|
|
const CRONS_TO_UPDATE = {
|
|
'b81588fa-5111-41fb-871f-d767dc1f783b': { name: 'Daily Stock Briefing' },
|
|
'b9662f08-36ee-4e6d-ab9d-fd2d48f21737': { name: '모닝 브리핑' },
|
|
'bd8e8994-3646-4f7a-b994-4f3ae9f1890a': { name: 'Daily Wrap-up' },
|
|
'cc9ddcf5-734c-4e8e-b0e0-51884f8a5196': { name: 'Trend Hunter' },
|
|
'41e625c8-59a5-4df5-bd97-2dbc5282eda7': { name: 'IT/AI 뉴스 브리핑' },
|
|
'6b2da787-7df8-49e8-b506-9139f66f86ca': { name: '조식 알림' },
|
|
'422b96a7-8931-43ba-84ce-a55b1b9a6477': { name: '취침 알림' },
|
|
'e16e5163-9caf-444b-b74d-0cbebaed013b': { name: '부부 약 먹기 알림' },
|
|
'dfa2bf81-fa94-45b2-a154-b7e4a78fc173': { name: '관훈 미확정 저녁' },
|
|
'270a5dc7-f19e-402f-ae3a-79c628a3cde8': { name: 'Monthly DCA Reminder' },
|
|
'22c071ae-598f-48da-b002-4d1fd395bf0a': { name: '실적 발표 캘린더' },
|
|
'41e5363d-6b32-48c2-9bf6-738d950c6d6c': { name: '주간 요약 리포트' },
|
|
'ddef1a57-21e8-4614-991c-a3f29177e8ee': { name: '월간 비용 추적' },
|
|
'a98f06f7-a084-4993-b352-358d00ed340f': { name: 'TQQQ 15분 모니터링' }
|
|
};
|
|
|
|
try {
|
|
const data = JSON.parse(fs.readFileSync(JOBS_FILE, 'utf8'));
|
|
|
|
let updated = 0;
|
|
|
|
data.jobs.forEach(job => {
|
|
const config = CRONS_TO_UPDATE[job.id];
|
|
if (!config) return;
|
|
|
|
let message = job.payload.message || '';
|
|
|
|
// V1 자기평가 섹션 제거 (---\n\n**🔍 자기평가 ... 로 시작하는 부분)
|
|
const v1Pattern = /\n---\n\n\*\*🔍 자기평가[\s\S]*$/;
|
|
if (v1Pattern.test(message)) {
|
|
message = message.replace(v1Pattern, '');
|
|
console.log(`[REMOVE V1] ${config.name}`);
|
|
}
|
|
|
|
// V2 자기평가 추가
|
|
message = message + SELF_REVIEW_V2;
|
|
|
|
job.payload.message = message;
|
|
job.updatedAtMs = Date.now();
|
|
updated++;
|
|
console.log(`[UPDATE V2] ${config.name}`);
|
|
});
|
|
|
|
fs.writeFileSync(JOBS_FILE, JSON.stringify(data, null, 2));
|
|
console.log(`\n✅ ${updated}개 크론 V2 업데이트 완료`);
|
|
|
|
} catch (error) {
|
|
console.error('❌ 에러:', error.message);
|
|
process.exit(1);
|
|
}
|