Edric Li
3c3fed886f
feat(backend): add user custom attributes system
...
Add a flexible user attribute system that allows admins to define
custom fields for users (text, textarea, number, email, url, date,
select, multi_select types).
- Add Ent schemas for UserAttributeDefinition and UserAttributeValue
- Add service layer with validation logic
- Add repository layer with batch operations support
- Add admin API endpoints for CRUD and reorder operations
- Add batch API for loading attribute values for multiple users
- Add database migration (018_user_attributes.sql)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-01 18:58:34 +08:00
..
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 15:31:26 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2026-01-01 18:58:34 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2025-12-29 19:24:29 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 15:31:26 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 15:31:26 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00