Skip to content

Database Schema

Auto-generated by tools/dbdoc from a live database. Do not edit by hand; regenerate after schema changes.

Contents

  • Identity & RBAC(11):departments menu_permissions menus permissions role_data_scope_departments role_permissions roles sys_posts sys_user_posts user_roles users
  • Auth & Security(5):console_routes console_sessions oauth_bindings password_history totp_recovery_codes
  • Multi-tenancy(2):tenant_packages tenants
  • System Ops(10):dict_items dict_types error_codes notices scheduled_job_logs scheduled_jobs sms_channels sms_logs sms_templates system_settings
  • Audit Logs(3):audit_logs login_logs operation_logs
  • File Service(1):files
  • Workflow (BPM)(5):bpm_cc_record bpm_process_definition bpm_process_instance bpm_process_log bpm_task
  • Migration Meta(2):goose_db_version schema_migrations

Identity & RBAC

departments

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
namecharacter varying(100)no
codecharacter varying(50)yesNULL::character varying
parent_idbigintno0
leadercharacter varying(50)yes''::character varying
phonecharacter varying(20)yes''::character varying
emailcharacter varying(100)yes''::character varying
sortbigintno0
statussmallintno1
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone
tenant_idbigintno1
leader_user_idbigintno0

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (parent_id)
  • btree (tenant_id, code) [UNIQUE]
  • btree (tenant_id)
ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
menu_idbigintno
permission_idbigintno

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (permission_id)
  • btree (menu_id, permission_id) [UNIQUE]
ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
namecharacter varying(50)no
titlecharacter varying(50)no
iconcharacter varying(100)yes''::character varying
pathcharacter varying(255)yes''::character varying
componentcharacter varying(255)yes''::character varying
parent_idbigintno0
sortbigintno0
statussmallintno1
hiddensmallintno0
permissioncharacter varying(100)yes''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (parent_id)

permissions

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
namecharacter varying(50)no
codecharacter varying(100)no
typesmallintno
pathcharacter varying(255)yes''::character varying
methodcharacter varying(10)yes''::character varying
parent_idbigintno0
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone
descriptioncharacter varying(255)no''::character varying

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (code) [UNIQUE]
  • btree (parent_id)

role_data_scope_departments

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
role_idbigintno
department_idbigintno
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (department_id)
  • btree (role_id, department_id) [UNIQUE]

role_permissions

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
role_idbigintno
permission_idbigintno

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (permission_id)
  • btree (role_id, permission_id) [UNIQUE]

roles

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
namecharacter varying(50)no
codecharacter varying(50)no
descriptioncharacter varying(255)yes''::character varying
data_scopecharacter varying(32)no'self'::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone
tenant_idbigintno1

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (data_scope)
  • btree (tenant_id, code) [UNIQUE]
  • btree (tenant_id)

sys_posts

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
tenant_idbigintno1
codecharacter varying(64)no
namecharacter varying(64)no
sortbigintno0
statussmallintno1
remarkcharacter varying(500)yes''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (tenant_id)
  • btree (tenant_id, code) [UNIQUE]

sys_user_posts

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintno
post_idbigintno

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (post_id)
  • btree (user_id, post_id) [UNIQUE]

user_roles

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintno
role_idbigintno

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (role_id)
  • btree (user_id, role_id) [UNIQUE]

users

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
usernamecharacter varying(50)no
passwordcharacter varying(255)no
nicknamecharacter varying(50)yes''::character varying
emailcharacter varying(100)yesNULL::character varying
phonecharacter varying(20)yesNULL::character varying
avatarcharacter varying(255)yes''::character varying
department_idbigintno0
must_change_passwordbooleannofalse
statussmallintno1
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone
password_changed_attimestamp(3) with time zoneyesNULL::timestamp with time zone
totp_secretcharacter varying(255)no''::character varying
totp_enabledbooleannofalse
tenant_idbigintno1
is_platform_adminbooleannofalse

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (department_id)
  • btree (tenant_id, email) WHERE ((email IS NOT NULL) AND ((email)::text <> ''::text)) [UNIQUE]
  • btree (tenant_id)
  • btree (tenant_id, phone) WHERE ((phone IS NOT NULL) AND ((phone)::text <> ''::text)) [UNIQUE]
  • btree (tenant_id, username) [UNIQUE]

Auth & Security

console_routes

