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>
This commit is contained in:
65
.planning/milestones/v1.0-REQUIREMENTS.md
Normal file
65
.planning/milestones/v1.0-REQUIREMENTS.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Requirements Archive: v1.0 Member Notes System
|
||||
|
||||
**Archived:** 2026-02-13
|
||||
**Status:** SHIPPED
|
||||
|
||||
---
|
||||
|
||||
## v1 Requirements — All Shipped
|
||||
|
||||
### Note Creation
|
||||
|
||||
- [x] **NOTE-01**: Admin can add a text note to any member inline from the member list — Phase 2
|
||||
- [x] **NOTE-02**: Each note stores text content, author (current user), and creation datetime — Phase 1
|
||||
- [x] **NOTE-03**: Note submission uses AJAX (Axios) with CSRF protection — no page reload — Phase 2
|
||||
|
||||
### Note Display
|
||||
|
||||
- [x] **DISP-01**: Each member row shows a note count badge indicating number of notes — Phase 2
|
||||
- [x] **DISP-02**: Clicking the badge expands an inline panel showing full note history (newest first) — Phase 3
|
||||
- [x] **DISP-03**: Each note displays author name and formatted datetime — Phase 3
|
||||
- [x] **DISP-04**: Notes can be filtered/searched by text content within a member's note history — Phase 3
|
||||
|
||||
### Data Layer
|
||||
|
||||
- [x] **DATA-01**: Notes use polymorphic relationship (`notable_type`/`notable_id`) — Phase 1
|
||||
- [x] **DATA-02**: Migration includes proper indexes for member lookups and chronological ordering — Phase 1
|
||||
- [x] **DATA-03**: Member list uses eager loading (`withCount('notes')`) to prevent N+1 queries — Phase 1
|
||||
|
||||
### Access & Audit
|
||||
|
||||
- [x] **ACCS-01**: All admin roles can view and write notes (reuses existing `admin` middleware) — Phase 1
|
||||
- [x] **ACCS-02**: Note creation is logged via `AuditLogger::log()` — Phase 1
|
||||
- [x] **ACCS-03**: Dark mode fully supported on all note UI elements — Phase 2
|
||||
|
||||
### UI/UX
|
||||
|
||||
- [x] **UI-01**: All UI text in Traditional Chinese — Phase 2
|
||||
- [x] **UI-02**: Note quick-add works correctly across paginated member list pages — Phase 2
|
||||
- [x] **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*
|
||||
Reference in New Issue
Block a user