Files
usher-manage-stack/.planning/milestones/v1.0-REQUIREMENTS.md
gbanyan 25779933cc chore: complete v1.0 Member Notes System milestone
Archive roadmap and requirements to milestones/v1.0-*.
Evolve PROJECT.md with validated requirements and decisions.
Reorganize ROADMAP.md with milestone grouping.
Delete REQUIREMENTS.md (fresh for next milestone).

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-13 15:07:30 +08:00

2.5 KiB

Requirements Archive: v1.0 Member Notes System

Archived: 2026-02-13 Status: SHIPPED


v1 Requirements — All Shipped

Note Creation

  • NOTE-01: Admin can add a text note to any member inline from the member list — Phase 2
  • NOTE-02: Each note stores text content, author (current user), and creation datetime — Phase 1
  • NOTE-03: Note submission uses AJAX (Axios) with CSRF protection — no page reload — Phase 2

Note Display

  • DISP-01: Each member row shows a note count badge indicating number of notes — Phase 2
  • DISP-02: Clicking the badge expands an inline panel showing full note history (newest first) — Phase 3
  • DISP-03: Each note displays author name and formatted datetime — Phase 3
  • DISP-04: Notes can be filtered/searched by text content within a member's note history — Phase 3

Data Layer

  • DATA-01: Notes use polymorphic relationship (notable_type/notable_id) — Phase 1
  • DATA-02: Migration includes proper indexes for member lookups and chronological ordering — Phase 1
  • DATA-03: Member list uses eager loading (withCount('notes')) to prevent N+1 queries — Phase 1

Access & Audit

  • ACCS-01: All admin roles can view and write notes (reuses existing admin middleware) — Phase 1
  • ACCS-02: Note creation is logged via AuditLogger::log() — Phase 1
  • ACCS-03: Dark mode fully supported on all note UI elements — Phase 2

UI/UX

  • UI-01: All UI text in Traditional Chinese — Phase 2
  • UI-02: Note quick-add works correctly across paginated member list pages — Phase 2
  • UI-03: Alpine.js manages inline state (expand/collapse, form submission, loading states) — Phase 3

Traceability

Requirement Phase Status
NOTE-01 Phase 2 ✓ Shipped
NOTE-02 Phase 1 ✓ Shipped
NOTE-03 Phase 2 ✓ Shipped
DISP-01 Phase 2 ✓ Shipped
DISP-02 Phase 3 ✓ Shipped
DISP-03 Phase 3 ✓ Shipped
DISP-04 Phase 3 ✓ Shipped
DATA-01 Phase 1 ✓ Shipped
DATA-02 Phase 1 ✓ Shipped
DATA-03 Phase 1 ✓ Shipped
ACCS-01 Phase 1 ✓ Shipped
ACCS-02 Phase 1 ✓ Shipped
ACCS-03 Phase 2 ✓ Shipped
UI-01 Phase 2 ✓ Shipped
UI-02 Phase 2 ✓ Shipped
UI-03 Phase 3 ✓ Shipped

Coverage: 16/16 requirements shipped (100%)


Archived: 2026-02-13