ColumnTypeNullableDefaultComment
route_keycharacter varying(64)no
pathcharacter varying(255)no
namecharacter varying(128)no
component_keycharacter varying(128)no
redirectcharacter varying(255)yes''::character varying
parent_keycharacter varying(64)yes''::character varying
sort_orderbigintyes1000
hiddenbooleanyesfalse
publicbooleanyesfalse
enabledbooleanyestrue
permissions_jsonjsonbyes
roles_jsonjsonbyes
meta_jsonjsonbyes
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (route_key)

Indexes

  • btree (enabled)
  • btree (name) [UNIQUE]
  • btree (parent_key)
  • btree (path) [UNIQUE]
  • btree (sort_order)

console_sessions

ColumnTypeNullableDefaultComment
session_idcharacter varying(64)no
usernamecharacter varying(128)no
issued_attimestamp(3) with time zoneno
expires_attimestamp(3) with time zoneno
revoked_attimestamp(3) with time zoneyesNULL::timestamp with time zone
last_seen_attimestamp(3) with time zoneyesNULL::timestamp with time zone
client_ip_hashcharacter varying(64)yes''::character varying
user_agent_hashcharacter varying(64)yes''::character varying
user_agent_previewcharacter varying(255)yes''::character varying
created_attimestamp(3) with time zoneno

Keys & Constraints

  • PRIMARY KEY (session_id)

Indexes

  • btree (expires_at)
  • btree (issued_at)
  • btree (revoked_at)
  • btree (username)

oauth_bindings

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintno
providercharacter varying(50)no
provider_user_idcharacter varying(100)no
access_tokencharacter varying(255)yes''::character varying
refresh_tokencharacter varying(255)yes''::character varying
expires_attimestamp(3) with time zoneyesNULL::timestamp with time zone
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (user_id)
  • btree (provider, provider_user_id) [UNIQUE]
  • btree (user_id, provider) [UNIQUE]

password_history

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintno
password_hashcharacter varying(255)no
changed_attimestamp(3) with time zoneno
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (user_id, changed_at)
  • btree (user_id)

totp_recovery_codes

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintno
code_hashcharacter varying(255)no
used_attimestamp(3) with time zoneyesNULL::timestamp with time zone
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
  • PRIMARY KEY (id)

Indexes

  • btree (user_id)
  • btree (user_id, used_at)

Multi-tenancy

tenant_packages

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
namecharacter varying(128)no
permission_codesjsonbno'[]'::jsonb
statussmallintno1
remarkcharacter varying(255)no''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (name) [UNIQUE]

tenants

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
codecharacter varying(64)no
namecharacter varying(128)no
statussmallintno1
plancharacter varying(64)no'free'::character varying
max_usersbigintno0
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone
package_idbigintyes

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (code) [UNIQUE]
  • btree (package_id)

System Ops

dict_items

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
dict_type_idbigintno
labelcharacter varying(100)no
valuecharacter varying(100)no
sortbigintyes0
statussmallintyes1
remarkcharacter varying(255)yes''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (dict_type_id)

dict_types

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
namecharacter varying(100)no
codecharacter varying(100)no
descriptioncharacter varying(255)yes''::character varying
statussmallintyes1
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (code) [UNIQUE]

error_codes

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
codecharacter varying(128)no
messagecharacter varying(512)no
memocharacter varying(255)yes''::character varying
scopecharacter varying(64)no'global'::character varying
statussmallintyes1
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (code) [UNIQUE]

notices

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
titlecharacter varying(200)no
contenttextno
typesmallintyes1
statussmallintyes1
creator_idbigintyes
creatorcharacter varying(50)yes''::character varying
start_timetimestamp(3) with time zoneyesNULL::timestamp with time zone
end_timetimestamp(3) with time zoneyesNULL::timestamp with time zone
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone
tenant_idbigintno1

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (creator_id)
  • btree (tenant_id)

scheduled_job_logs

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
job_idbigintno
job_namecharacter varying(100)no
statussmallintyes1
messagetextyes
durationbigintyes0
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (created_at)
  • btree (job_id, created_at DESC)

scheduled_jobs

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
namecharacter varying(100)no
group_namecharacter varying(50)yes'default'::character varying
cron_expressioncharacter varying(50)no
invoke_targetcharacter varying(255)no
descriptioncharacter varying(500)yes''::character varying
statussmallintyes1
concurrentsmallintyes0
last_run_timetimestamp(3) with time zoneyesNULL::timestamp with time zone
next_run_timetimestamp(3) with time zoneyesNULL::timestamp with time zone
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (name) [UNIQUE]

