feat: add wirings - view and ui
This commit is contained in:
+21
-22
@@ -46,27 +46,24 @@ src/
|
||||
├── ports.ts # IFileSystem, ITaskRepository, IConfigProvider
|
||||
├── error.ts # AppErrorVariant + AppError { variant, message }
|
||||
├── model/task.ts
|
||||
├── storage/
|
||||
│ ├── FsTaskRepository.ts
|
||||
│ ├── NodeFileSystem.ts
|
||||
│ └── VscodeConfigProvider.ts
|
||||
├── commands/ # use-cases без vscode UI
|
||||
│ ├── createTask.ts
|
||||
│ ├── openTask.ts
|
||||
│ ├── deleteTask.ts
|
||||
│ └── changeStatus.ts
|
||||
├── dashboard/ # filter/group/view + inbound message parse
|
||||
├── storage/ # infrastructure adapters
|
||||
├── commands/ # use-cases (no vscode)
|
||||
├── dashboard/ # pure view-model helpers
|
||||
├── ui/ # thin vscode adapters (input/quickpick/errors)
|
||||
│ ├── presentError.ts
|
||||
│ ├── resolveTaskId.ts
|
||||
│ ├── taskLabels.ts
|
||||
│ └── taskCommands.ts # register + run* handlers
|
||||
├── views/
|
||||
│ └── taskTreeProvider.ts # TreeView; WebView host — отдельно
|
||||
│ ├── taskTreeItem.ts
|
||||
│ └── taskTreeProvider.ts
|
||||
└── utils/
|
||||
├── uuid.ts
|
||||
└── markdown.ts # parse/serialize frontmatter
|
||||
|
||||
tests/helpers/InMemoryFileSystem.ts
|
||||
```
|
||||
|
||||
UI (input box, quick pick, open editor) — тонкие адаптеры; бизнес-логика в
|
||||
use-cases + `ITaskRepository`. Ошибки — `AppError` из `error.ts`.
|
||||
Слои: use-cases + ports — без vscode; `ui/*` — только ввод/вывод host API;
|
||||
`extension.ts` — сборка зависимостей и регистрация.
|
||||
|
||||
## План реализации
|
||||
|
||||
@@ -81,14 +78,16 @@ use-cases + `ITaskRepository`. Ошибки — `AppError` из `error.ts`.
|
||||
| **7. Kanban** | drag-n-drop |
|
||||
| **8. Публикация** | vsce publish |
|
||||
|
||||
### Фаза 4 — команды (use-cases)
|
||||
### Фаза 4 — команды (use-cases + UI wiring)
|
||||
|
||||
| Команда | Поведение |
|
||||
| -------------- | -------------------------------------------------------------- |
|
||||
| `createTask` | title + folder → defaults todo/medium; empty title / no folder |
|
||||
| `deleteTask` | folder + id → delete; not found |
|
||||
| `changeStatus` | folder + id + status → update; not found |
|
||||
| `openTask` | folder + id → path + task для editor; not found |
|
||||
| Команда | Use-case | UI adapter |
|
||||
| -------------- | -------------------------------------------------------------- | ------------------------------------------- |
|
||||
| `createTask` | title + folder → defaults todo/medium; empty title / no folder | InputBox → use-case → tree.refresh |
|
||||
| `deleteTask` | folder + id → delete; not found | confirm + TreeItem/QuickPick → use-case |
|
||||
| `changeStatus` | folder + id + status → update; not found | status QuickPick → use-case |
|
||||
| `openTask` | folder + id → path + task | TreeItem click / command → showTextDocument |
|
||||
|
||||
Ошибки use-case → `presentError` (`AppError.message`). Cancel UI ≠ `AppError`.
|
||||
|
||||
### Фаза 5 — Task Dashboard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user