alt/services/worker
toki a5710b20ff feat(backtest): run canceled status support and phase progress update
Backtest run handler에 context.Canceled 상태 전이를 추가한다.
executor가 context.Canceled를 반환하면 run 상태를 canceled로 설정한다.
에러 메시지 포맷팅도 동적 상태로 변경했다.

agent-roadmap을 업데이트한다.
Backtest Engine Baseline을 완료 처리하고 archive로 이동한다.
Backtest Analysis Surface를 진행 중 상태로 전환한다.
Task 검증 조건을 추가하고 완료 기준을 정리한다.

테스트 추가:
- context.Canceled 전이 테스트를 추가한다.
2026-05-30 12:53:34 +09:00
..
cmd add worker data-check command and datacheck package, remove outdated plan/review docs 2026-05-29 20:52:32 +09:00
internal feat(backtest): run canceled status support and phase progress update 2026-05-30 12:53:34 +09:00
testdata/providers/kis feat: Korea daily data foundation task and documentation updates 2026-05-29 19:28:03 +09:00
go.mod feat: worker persistence layer and socket session updates 2026-05-28 19:05:10 +09:00
go.sum feat: worker persistence layer and socket session updates 2026-05-28 19:05:10 +09:00
README.md feat: Korea daily data foundation task and documentation updates 2026-05-29 19:28:03 +09:00
sqlc.yaml feat: worker persistence layer and socket session updates 2026-05-28 19:05:10 +09:00
tools.go feat: worker persistence layer and socket session updates 2026-05-28 19:05:10 +09:00

ALT Worker Service

The Worker service handles background tasks, such as market data imports, data normalization, and backtest execution.

Market Data Provider Boundary

ALT starts with KIS/Korea daily bars as the first provider and venue validation path, but the worker boundary should keep the canonical model equity venue-agnostic. KRX-specific or KIS-specific fields belong in provider adapters, venue metadata, raw payload storage, or explicit extension metadata instead of becoming required core columns.

Crypto is out of scope for the current stock-oriented market model. If a later crypto data domain is added, it may reuse generic import-run, provider mapping, raw-payload, and OHLCV pipeline concepts, but pair/funding/24-7 market semantics should not be forced into the equity model.

Provider Reference and Mock Fixtures

KIS adapter mapping should start from the locally cached official sample repository, not from a required Postman export. The cache path is documented in the private rules because it is local machine state, not an ALT source dependency.

  • Store mock-provider request/response fixtures under services/worker/testdata/providers/kis/.
  • Remove app keys, tokens, account numbers, personal identifiers, and live secret references before committing any fixture.
  • Prefer JSON for initial adapter mapping because it is readable, diffable, and close to the KIS REST payload shape.
  • Consider SQLite only after the fixture corpus is large enough to need indexed lookup or query-based comparison.

Provider credentials are not required for mock tests. When live KIS smoke tests are added later, credentials should be supplied at runtime through 1Password CLI or a later secret-provider implementation. Do not use checked-in .env files for provider secrets.

Redis Usage Guidelines

Purpose

Redis is used as a lightweight, high-performance messaging, coordination, and caching layer for background jobs. It is not a source of truth. All critical system states and historical datasets reside in PostgreSQL.

Key Prefixing Standard

To avoid key collisions and maintain organization, all keys created by the worker must use the designated helper package internal/rediskeys and strictly follow the format:

<prefix>:worker:<purpose>:<id>
  • <prefix>: Configured via ALT_REDIS_KEY_PREFIX (defaults to alt). This segregates environments or local dev workspaces.
  • worker: Hardcoded namespace denoting worker-owned keys.
  • <purpose>: Lowercase segment describing the domain or usage (e.g. job, lock, cache).
  • <id>: Unique identifier for the specific object (e.g., job ID, lock name).

Always utilize rediskeys.WorkerKey(prefix, purpose, id) instead of assembling key strings manually.

Configuration

Environment variables can be used to customize worker runtime:

Variable Description Default
DATABASE_URL PostgreSQL connection string postgres://alt:alt@localhost:5432/alt?sslmode=disable
REDIS_URL Redis connection string redis://localhost:6379/0
ALT_REDIS_KEY_PREFIX Namespace prefix for Redis keys alt
ALT_WORKER_QUEUE Target worker queue to consume from default