sms_channels

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
tenant_idbigintno1
namecharacter varying(100)no
providercharacter varying(32)no
configjsonyes
statussmallintno1
remarkcharacter varying(255)no''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (tenant_id)

sms_logs

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
tenant_idbigintno1
mobilecharacter varying(32)no''::character varying
template_codecharacter varying(100)no''::character varying
contenttextno''::text
paramsjsonyes
channel_idbigintno0
channel_namecharacter varying(100)no''::character varying
providercharacter varying(32)no''::character varying
statuscharacter varying(16)no'sending'::character varying
provider_msg_idcharacter varying(128)no''::character varying
errorcharacter varying(512)no''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (mobile)
  • btree (status)
  • btree (template_code)
  • btree (tenant_id)

sms_templates

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
tenant_idbigintno1
codecharacter varying(100)no
namecharacter varying(100)no
channel_idbigintno0
contenttextno''::text
typesmallintno1
provider_template_idcharacter varying(100)no''::character varying
statussmallintno1
remarkcharacter varying(255)no''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (channel_id)
  • btree (tenant_id, code) [UNIQUE]

system_settings

ColumnTypeNullableDefaultComment
setting_keycharacter varying(128)no
value_jsonjsonbyes
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone

Keys & Constraints

  • PRIMARY KEY (setting_key)

Indexes

  • btree (updated_at)

Audit Logs

audit_logs

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
actor_typecharacter varying(64)yes'operator'::character varying
actor_idcharacter varying(128)yes'web-console'::character varying
actioncharacter varying(128)no
target_typecharacter varying(64)no
target_idcharacter varying(128)no
before_jsonjsonbyes
after_jsonjsonbyes
summarytextyes
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
tenant_idbigintno1

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (action)
  • btree (created_at)
  • btree (target_type, target_id, created_at DESC)
  • btree (target_id)
  • btree (tenant_id, created_at DESC)

login_logs

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintyes
usernamecharacter varying(50)yes''::character varying
login_typesmallintyes1
statussmallintyes1
ipcharacter varying(45)yes''::character varying
locationcharacter varying(100)yes''::character varying
devicecharacter varying(100)yes''::character varying
oscharacter varying(50)yes''::character varying
browsercharacter varying(100)yes''::character varying
user_agentcharacter varying(500)yes''::character varying
messagecharacter varying(255)yes''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
tenant_idbigintno1

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (created_at)
  • btree (ip, created_at) WHERE (status = 0)
  • btree (username, created_at) WHERE (status = 0)
  • btree (tenant_id, created_at DESC)
  • btree (user_id, created_at DESC)

operation_logs

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintyes
usernamecharacter varying(50)yes''::character varying
actor_typecharacter varying(64)yes'operator'::character varying
actor_idcharacter varying(128)yes'web-console'::character varying
request_idcharacter varying(64)yes''::character varying
modulecharacter varying(50)yes''::character varying
actioncharacter varying(50)yes''::character varying
methodcharacter varying(10)yes''::character varying
pathcharacter varying(255)yes''::character varying
querycharacter varying(1024)yes''::character varying
request_bodytextyes
response_bodytextyes
statusbigintyes0
ipcharacter varying(45)yes''::character varying
user_agentcharacter varying(500)yes''::character varying
latencybigintyes0
error_msgcharacter varying(1024)yes''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
tenant_idbigintno1

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (created_at)
  • btree (request_id)
  • btree (tenant_id, created_at DESC)
  • btree (user_id, created_at DESC)

File Service

files

ColumnTypeNullableDefaultComment
idbigintnoIDENTITY
user_idbigintyes
file_namecharacter varying(255)no
file_pathcharacter varying(500)no
file_sizebigintno0
file_typecharacter varying(50)yes''::character varying
mime_typecharacter varying(100)yes''::character varying
extensioncharacter varying(20)yes''::character varying
storage_typecharacter varying(20)yes'local'::character varying
urlcharacter varying(500)yes''::character varying
hashcharacter varying(64)yes''::character varying
created_attimestamp(3) with time zoneyesNULL::timestamp with time zone
updated_attimestamp(3) with time zoneyesNULL::timestamp with time zone
image_widthintegerno0
image_heightintegerno0
thumbnail_pathcharacter varying(500)yes''::character varying
thumbnail_urlcharacter varying(500)yes''::character varying
thumbnail_widthintegerno0
thumbnail_heightintegerno0
tenant_idbigintno1

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (hash)
  • btree (tenant_id, created_at DESC)
  • btree (tenant_id, user_id)
  • btree (user_id)

