44 lines
1.2 KiB
Markdown
44 lines
1.2 KiB
Markdown
# DB Schema(現行)
|
||
|
||
## 真實來源
|
||
- `backend/scripts/init_schema.sql`
|
||
- 線上增量:`backend/scripts/migrate_add_users_username.sql`
|
||
- 欄位重命名增量:`backend/scripts/migrate_rename_identity_columns.sql`
|
||
|
||
## 主要表
|
||
- `users`
|
||
- `user_sub` UNIQUE
|
||
- `idp_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 + user_sub)
|
||
- `permission_group_permissions`(group + site/system/module/action)
|
||
- `user_scope_permissions`(相容保留)
|
||
- `api_clients`(保留給機器對機器用途)
|
||
|
||
## 權限規則
|
||
- `scope_type='site'`
|
||
- `action in ('view','edit')`
|
||
|
||
## 會員與 Authentik 對齊
|
||
- `users.user_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;
|
||
```
|