feat(m9): todo/kanban with DnD, assignee notify, completion, tests, e2e

- TodoRepository (column CRUD, item CRUD, soft-delete, ordering, maxOrderIndex,
  project isolation) + TodoService (lazy standard-column init, member/admin
  permission, create/update/move/toggleComplete/delete, todo_assigned notify,
  todo_created/updated/completed activity logs, SSE todo.updated)
- APIs: columns + items (GET/POST/PATCH/DELETE), toggleComplete + move
- KanbanBoard client (HTML5 drag&drop move, new task per column, complete),
  todos page, ProjectNav ToDo link
- Unit tests (TodoRepository, TodoService) + e2e todo-kanban
This commit is contained in:
Ken Yasue
2026-06-25 01:54:24 +02:00
parent d2a4d56543
commit 385b251cc7
13 changed files with 1399 additions and 0 deletions

View File

@ -3,6 +3,7 @@ const NAV_ITEMS = [
{ href: '/board', label: '掲示板' },
{ href: '/notes', label: 'メモ' },
{ href: '/chat', label: 'チャット' },
{ href: '/todos', label: 'ToDo' },
{ href: '/members', label: 'メンバー' },
{ href: '/activity', label: 'アクティビティ' },
{ href: '/settings', label: '設定' },
@ -22,6 +23,7 @@ export function ProjectNav({
| 'board'
| 'notes'
| 'chat'
| 'todos'
| 'members'
| 'activity'
| 'settings';
@ -31,6 +33,7 @@ export function ProjectNav({
board: active === 'board',
notes: active === 'notes',
chat: active === 'chat',
todos: active === 'todos',
members: active === 'members',
activity: active === 'activity',
settings: active === 'settings',