Workflow (BPM)

bpm_cc_record

ColumnTypeNullableDefaultComment
idbigintnonextval('bpm_cc_record_id_seq'::regclass)
tenant_idbigintno1
instance_idbigintno
node_idcharacter varying(64)no
user_idbigintno
read_attimestamp with time zoneyes
created_attimestamp with time zoneyes
node_namecharacter varying(128)no''::character varying

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (instance_id)
  • btree (tenant_id, user_id)

bpm_process_definition

ColumnTypeNullableDefaultComment
idbigintnonextval('bpm_process_definition_id_seq'::regclass)
tenant_idbigintno1
keycharacter varying(64)no
versionbigintno1
namecharacter varying(128)no
statuscharacter varying(16)no'draft'::character varying
node_treejsonbno
form_schemajsonbyes
biz_typecharacter varying(32)yes
remarkcharacter varying(256)yes
created_bybigintno0
created_attimestamp with time zoneyes
updated_attimestamp with time zoneyes

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (biz_type)
  • btree (status)
  • btree (tenant_id)
  • btree (tenant_id, key, version) [UNIQUE]

bpm_process_instance

ColumnTypeNullableDefaultComment
idbigintnonextval('bpm_process_instance_id_seq'::regclass)
tenant_idbigintno1
definition_idbigintno
definition_keycharacter varying(64)no
titlecharacter varying(256)no
biz_typecharacter varying(32)no
biz_idcharacter varying(64)no
statuscharacter varying(16)no'running'::character varying
current_node_idcharacter varying(64)yes
form_snapshotjsonbno
variablesjsonbyes
initiator_idbigintno
initiator_deptbigintno0
finished_attimestamp with time zoneyes
created_attimestamp with time zoneyes
updated_attimestamp with time zoneyes

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (definition_key)
  • btree (tenant_id, initiator_id, status)
  • btree (tenant_id, status)
  • btree (tenant_id, biz_type, biz_id) WHERE ((status)::text = 'running'::text) [UNIQUE]

bpm_process_log

ColumnTypeNullableDefaultComment
idbigintnonextval('bpm_process_log_id_seq'::regclass)
tenant_idbigintno1
instance_idbigintno
node_idcharacter varying(64)yes
task_idbigintno0
actioncharacter varying(32)no
operator_idbigintno0
detailjsonbyes
created_attimestamp with time zoneyes

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (tenant_id)
  • btree (instance_id, created_at)

bpm_task

ColumnTypeNullableDefaultComment
idbigintnonextval('bpm_task_id_seq'::regclass)
tenant_idbigintno1
instance_idbigintno
node_idcharacter varying(64)no
node_namecharacter varying(128)no
roundbigintno1
assignee_idbigintno
origin_assigneebigintno0
multi_modecharacter varying(8)no'OR'::character varying
seq_orderbigintno0
statuscharacter varying(16)no'pending'::character varying
commentcharacter varying(512)yes
timeout_attimestamp with time zoneyes
reminded_attimestamp with time zoneyes
acted_attimestamp with time zoneyes
created_attimestamp with time zoneyes
updated_attimestamp with time zoneyes

Keys & Constraints

  • PRIMARY KEY (id)

Indexes

  • btree (origin_assignee)
  • btree (instance_id, node_id, round)
  • btree (tenant_id, assignee_id, status)

Migration Meta

goose_db_version

ColumnTypeNullableDefaultComment
idintegernoIDENTITY
version_idbigintno
is_appliedbooleanno
tstamptimestamp without time zonenonow()

Keys & Constraints

  • PRIMARY KEY (id)

schema_migrations

ColumnTypeNullableDefaultComment
versioncharacter varying(255)no
checksumcharacter varying(64)yes''::character varying
applied_attimestamp with time zonenoCURRENT_TIMESTAMP

Keys & Constraints

  • PRIMARY KEY (version)

MIT Licensed · Open-source Go microservices admin scaffold