API domain에 workerclient proxy와 handler responsibility를 추가하고, worker domain에 backtest engine, storage, provider, socket surface를 명시한다. Client domain에 socket integration과 push integration 경계를 보강한다. Operations domain에 agent-test/local과 bin 명령어를 포함하며, operations domain table에 agent-test/local 경계를 추가한다. 로드맵에 Operator Runtime Reliability Refactor Milestone를 추가하고 현재 활성 Milestone으로 설정하여 Flutter Operator Console 전에 선행할 작업으로 변경한다.
5.8 KiB
5.8 KiB
ALT 프로젝트 규칙
응답 언어
- 기본 응답은 한국어로 작성한다.
- 코드 식별자, 명령어, 경로, 에러 메시지는 원문 영어를 유지한다.
- 설계 선택을 설명할 때는 ALT의 quant workspace 맥락과 연결해서 짧게 근거를 남긴다.
프로젝트 개요
ALT는 개인 quant system workspace다. Go 서비스와 도구는 루트 go.work로 묶고, Flutter가 web/mobile/desktop 클라이언트 표면을 담당한다. 실시간 전송은 sibling workspace인 ../proto-socket/go의 proto-socket 모듈을 사용하며, ALT 애플리케이션 계약은 packages/contracts/proto의 protobuf schema가 원천이다.
주요 구조
| 경로 | 역할 |
|---|---|
services/api/ |
클라이언트-facing proto-socket API endpoint |
services/worker/ |
import, normalization, backtest, scheduled job worker surface |
apps/cli/ |
로컬/운영자 작업용 Go CLI |
apps/client/ |
Flutter client for web/mobile/desktop |
packages/contracts/ |
ALT protobuf contracts and compatibility notes |
packages/domain/ |
shared Go domain model for market and backtest concepts |
deployments/local/ |
local PostgreSQL and Redis development environment |
bin/ |
workspace-level helper entrypoints |
기술 스택
- Go 1.22 multi-module workspace via
go.work. git.toki-labs.com/toki/proto-socket/gois consumed through a local replace to../proto-socket/go.services/apiusesnhooyr.io/websocketthrough proto-socket server/client wrappers.- Contracts are protobuf schemas under
packages/contracts/proto/alt/v1. - Flutter client uses Material 3, Riverpod, and
go_router. - Local infrastructure uses Docker Compose with PostgreSQL 17 and Redis 7.
통신 규칙
- ALT가 소유한 runtime boundary 사이의 application message 통신은 proto-socket과
packages/contracts/proto의 ALT protobuf payload로 통일한다. - 기본 runtime topology는
client -> services/api -> services/worker다. client는 worker를 직접 제어하지 않고services/api를 단일 operator-facing control plane으로 사용한다. - client-api, api-worker, worker-sidecar처럼 별도 process나 service 사이에서 ALT domain request/response, event, command를 주고받으면 기본값은 proto-socket이다.
- 같은 process 안의 함수 호출, Go interface, Dart provider 호출은 runtime 통신부로 보지 않는다.
- PostgreSQL SQL, Redis command/queue/cache, filesystem, process/stdout, local migration/codegen/dev tooling은 해당 목적의 native protocol을 사용한다.
- KIS, Mattermost, Firebase, Nexo plugin, OS platform channel처럼 ALT 외부 시스템이나 platform integration과 통신할 때는 해당 외부 protocol을 adapter 경계 안에서 사용한다.
- proto-socket이 아닌 ALT-owned runtime protocol을 새로 도입하려면 구현 전에 프로젝트 규칙 또는 명시적 architecture 문서를 갱신하고 예외 사유를 남긴다.
프로젝트 컨벤션
- 루트 작업은
bin/dev,bin/test,bin/lint,bin/build를 우선 사용한다. - Go 모듈 경계를 넘는 import는
go.work에 등록된 모듈 기준으로 유지한다. - protobuf generated client/server 코드는 schema에서 생성하고 손으로 편집하지 않는다.
packages/domain은 business vocabulary와 value object를 담고, transport나 persistence detail에 의존하지 않는다.services/api는 socket/session boundary를 담당하고, domain 계산이나 worker job 실행을 직접 떠안지 않는다.services/api는 얇은 control plane으로서 client-facing 요청을 받고 worker 실행/조회 경계로 중계한다.services/worker는 데이터 수집, 정규화, backtest 실행, scheduled job처럼 오래 걸리거나 비동기적인 일을 담당한다.- Flutter client는
lib/src/app에 앱 shell/router를 두고, 기능 화면은lib/src/features/feature-name/presentation패턴 아래에 둔다. - runtime configuration은 환경변수를 우선하고 로컬 개발 fallback을 둔다.
운영 UI 구현 게이트
- ALT 운영 기능은 먼저 화면 없이 CLI, terminal output, YAML scenario, log, test fixture처럼 headless 경로로 구성과 결과를 검증한다.
- Flutter 실화면 구현은 해당 기능의 API/worker/domain 경계와 headless 검증 경로가 먼저 안정화된 뒤에 시작한다.
- 운영 화면 구현 Milestone은 화면 wireframe 또는 동등한 화면 정의 산출물이 준비되고 사용자 승인 기준이 문서화되어야
구현 잠금을 해제할 수 있다. - wireframe 없이 agent가 임의로 dashboard depth, navigation, card layout, chart, form 흐름을 확정하지 않는다.
- Flutter 작업 중 화면 구현이 아닌 app shell, provider boundary, generated contract 연결, headless smoke support는 위 게이트를 깨는 실화면 구현으로 보지 않는다.
도메인 매핑
| 경로 패턴 | 도메인 | rules.md |
|---|---|---|
packages/domain/** |
domain-model | agent-ops/rules/project/domain/domain-model/rules.md |
packages/contracts/** |
contracts | agent-ops/rules/project/domain/contracts/rules.md |
services/api/** |
api | agent-ops/rules/project/domain/api/rules.md |
services/worker/** |
worker | agent-ops/rules/project/domain/worker/rules.md |
apps/client/** |
client | agent-ops/rules/project/domain/client/rules.md |
apps/cli/**, bin/**, deployments/local/**, agent-test/local/**, go.work, go.work.sum, .gitignore |
operations | agent-ops/rules/project/domain/operations/rules.md |
검증 명령
- 전체 테스트:
bin/test - 전체 lint/analyze:
bin/lint - 전체 build:
bin/build - 로컬 실행 안내:
bin/dev
스킬 라우팅
현재 프로젝트 전용 skill은 만들지 않는다. 반복 작업이 안정되면 agent-ops/skills/project/ 아래에 추가한다.