P2 셀프서비스 리포트 — 기간 일반화·템플릿 관리·자동생성 스케줄·EU레인지 클린범위 #2
Reference in New Issue
Block a user
Delete Branch "feat/p0-selfservice-report"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
P2 (A·B·C·D) + 부가
period=DAILY|MONTHLY|YEARLY윈도 분기(엔진/토큰/요약 UI). 오타 period는 명시적 error.report_template스케줄 컬럼, dedup 중복0·다운타임 복구).tag_metadataEU레인지(eulo/euhi) 우선, 없으면 역할 기본값 폴백(947태그 적재 확인).report_run.out_blob이력 조회/다운로드(스케줄 자동생성본 회수).🤖 Generated with Claude Code
- IReportTemplateStore.ListAsync(생성이력 집계 LEFT JOIN)/DeleteAsync(report_run CASCADE). - GET /api/report/templates, DELETE /api/report/template/{id}. - 엑셀폼 패널: 매번 재업로드 → 등록(1회) → 저장 목록에서 라디오 선택 → 생성. 생성횟수·최근시각 표시, 삭제 버튼, 생성 후 목록 자동 갱신. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>- report_template에 schedule_enabled/period/hour/source 컬럼(ALTER IF NOT EXISTS, p0_report.sql + 서비스 EnsureSchema 멱등). - Hc900ReportScheduleService: 매 N초 활성 템플릿마다 완료된 기간(anchor)을 lookback 내 산출 → report_run 성공기록 없으면 FillAsync 생성·기록. 중복 0(HasSuccessfulRun dedup)·다운타임 자동복구. 윈도는 셀 토큰 period=가 결정. - IReportTemplateStore.UpdateSchedule/HasSuccessfulRun, ListAsync에 스케줄 컬럼. - PUT /api/report/template/{id}/schedule (period/hour 검증). - UI: 목록에 스케줄 상태 표시 + 선택 템플릿 스케줄 편집기. - appsettings Report:Schedule (간격·catchup) 추가. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>- IReportTemplateStore.ListRunsAsync/GetRunBlobAsync (+ ReportRunInfo DTO). - GET /api/report/template/{id}/runs (최신순), GET /api/report/run/{runId}/download. - UI: 선택 템플릿 '생성 이력' expander — 기간/소스/상태/시각 + 과거본 다운로드 링크. 스케줄 자동생성본도 여기서 회수(기존엔 생성·기록만 되고 조회 불가). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>