# DB Schema(現行) ## 真實來源 - `backend/scripts/init_schema.sql` - 線上增量:`backend/scripts/migrate_add_users_username.sql` ## 主要表 - `users` - `authentik_sub` UNIQUE - `authentik_user_id` INTEGER - `username` UNIQUE - `email` UNIQUE - `display_name` - `is_active`, `status`, timestamps - `companies` - `sites`(`company_id -> companies.id`) - `systems` - `modules`(`system_key -> systems.system_key`) - `permission_groups` - `permission_group_members`(group + authentik_sub) - `permission_group_permissions`(group + site/system/module/action) - `user_scope_permissions`(相容保留) - `api_clients`(保留給機器對機器用途) ## 權限規則 - `scope_type='site'` - `action in ('view','edit')` ## 會員與 Authentik 對齊 - `users.authentik_sub` 對應 Authentik `uid` - `users.username` 對應 Authentik `username` - `users.display_name` 對應 Authentik `name` ## 快速檢查 SQL ```sql SELECT column_name, data_type FROM information_schema.columns WHERE table_name='users' ORDER BY ordinal_position; SELECT COUNT(*) FROM users WHERE username IS NULL; ```