feat: add wirings - view and ui

This commit is contained in:
2026-07-14 10:05:00 +05:00
parent 3490781ad5
commit cbb97a99ce
9 changed files with 344 additions and 107 deletions
+21 -22
View File
@@ -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