takt/docs/vertical-slice-migration-map.md
2026-02-02 13:06:12 +09:00

112 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Vertical Slice + Core ハイブリッド構成 マッピング案
## 目的
- CLI中心の機能コマンドを slice 化し、変更影響を局所化する。
- Workflow Engine などのコアは内向き依存Cleanで保護する。
- Public API`index.ts`)で境界を固定し、深い import を避ける。
## 依存ルール(簡易)
- `core` は外側に依存しない。
- `infra``core` に依存できる。
- `features``core` / `infra` / `shared` に依存できる。
- `app` は配線専用(入口)。
## 移行マップ
### 1) app/cliCLI入口・配線
```
src/cli/index.ts -> src/app/cli/index.ts
src/cli/program.ts -> src/app/cli/program.ts
src/cli/commands.ts -> src/app/cli/commands.ts
src/cli/routing.ts -> src/app/cli/routing.ts
src/cli/helpers.ts -> src/app/cli/helpers.ts
```
- `app/cli/index.ts` は CLI エントリのみ。
- ルーティングは `features` の Public API を呼ぶだけにする。
### 2) featuresコマンド単位
```
src/commands/index.ts -> src/features/tasks/index.ts
src/commands/runAllTasks.ts -> src/features/tasks/run/index.ts
src/commands/watchTasks.ts -> src/features/tasks/watch/index.ts
src/commands/addTask.ts -> src/features/tasks/add/index.ts
src/commands/listTasks.ts -> src/features/tasks/list/index.ts
src/commands/execution/selectAndExecute.ts -> src/features/tasks/execute/selectAndExecute.ts
src/commands/execution/types.ts -> src/features/tasks/execute/types.ts
src/commands/pipeline/executePipeline.ts -> src/features/pipeline/execute.ts
src/commands/pipeline/index.ts -> src/features/pipeline/index.ts
src/commands/switchWorkflow.ts -> src/features/config/switchWorkflow.ts
src/commands/switchConfig.ts -> src/features/config/switchConfig.ts
src/commands/ejectBuiltin.ts -> src/features/config/ejectBuiltin.ts
```
- `features/tasks` は run/watch/add/list の共通入口を持つ。
- `features/pipeline` は pipeline モードの専用 slice。
- `features/config` は設定系switch/ejectを集約。
### 3) core/workflow中核ロジック
```
src/workflow/engine/* -> src/core/workflow/engine/*
src/workflow/instruction/* -> src/core/workflow/instruction/*
src/workflow/evaluation/* -> src/core/workflow/evaluation/*
src/workflow/types.ts -> src/core/workflow/types.ts
src/workflow/constants.ts -> src/core/workflow/constants.ts
src/workflow/index.ts -> src/core/workflow/index.ts
```
- `core/workflow/index.ts` だけを Public API として使用。
- `engine/`, `instruction/`, `evaluation/` 間の依存は内向きcore 内のみ)。
### 4) core/models型・スキーマ
```
src/models/schemas.ts -> src/core/models/schemas.ts
src/models/types.ts -> src/core/models/types.ts
src/models/workflow-types.ts -> src/core/models/workflow-types.ts
src/models/index.ts -> src/core/models/index.ts
```
- `core/models/index.ts` を Public API 化。
### 5) infra外部I/O
```
src/providers/* -> src/infra/providers/*
src/github/* -> src/infra/github/*
src/config/* -> src/infra/config/*
src/task/* -> src/infra/task/*
src/utils/session.ts -> src/infra/fs/session.ts
src/utils/git/* -> src/infra/git/*
```
- GitHub API / FS / Git / Provider など外部依存は `infra` に集約。
### 6) shared横断ユーティリティ
```
src/utils/error.ts -> src/shared/utils/error.ts
src/utils/debug.ts -> src/shared/utils/debug.ts
src/utils/ui.ts -> src/shared/ui/index.ts
src/utils/* -> src/shared/utils/* (外部I/O以外)
```
- 共有は `shared` に集めるが、肥大化は避ける。
### 7) docs参照パス修正
```
docs/data-flow.md -> パス参照を app/core/features に合わせて更新
`src/cli.ts` 参照 -> `src/app/cli/index.ts` に更新
`src/workflow/state-manager.ts` 参照 -> `src/core/workflow/engine/state-manager.ts`
`src/workflow/transitions.ts` 参照 -> `src/core/workflow/engine/transitions.ts`
```
## Public API ルール
- `core/*``features/*`**必ず `index.ts` から import**
- 深い import`../engine/xxx` など)は禁止。
## 移行順序(推奨)
1. `core/` に workflow + models を集約
2. `infra/` に外部I/Oを移動
3. `features/` にコマンド単位で集約
4. `app/cli` にエントリを移す
5. Public API を整理し、深い import を排除
6. docs の参照を更新
## 備考
- `src/workflow/index.ts``core/workflow/index.ts` に移し、外部からはここだけを参照。
- `src/models/workflow.ts` のようなプレースホルダは廃止するか、`core/models/index.ts` へ統合する。