- Eliminate manual ApiResponse construction in 5 handlers
- Add MemberService + sql::members following established pattern
- Create success_message_only() utility for empty responses
- Fix members handler: db::members direct calls → service layer
- Add SanitizeOutput for LoginResponse trait consistency
- All examined handlers now follow Handler → Service → SQL pattern