#19 feat(Epic 2): implement municipality-to-cycle kanban and election-cycle job creation

병합
dcovington 2-2-create-election-cycle-job 에서 main 로 1 commits 를 머지했습니다 1 일 전
dcovington 코멘트됨, 1 일 전

Story 2.1 - Municipality-to-Cycle Kanban Entry Point

  • ElectionCycleKanbanController (GET /api/election-cycles/kanban) with ClientServicesAccess RBAC policy
  • ElectionCycleKanbanReadModel aggregates active jobs and unassigned municipalities into multi-lane board; legacy Access tables read-only
  • Frontend: electionCycleKanbanView with keyboard-navigable lanes, card windowing, sticky lane headers, and Unassigned lane always present
  • Frontend: electionCycleKanbanContracts with fetch, focus management, and visibility utilities
  • InMemoryElectionCycleJobRepository with seed data for kanban display
  • 5 integration tests covering grouping, unassigned municipalities, inactive exclusion, RBAC enforcement, and legacy read-only invariant

Story 2.2 - Create Election-Cycle Job

  • POST /api/election-cycles/jobs accepts existing cycle reference or new cycle name; persists with “In Setup” status, actor identity, and server timestamp in extension-layer storage only
  • ElectionCycleJobsController with validation (rejects missing JCode or cycle selection), audit emission via shared IAuditService, and idempotent creates for duplicate jCode+cycleId pairs
  • Frontend: CreateJobModal with existing-cycle selector, new-cycle-name input, inline validation errors, and kanban reload on success
  • “Create cycle job” button wired into Unassigned lane cards; card relocates to selected cycle lane after creation 10 backend integration tests covering happy path, new cycle generation, missing cycle/JCode validation, unauthenticated/wrong-role rejection, audit event emission, legacy read-only invariant, idempotency, and 404
Story 2.1 - Municipality-to-Cycle Kanban Entry Point - ElectionCycleKanbanController (GET /api/election-cycles/kanban) with ClientServicesAccess RBAC policy - ElectionCycleKanbanReadModel aggregates active jobs and unassigned municipalities into multi-lane board; legacy Access tables read-only - Frontend: electionCycleKanbanView with keyboard-navigable lanes, card windowing, sticky lane headers, and Unassigned lane always present - Frontend: electionCycleKanbanContracts with fetch, focus management, and visibility utilities - InMemoryElectionCycleJobRepository with seed data for kanban display - 5 integration tests covering grouping, unassigned municipalities, inactive exclusion, RBAC enforcement, and legacy read-only invariant Story 2.2 - Create Election-Cycle Job - POST /api/election-cycles/jobs accepts existing cycle reference or new cycle name; persists with "In Setup" status, actor identity, and server timestamp in extension-layer storage only - ElectionCycleJobsController with validation (rejects missing JCode or cycle selection), audit emission via shared IAuditService, and idempotent creates for duplicate jCode+cycleId pairs - Frontend: CreateJobModal with existing-cycle selector, new-cycle-name input, inline validation errors, and kanban reload on success - "Create cycle job" button wired into Unassigned lane cards; card relocates to selected cycle lane after creation 10 backend integration tests covering happy path, new cycle generation, missing cycle/JCode validation, unauthenticated/wrong-role rejection, audit event emission, legacy read-only invariant, idempotency, and 404
dcovington 삭제된 브랜치 2-2-create-election-cycle-job 1 일 전
The pull request has been merged as 896c109d20.
로그인하여 이 대화에 참여
레이블 없음
마일스톤 없음
담당자 없음
참여자 1명
마감일

마감일이 설정되지 않았습니다.

의존성

이 풀 리퀘스트는 어떠한 의존성도 가지지 않습니다.

불러오는 중...
취소
저장
아직 콘텐츠가 없습니다.

Powered by TurnKey Linux.