feat(m11): calendar + milestones with progress calc, tests, e2e

- CalendarRepository (event CRUD, range query, soft-delete, project isolation)
  + MilestoneRepository (CRUD, findToDosByMilestone) + ScheduleService
  (aggregated getCalendarEvents = custom events+milestones+todos in range,
  milestone CRUD, milestone_updated activity, progress auto-calc 0-100)
- APIs: calendar events GET/POST/PATCH/DELETE, milestones GET/POST/PATCH +
  progress
- Screens: calendar list view + CalendarEventForm, milestones list with
  progress bars + MilestoneForm, ProjectNav links
- Unit tests (CalendarRepository, MilestoneRepository, ScheduleService incl.
  progress calc 0/33/100) + e2e calendar
This commit is contained in:
Ken Yasue
2026-06-25 02:11:10 +02:00
parent d9d2ba9819
commit 31d8ad1325
17 changed files with 1598 additions and 0 deletions

View File

@ -5,6 +5,8 @@ const NAV_ITEMS = [
{ href: '/chat', label: 'チャット' },
{ href: '/todos', label: 'ToDo' },
{ href: '/files', label: 'ファイル' },
{ href: '/calendar', label: 'カレンダー' },
{ href: '/milestones', label: 'マイルストーン' },
{ href: '/members', label: 'メンバー' },
{ href: '/activity', label: 'アクティビティ' },
{ href: '/settings', label: '設定' },
@ -26,6 +28,8 @@ export function ProjectNav({
| 'chat'
| 'todos'
| 'files'
| 'calendar'
| 'milestones'
| 'members'
| 'activity'
| 'settings';
@ -37,6 +41,8 @@ export function ProjectNav({
chat: active === 'chat',
todos: active === 'todos',
files: active === 'files',
calendar: active === 'calendar',
milestones: active === 'milestones',
members: active === 'members',
activity: active === 'activity',
settings: active === 'settings',