61 lines
1.4 KiB
YAML
61 lines
1.4 KiB
YAML
formula_id: WBS_10_DOTNET_SCHEDULER_CONTRACT_V1
|
|
owner: QuantEngine
|
|
status: draft
|
|
goal: "스케줄러 상태 전이, 의존성, 재시도, 감사 추적을 표준화한다."
|
|
|
|
state_machine:
|
|
states:
|
|
- pending
|
|
- running
|
|
- succeeded
|
|
- failed
|
|
- retrying
|
|
- blocked
|
|
allowed_transitions:
|
|
pending: [running, blocked]
|
|
running: [succeeded, failed, retrying, blocked]
|
|
failed: [retrying, blocked]
|
|
retrying: [running, failed, blocked]
|
|
succeeded: []
|
|
blocked: []
|
|
|
|
job_definitions:
|
|
- job_id: daily-collection
|
|
cron: "0 9 * * *"
|
|
lease_owner: collection
|
|
timeout_policy: "2h"
|
|
dependency: gather-trading-data
|
|
- job_id: hourly-price-update
|
|
cron: "0 9,11,13,15 * * 1-5"
|
|
lease_owner: price-update
|
|
timeout_policy: "30m"
|
|
dependency: price-feed
|
|
- job_id: weekly-report
|
|
cron: "0 17 * * 5"
|
|
lease_owner: report
|
|
timeout_policy: "1h"
|
|
dependency: report-generator
|
|
- job_id: monthly-optimization
|
|
cron: "0 2 1 * *"
|
|
lease_owner: optimization
|
|
timeout_policy: "3h"
|
|
dependency: optimizer
|
|
|
|
audit_fields:
|
|
- JobId
|
|
- RunId
|
|
- State
|
|
- StartedAt
|
|
- FinishedAt
|
|
- ResourceKey
|
|
- Reason
|
|
|
|
idempotency:
|
|
required: true
|
|
key_pattern: "{job_id}:{resource_key}:{yyyyMMddHHmm}"
|
|
|
|
notes:
|
|
- "상태 전이와 감사 추적은 append-only JSONL로 남긴다."
|
|
- "실행 재개는 retrying 이후에만 허용한다."
|
|
- "숫자 계산은 여기서 하지 않는다."
|