d6e34973a4
feat(image-lab): generate/tasks/providers 엔드포인트 (video-lab 복제)
2026-05-23 11:41:47 +09:00
7007c90665
feat(image-lab): /api/internal/image/update webhook (video-lab 복제)
2026-05-23 11:37:33 +09:00
ca7a502514
feat(image-lab): verify_internal_key (video-lab 복제)
2026-05-23 11:34:03 +09:00
dc471ecc60
feat(image-lab): image_tasks 테이블 + CRUD (video-lab 복제)
2026-05-23 11:31:02 +09:00
e91715bf2c
docs(plan): video-studio Plan 1 — image-render 포트 18714(task-watcher 충돌 회피) + scripts 6위치 등재 step 추가
2026-05-23 11:28:21 +09:00
1e4c1b42b7
fix(insta-lab): 프롬프트 템플릿 GET이 미저장 시 코드 기본값 반환
...
slate_writer/category_seeds가 DB에 없으면 404 대신 생성 파이프라인이
실제 폴백하는 코드 기본값(card_writer.DEFAULT_PROMPT,
DEFAULT_CATEGORY_SEEDS)을 is_default=true로 반환. 편집 UI가 마스터
프롬프트를 표시·수정 가능. 미지정 이름은 여전히 404. 테스트 4건.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 02:50:33 +09:00
0190a6c206
feat(agent-office): 인스타 큐레이터 후보를 중복 제거 + 신뢰도 0.7+ 필터
...
_dedup_and_filter_keywords: score>=0.7만 남기고 동일 keyword 중복 제거
(최고 score 유지) 후 내림차순. _push_keyword_candidates가 이 필터를 거쳐
"확실한 것만" 전송, 후보 없으면 안내 메시지. 헬퍼 테스트 5건.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 02:50:33 +09:00
6ef4160da2
fix(stock): AI 뉴스 호재/악재 명확히 구분
...
(1) 부호 게이트: top_pos는 score>0, top_neg는 score<0만 분류해 양수(호재)
종목이 악재란에 채워지는 문제 제거. 중립(0)은 양쪽 모두 제외.
(2) 프롬프트: reason을 score 부호와 같은 방향 근거만 쓰도록 명시 —
호재 평가에 악재 내용, 악재 평가에 호재 내용 혼입 금지.
부호 게이트 회귀 테스트 2건 추가.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 02:50:18 +09:00
078c9f008a
fix(agent-office): /agents/{id}/tasks response에 tasks/items 양쪽 키 유지 (backward compat)
2026-05-23 02:12:50 +09:00
918151bda8
feat(agent-office): GET /agents/{id}/tasks에 task_type/days 필터 추가
2026-05-23 02:11:28 +09:00
2ce6721c35
fix(tests): fresh_db fixture가 매 test마다 db.DB_PATH 재패치 (cross-file isolation)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-23 02:08:01 +09:00
c5303151c0
feat(lotto-agent): sync_evolver_activity 매일 09:30 cron + 멱등 가드 + 3 테스트
...
- LottoAgent.sync_evolver_activity(): lotto-lab evolver status polling → agent_office.db task+log 미러링
- UTC 날짜 기준 멱등 guard (get_tasks_by_agent_date_kind 활용)
- 일요일(dow=6) → 5 clamp (lotto-lab trials는 0~5)
- 월요일 6-trial 완성 시 evolver_generate task 추가 생성
- scheduler.py: lotto_evolver_activity_sync cron 09:30 등록
- tests: creates_apply_task / idempotent / no_picks_no_task 3종
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-23 02:06:30 +09:00
ee61405ff1
feat(lotto-agent): run_weekly_evolution_report task_id wrap
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-23 01:59:56 +09:00
fef5f7a835
feat(lotto-agent): run_daily_digest task_id wrap
...
daily_digest에 create_task/update_task_status/add_log task_id wrap 적용.
test_run_daily_digest_creates_task 추가 (75 passed).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-23 01:57:40 +09:00
e47ccdb762
feat(lotto-agent): run_signal_check task_id wrap + 단위 테스트
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-23 01:55:20 +09:00
4b6996b0f7
feat(lotto-agent): get_agent_tasks 필터 + get_tasks_by_agent_date_kind 멱등 guard
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-23 01:52:05 +09:00
0f65aa53e4
docs(plan): Lotto Evolver UI + 활동 가시화 구현 plan (12 tasks)
...
Why: spec (2026-05-23-lotto-evolver-ui-design.md)을 12개 atomic task로
분해. Phase 1-2 web-backend (task_id wrap + sync cron + API 확장),
Phase 3 web-ui (Evolver 페이지 + 5 컴포넌트 + 라우터), Phase 4 배포 검증.
TDD red→green→commit + 멱등 guard 패턴.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 01:45:47 +09:00
ea3485cde6
docs(spec): Lotto Evolver UI + 에이전트 활동 가시화 (v2.1)
...
Why: v2 텔레그램 메시지의 /lotto/evolver 링크가 404 → 페이지 신설.
+ LottoAgent 활동(signal/digest/evolution/curate)이 agent_tasks에
누락된 거 보강. 모든 활동을 한 timeline에서 추적 가능.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 01:31:56 +09:00
d6366a38f3
fix(stock): 원달러 환율 등락 방향 판별 수정
...
네이버 환율 HTML에 .blind span이 "미국 USD"/"원"/"상승" 3개라
select_one(".blind")이 첫 번째 "미국 USD"를 잡아 방향 추출 실패 →
direction="" + 부호 없는 change_value → 프론트가 항상 상승으로 표시.
해외 지수와 동일하게 .head_info의 point_up/point_dn 클래스로 판별,
직속 .blind 텍스트(상승/하락)를 fallback으로 사용.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 01:17:12 +09:00
0f8c71c552
fix(lotto-evolver): previous_base diff + 일요일 cron skip + idempotent evaluate
...
- weight_evolver.evaluate_weekly: save_base_history 직전에 current_base를
previous_base로 캡처해 return dict에 포함 → formatter가 진짜 diff 표시 가능
- evaluate_weekly: same effective_from row 이미 존재 시 save skip + idempotent
return (토 22:00 lotto cron과 agent-office 22:15 재호출 중복 row 방지)
- main._run_weight_evolver_daily: 일요일(weekday=6) 도 skip — 토요일 trial을
INSERT OR REPLACE로 덮어쓰는 문제 방지
- telegram_lotto._format_evolution_report: eval_result.previous_base 우선
사용 (없으면 current_base 폴백) → diff 자기 자신 비교 버그 수정
- test_lotto_evolution_format: previous_base 키 추가 + 새 diff 검증 테스트
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:35:20 +09:00
1401c5703d
docs(CLAUDE): lotto-lab weight_evolver API/스케줄러/테이블 추가
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:27:41 +09:00
92329f6fd5
feat(lotto-evolver): LottoAgent.run_weekly_evolution_report + 토 22:15 cron
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:24:18 +09:00
d0047c2b9d
feat(lotto-evolver): 텔레그램 주간 evolution report 포맷 + 발송
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:21:23 +09:00
088944499c
feat(lotto-evolver): service_proxy.lotto_evolver_status/evaluate helpers
2026-05-22 03:17:50 +09:00
a9fdbf8a93
feat(weight-evolver): evolver API 5종 (status/history/trials/generate-now/evaluate-now)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:15:57 +09:00
f46851d481
feat(weight-evolver): cron 3종 등록 (월 generate+apply / 일 apply / 토 evaluate)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:14:23 +09:00
11b3700959
feat(weight-evolver): run_simulation이 active W를 score_combination에 전달
2026-05-22 03:12:24 +09:00
1db8a0063d
fix(weight-evolver): draws 테이블 컬럼명 n1..n6 사용 (drw_num1..6 X) + datetime import 정렬
...
evaluate_weekly()에서 당첨번호 참조 시 존재하지 않는 drw_num1..6 컬럼을
실제 테이블 컬럼명 n1..n6으로 수정. datetime/timedelta/timezone import를
파일 중간(line 128)에서 상단 stdlib imports 섹션으로 이동.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:11:37 +09:00
f017a61c79
feat(weight-evolver): DB 통합 진입점 (generate_weekly/apply_today/evaluate_weekly)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:08:56 +09:00
1694823129
feat(analyzer): score_combination에 weights 파라미터 추가 (None=기존 fixed)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 03:06:26 +09:00
a4614ebeae
feat(weight-evolver): lotto.db에 weight_trials/auto_picks/weight_base_history + CRUD
2026-05-22 03:03:51 +09:00
875e750f77
feat(weight-evolver): 순수 함수 (clamp/perturb/Dirichlet/score/base-rule)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 02:59:38 +09:00
9cb40fb4e5
test(weight-evolver): 순수 함수 + base update rule 단위 테스트
2026-05-22 02:56:06 +09:00
383f48c71e
feat(stock): GET /api/stock/holidays endpoint (SP-10 task-watcher용)
...
holidays.json(list) 노출. task-watcher가 휴장일 판정에 조회.
인증 불필요. 주말은 task-watcher가 weekday로 별도 판정.
Plan-B-Infra Phase 1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 01:40:44 +09:00
6be74737c2
docs(plan): Lotto Weight Evolver 구현 plan (13 tasks, Phase 1-4 + 배포)
...
Why: spec (2026-05-22-lotto-weight-evolver-design.md)을 13개 atomic
task로 분해. TDD red→green→commit 패턴. analyzer.score_combination
기존 fixed 가중치 보존+동적 W 옵션 추가. v1 시그널 자동 cascade.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 01:38:23 +09:00
3106716e70
docs(plan): Plan-B-Infra — NSSM 자동 시작(SP-9) + task-watcher(SP-10)
...
SP-9 NSSM 안내(ai_trade HIGH + wsl_docker NORMAL) + SP-10 task-watcher
WSL2 컨테이너(시간대 큐 토글). 박재오 결정: idle 감지 생략 — 시간대만.
8 task: NAS holidays endpoint(1) → task-watcher mode/watcher/main/compose(2-5)
→ NSSM 안내 문서(6) → 박재오 빌드+검증(7) → 메모리(8).
spec 정정: signal_v2→ai_trade, Ubuntu-22.04→24.04, web-ai-services→web-ai/services.
완료 시 spec 12 SP 전부 완료.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 01:37:36 +09:00
a126155948
docs(spec): Lotto Weight Evolver — 자율 학습 루프 설계 (v2)
...
Why: v1 능동 모니터링 위에 매주 6가지 가중치 시도+토요일 회고+
winner 기반 base 갱신 루프를 lotto-lab에 추가. 5종 시뮬 점수
가중치를 사람 없이 자가 학습.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 01:12:12 +09:00
f509339cbb
fix(lotto-signals): draw_no 모든 source에 전달 (drift baseline 회차 가드 활성화)
...
light/sim source에서도 current_draw_no를 항상 fetch해 drift/confidence
메트릭의 회차 단위 중복 push 가드가 올바르게 동작하도록 수정.
lotto_latest_draw() 헬퍼를 service_proxy에 추가하고 run_signal_check에서
source에 무관하게 최신 회차를 먼저 조회; deep_check는 curate_weekly
반환값을 우선 사용.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 08:24:02 +09:00
e72a52a950
feat(lotto): /api/lotto/best에 5종 점수 array 노출 (agent-office sim_consensus 입력)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 08:21:48 +09:00
eecaefc26d
docs(CLAUDE): agent-office 로또 능동 시그널 API/스케줄러/env 추가
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 03:21:51 +09:00
b3c0683364
feat(lotto-signals): GET signals/baselines + POST signal-check endpoint
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 03:20:08 +09:00
17321d948e
feat(lotto-signals): urgent 텔레그램 발송 + throttle/cap + daily digest 발송 + baseline_mu/sigma 노출
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 03:13:29 +09:00
8552cbc184
feat(lotto-signals): 텔레그램 urgent/digest 메시지 포맷
2026-05-20 03:07:30 +09:00
b1c786e59d
feat(lotto-signals): scheduler cron 4종 등록 (light/sim/deep/digest)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 03:04:14 +09:00
b885d02ac4
fix(tests): test_lotto_signal_runner DB_PATH 패치 (import order 안전)
...
db.DB_PATH = _TMP를 from app import db 직후에 주입해
타 테스트 파일이 app.db를 먼저 import해 DB_PATH가 동결된 경우에도
올바른 임시 경로를 사용하도록 수정.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 03:02:40 +09:00
b35fab777e
feat(lotto-signals): LottoAgent.run_signal_check/run_daily_digest (텔레그램 X)
...
Phase 2: on_command에 signal_check/light_check/sim_check/deep_check/daily_digest 액션 추가.
run_signal_check는 lotto_signals DB INSERT만, run_daily_digest는 24h 발화 카운트 반환.
텔레그램 발송은 Task 9 (Phase 3)에서 추가 예정.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 02:54:09 +09:00
43081bea0e
feat(lotto-signals): config env vars 7종 추가 (window/임계치/digest/throttle)
2026-05-20 02:51:28 +09:00
bebe5797e7
feat(lotto-signals): signal_runner orchestrator + service_proxy GET helpers
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 02:48:12 +09:00
9e1001b935
feat(lotto-signals): lotto_signals/lotto_baselines 테이블 + CRUD
...
agent-office DB에 lotto_signals, lotto_baselines 테이블 추가 및
insert/mark/query/upsert CRUD 헬퍼 함수 구현 (throttle, z-score, baseline 관리)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 02:43:27 +09:00
e5465ad136
fix(lotto-signals): pstdev→stdev (ddof=1 sample) + z=None contract 문서화
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 02:41:09 +09:00