50 lines
2 KiB
Markdown
50 lines
2 KiB
Markdown
---
|
|
domain: api
|
|
last_rule_review_commit: no-commit-yet
|
|
last_rule_updated_at: 2026-05-24
|
|
---
|
|
|
|
# api
|
|
|
|
## 목적 / 책임
|
|
|
|
클라이언트-facing socket API endpoint를 제공한다. proto-socket server lifecycle, connection setup, heartbeat timing, and API configuration을 이 경계에서 관리한다.
|
|
|
|
## 포함 경로
|
|
|
|
- `services/api/cmd/alt-api/` - API service entrypoint
|
|
- `services/api/internal/config/` - API environment configuration
|
|
- `services/api/internal/socket/` - proto-socket server construction
|
|
- `services/api/go.mod` - API module dependencies
|
|
|
|
## 제외 경로
|
|
|
|
- `services/worker/` - long-running jobs and backtest execution
|
|
- `packages/contracts/` - protobuf schema source
|
|
- `packages/domain/` - transport-free domain vocabulary
|
|
- `apps/client/` - UI and client navigation
|
|
|
|
## 주요 구성 요소
|
|
|
|
- `config.Config` - host, port, socket path, heartbeat interval, heartbeat wait
|
|
- `config.Load` - environment variable parsing with local fallback defaults
|
|
- `socket.NewServer` - proto-socket `WsServer` construction
|
|
- `cmd/alt-api/main.go` - signal handling and service lifecycle
|
|
|
|
## 유지할 패턴
|
|
|
|
- Read configuration from environment variables with explicit local defaults.
|
|
- Keep process lifecycle in `cmd/alt-api`; keep reusable socket construction under `internal/socket`.
|
|
- Treat proto-socket as the transport abstraction; ALT payload parsing should be introduced deliberately from contracts.
|
|
|
|
## 다른 도메인과의 경계
|
|
|
|
- **contracts**: API routes and parses messages according to contracts, but contract source stays in `packages/contracts`.
|
|
- **worker**: API may enqueue or observe worker jobs, but should not run long backtest/import work inline.
|
|
- **client**: API serves client sessions; client UI state and navigation stay in Flutter.
|
|
|
|
## 금지 사항
|
|
|
|
- Do not add direct Flutter/client assumptions to API internals.
|
|
- Do not put scheduled job loops or heavy data processing in the API service.
|
|
- Do not bypass proto-socket for the main client session path without an explicit architecture update.
|