diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 444a9cc..b973183 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -73,28 +73,28 @@ | Requirement | Phase | Status | |-------------|-------|--------| -| NOTE-01 | — | Pending | -| NOTE-02 | — | Pending | -| NOTE-03 | — | Pending | -| DISP-01 | — | Pending | -| DISP-02 | — | Pending | -| DISP-03 | — | Pending | -| DISP-04 | — | Pending | -| DATA-01 | — | Pending | -| DATA-02 | — | Pending | -| DATA-03 | — | Pending | -| ACCS-01 | — | Pending | -| ACCS-02 | — | Pending | -| ACCS-03 | — | Pending | -| UI-01 | — | Pending | -| UI-02 | — | Pending | -| UI-03 | — | Pending | +| NOTE-01 | Phase 2 | Pending | +| NOTE-02 | Phase 2 | Pending | +| NOTE-03 | Phase 2 | Pending | +| DISP-01 | Phase 2 | Pending | +| DISP-02 | Phase 3 | Pending | +| DISP-03 | Phase 3 | Pending | +| DISP-04 | Phase 3 | Pending | +| DATA-01 | Phase 1 | Pending | +| DATA-02 | Phase 1 | Pending | +| DATA-03 | Phase 1 | Pending | +| ACCS-01 | Phase 1 | Pending | +| ACCS-02 | Phase 1 | Pending | +| ACCS-03 | Phase 2 | Pending | +| UI-01 | Phase 2 | Pending | +| UI-02 | Phase 2 | Pending | +| UI-03 | Phase 2 | Pending | **Coverage:** - v1 requirements: 16 total -- Mapped to phases: 0 -- Unmapped: 16 ⚠️ +- Mapped to phases: 16 ✓ +- Unmapped: 0 ✓ --- *Requirements defined: 2026-02-13* -*Last updated: 2026-02-13 after initial definition* +*Last updated: 2026-02-13 after roadmap creation* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md new file mode 100644 index 0000000..d4ab4a4 --- /dev/null +++ b/.planning/ROADMAP.md @@ -0,0 +1,93 @@ +# Roadmap: Member Notes System (會員備註系統) + +## Overview + +This roadmap delivers inline note-taking capabilities for the Taiwan NPO admin member list, enabling quick annotation without page navigation. The implementation follows a foundation-first approach: database schema and backend API (Phase 1), followed by inline quick-add UI delivering core value (Phase 2), and concluding with full note history and display features (Phase 3). All work leverages the existing Laravel 10 + Alpine.js + Tailwind stack with zero new dependencies. + +## Phases + +**Phase Numbering:** +- Integer phases (1, 2, 3): Planned milestone work +- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED) + +Decimal phases appear between their surrounding integers in numeric order. + +- [ ] **Phase 1: Database Schema & Backend API** - Foundation layer with polymorphic relationships +- [ ] **Phase 2: Inline Quick-Add UI** - Core value: quick annotation from member list +- [ ] **Phase 3: Note History & Display** - Full note viewing and search capabilities + +## Phase Details + +### Phase 1: Database Schema & Backend API +**Goal**: Establish database foundation and backend endpoints for note storage and retrieval + +**Depends on**: Nothing (first phase) + +**Requirements**: DATA-01, DATA-02, DATA-03, ACCS-01, ACCS-02 + +**Success Criteria** (what must be TRUE): + 1. Notes table exists with polymorphic columns (`notable_type`, `notable_id`) and proper indexes + 2. Admin can create a note via POST endpoint with text, member ID, and author auto-captured + 3. Admin can retrieve all notes for a member via GET endpoint with author name and timestamps + 4. Member list shows accurate note count for each member without N+1 queries + 5. Note creation events are logged in audit trail with action and metadata + +**Plans**: TBD + +Plans: +- [ ] TBD (will be defined in plan-phase) + +### Phase 2: Inline Quick-Add UI +**Goal**: Deliver core value — admins can annotate members inline without page navigation + +**Depends on**: Phase 1 + +**Requirements**: NOTE-01, NOTE-02, NOTE-03, DISP-01, UI-01, UI-02, UI-03, ACCS-03 + +**Success Criteria** (what must be TRUE): + 1. Each member row displays a note count badge showing number of notes + 2. Admin can click an inline form to add a note without leaving the member list page + 3. After submitting a note, the badge updates immediately and the form clears + 4. Note submission shows loading state during AJAX request (disabled button) + 5. Validation errors display in Traditional Chinese below the form field + 6. All note UI elements work correctly in both light and dark mode + 7. Quick-add functionality works across paginated member list pages (pages 1, 2, 3+) + +**Plans**: TBD + +Plans: +- [ ] TBD (will be defined in plan-phase) + +### Phase 3: Note History & Display +**Goal**: Complete the note feature with full history viewing and search + +**Depends on**: Phase 2 + +**Requirements**: DISP-02, DISP-03, DISP-04 + +**Success Criteria** (what must be TRUE): + 1. Admin can click the note count badge to expand an inline panel showing all notes for that member + 2. Notes display in chronological order (newest first) with author name and formatted datetime + 3. Panel shows empty state message ("尚無備註") when member has no notes + 4. Admin can filter/search notes by text content within a member's note history + 5. Expanded panel collapses cleanly without affecting other member rows + +**Plans**: TBD + +Plans: +- [ ] TBD (will be defined in plan-phase) + +## Progress + +**Execution Order:** +Phases execute in numeric order: 1 → 2 → 3 + +| Phase | Plans Complete | Status | Completed | +|-------|----------------|--------|-----------| +| 1. Database Schema & Backend API | 0/TBD | Not started | - | +| 2. Inline Quick-Add UI | 0/TBD | Not started | - | +| 3. Note History & Display | 0/TBD | Not started | - | + +--- +*Roadmap created: 2026-02-13* +*Last updated: 2026-02-13* diff --git a/.planning/STATE.md b/.planning/STATE.md new file mode 100644 index 0000000..c3b2f9f --- /dev/null +++ b/.planning/STATE.md @@ -0,0 +1,63 @@ +# Project State + +## Project Reference + +See: .planning/PROJECT.md (updated 2026-02-13) + +**Core value:** The chairman can annotate any member with timestamped notes directly from the member list, without navigating away from the page. + +**Current focus:** Phase 1 - Database Schema & Backend API + +## Current Position + +Phase: 1 of 3 (Database Schema & Backend API) +Plan: 0 of TBD in current phase +Status: Ready to plan +Last activity: 2026-02-13 — Roadmap created with 3 phases covering all 16 v1 requirements + +Progress: [░░░░░░░░░░] 0% + +## Performance Metrics + +**Velocity:** +- Total plans completed: 0 +- Average duration: - min +- Total execution time: 0.0 hours + +**By Phase:** + +| Phase | Plans | Total | Avg/Plan | +|-------|-------|-------|----------| +| - | - | - | - | + +**Recent Trend:** +- Last 5 plans: None yet +- Trend: Not enough data + +*Updated after each plan completion* + +## Accumulated Context + +### Decisions + +Decisions are logged in PROJECT.md Key Decisions table. +Recent decisions affecting current work: + +- Enhance existing member list vs new page: User wants notes integrated into existing workflow (outcome pending) +- Shared notes (all admin roles): Chairman wants transparency across admin roles (outcome pending) +- Append-only notes (no edit/delete): Maintains audit integrity for member observations (outcome pending) +- Alpine.js inline UI: Matches existing stack and avoids full page reloads (outcome pending) + +### Pending Todos + +None yet. + +### Blockers/Concerns + +None yet. + +## Session Continuity + +Last session: 2026-02-13 +Stopped at: Roadmap creation complete, ready to plan Phase 1 +Resume file: None