โ† Sandbox

๐Ÿ“จ Daily Tasks ๋ฐฐ์น˜ ์ž๋™ํ™”

ํ…”๋ ˆ๊ทธ๋žจ ๋ฐฉ๋“ค์„ ๋งค์ผ ์•„์นจ ์ˆ˜์ง‘ยท์š”์•ฝํ•ด โ€œ์˜ค๋Š˜ ํ•  ์ผโ€์„ ํ…”๋ ˆ๊ทธ๋žจ DM์œผ๋กœ ๋ณด๋‚ด๊ณ , ์˜ต์‹œ๋””์–ธ vault(Git)์— ์—…๋ฌด์ผ์ง€๋กœ ๊ธฐ๋กํ•˜๋Š” ์ž๋™ํ™”. ์›น UI ์—†์ด ๋ฐฐ์น˜๋กœ๋งŒ ๋™์ž‘ํ•˜๋ฉฐ, ์ง€๊ธˆ์€ ์ฃผ๊ฐ„๋ธŒ๋ฆฌํ•‘ยท์ •์น˜ ๋ชจ๋‹ˆํ„ฐ๋งยท์œ„ํ‚ค ์ •๋น„ ์•Œ๋ฆผ๊นŒ์ง€ ๋ฐฐ์น˜ 4์ข…์œผ๋กœ ๋Š˜์—ˆ๋‹ค.

์‹คํ–‰ (cron, KST)

๋งค์ผ 07:30
run-daily.sh โ€” ์ˆ˜์ง‘โ†’์š”์•ฝโ†’์—…๋ฌด์ผ์ง€ ๊ธฐ๋กโ†’โ€œ์˜ค๋Š˜ ํ•  ์ผโ€ DM
๋งค์ผ 09:00ยท22:00
run-politics.sh โ€” ์ •์น˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฑ„๋„์„ ๋ณผํŠธ ์ž๋ฃŒ์‹ค/์ •์น˜๋ชจ๋‹ˆํ„ฐ๋ง/์— ์›๋ฌธ ๋ˆ„์ 
๊ธˆ 17:00
weekly-brief.sh โ€” ํ•œ ์ฃผ์น˜ ๊ธฐ๋ก์„ ์ฝ๋Š” ๊ธ€๋กœ(์—…๋ฌด์ผ์ง€/์ฃผ๊ฐ„ํšŒ๊ณ /)
๊ธˆ 17:30 ยท ์›” 09:00
wiki-nudge.sh โ€” ์œ„ํ‚ค ์ธ์ œ์ŠคํŠธ / ๋ฆฐํŠธ ๋ฆฌ๋“ฌ ์•Œ๋ฆผ
๋ฐฉ์‹
sandbox ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ docker exec๋กœ ๋ฐฐ์น˜ ์‹คํ–‰(๋ณ„๋„ ์ปจํ…Œ์ด๋„ˆ ์—†์Œ)

์ฃผ์š” ๊ธฐ๋Šฅ

๊ตฌ์„ฑ

์Šคํƒ
Python ยท Telethon ยท anthropic ยท icalendar ยท PyYAML
์„ค์ •
config.yaml + ๋น„๋ฐ€๊ฐ’ env(TG_*, ANTHROPIC_API_KEY, VAULT_GIT_TOKEN)
์†Œ์Šค
sandbox/Labs/daily_tasks ยท ๋ฌธ์„œ docs/DAILY_TASKS.mdยทDESIGN.md
์ƒํƒœ
state/(์ปค์„œยท๋กœ๊ทธ), ์˜ต์‹œ๋””์–ธ clone(vault-clone, ~/vault์™€ ๋ณ„๋„)

โ€ป ์›น UI๊ฐ€ ์—†๋Š” ๋ฐฐ์น˜ ์ž๋™ํ™”์ž…๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” ๋ช…์„ธ๋งŒ ํ‘œ์‹œํ•˜๋ฉฐ, ์‹ค์ œ ์‚ฐ์ถœ๋ฌผ์€ ํ…”๋ ˆ๊ทธ๋žจ DM๊ณผ ์˜ต์‹œ๋””์–ธ ์—…๋ฌด์ผ์ง€๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ clone์€ ๋งค ์‹คํ–‰๋งˆ๋‹ค git reset --hard๊ฐ€ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ~/vault์™€ ๊ฒฝ๋กœ๋ฅผ ๋ถ„๋ฆฌํ•ด ๋‘ก๋‹ˆ๋‹ค.