跳到主要内容

数据库模式

Open ACE 同时支持 SQLite(单机)和 PostgreSQL(生产环境)。模式包含 44 张表 + 1 个物化视图(完整列表见 schema-postgres.sql,以下为常用表)。

参考文件:schema/schema-postgres.sql

用户与认证

users

核心用户表,支持基于角色的访问控制。

列名类型说明
idinteger PK自增
usernamevarcharUNIQUE, NOT NULL
password_hashvarcharbcrypt(12 轮)
emailvarchar
is_adminbooleanDEFAULT false
is_activebooleanDEFAULT true
rolevarcharCHECK IN ('admin','manager','user')
daily_token_quotainteger
monthly_token_quotainteger
daily_request_quotainteger
monthly_request_quotainteger
tenant_idintegerFK → tenants(id) ON DELETE SET NULL
must_change_passwordbooleanDEFAULT false
system_accounttext多用户模式下的 OS 用户名
deleted_attimestamp软删除
avatar_urlvarchar(500)头像 URL

索引:idx_users_active, idx_users_deleted, idx_users_email, idx_users_role, idx_users_tenant

sessions

基于 token 的认证会话。

列名类型说明
idinteger PK
tokenvarcharUNIQUE, NOT NULL
user_idintegerFK → users(id) ON DELETE CASCADE
created_attimestamp
expires_attimestampNOT NULL
is_activebooleanDEFAULT true

索引:idx_sessions_active, idx_sessions_expires, idx_sessions_token, idx_sessions_user_id

web_user_auth_sessions

Web UI 认证会话。

列名类型说明
idinteger PK
user_idintegerFK → users(id)
session_tokentextUNIQUE
created_attimestamp
expires_attimestamp

user_tool_accounts

将系统账户映射到不同 AI 工具的平台用户。

列名类型说明
idinteger PK
user_idintegerFK → users(id) ON DELETE CASCADE
tool_accountvarchar(255)UNIQUE
tool_typevarchar(50)
descriptionvarchar(255)

user_daily_stats

按用户预聚合的每日使用量,用于优化查询。

列名类型说明
idinteger PK
user_idintegerFK → users(id) ON DELETE CASCADE
datedate
requestsintegerDEFAULT 0
tokensintegerDEFAULT 0
input_tokensintegerDEFAULT 0
output_tokensintegerDEFAULT 0
cache_tokensintegerDEFAULT 0

唯一约束:(user_id, date)

消息与会话

daily_messages

核心消息表 — 所有 AI 交互的主数据存储。

列名类型说明
idinteger PK
datevarcharNOT NULL
tool_namevarcharNOT NULL
host_namevarcharDEFAULT 'localhost'
message_idvarcharNOT NULL
parent_idvarchar
rolevarcharNOT NULL (user/assistant/system)
contenttext
full_entrytext
tokens_usedintegerDEFAULT 0
input_tokensintegerDEFAULT 0
output_tokensintegerDEFAULT 0
modelvarchar
timestamptimestamp
sender_idvarchar
sender_namevarchar
message_sourcevarchar
conversation_idvarchar
agent_session_idvarchar
user_idinteger
project_pathtext

唯一约束:(date, tool_name, message_id, host_name)。18 个索引覆盖各种查询模式。

agent_sessions

AI 代理会话追踪。

列名类型说明
idinteger PK
session_idtextUNIQUE
session_typetextDEFAULT 'chat'
titletext
tool_nametextNOT NULL
host_nametextDEFAULT 'localhost'
user_idinteger
statustextDEFAULT 'active'
total_tokensintegerDEFAULT 0
total_input_tokensintegerDEFAULT 0
total_output_tokensintegerDEFAULT 0
message_countintegerDEFAULT 0
modeltext
project_idinteger
project_pathvarchar(500)
contexttext会话上下文
settingstext会话设置
tagstext标签
created_attimestamp创建时间
updated_attimestamp更新时间
completed_attimestamp完成时间
expires_attimestamp过期时间
request_countintegerDEFAULT 0,请求计数
workspace_typetextDEFAULT 'local',工作区类型
remote_machine_idtext关联远程机器 ID
paused_attimestamp暂停时间

session_messages

代理会话中的消息。

列名类型说明
idinteger PK
session_idtextFK → agent_sessions(session_id)
roletextNOT NULL
contenttext
tokens_usedintegerDEFAULT 0
modeltext
timestamptimestamp
metadatatext

统计

daily_stats

按工具/主机/发送者聚合的每日统计。

列名类型说明
datevarchar(10)NOT NULL
tool_namevarchar(50)NOT NULL
host_namevarchar(100)DEFAULT 'localhost'
sender_namevarchar(100)
total_tokensbigintNOT NULL
total_input_tokensbigintNOT NULL
total_output_tokensbigintNOT NULL
message_countintegerNOT NULL
project_idinteger
project_pathvarchar(500)

唯一约束:(date, tool_name, host_name, sender_name)

hourly_stats

按小时的使用量明细。

列名类型说明
datevarchar(10)NOT NULL
hourintegerNOT NULL
tool_namevarchar(50)NOT NULL
host_namevarchar(100)DEFAULT 'localhost'
total_tokensbigintNOT NULL
total_input_tokensbigintNOT NULL
total_output_tokensbigintNOT NULL
message_countintegerNOT NULL

唯一约束:(date, hour, tool_name, host_name)

daily_usage

带缓存 token 追踪的每日使用量。

列名类型说明
idinteger PK
datedateNOT NULL
tool_namevarcharNOT NULL
host_namevarcharDEFAULT 'localhost'
tokens_usedintegerDEFAULT 0
input_tokensintegerDEFAULT 0
output_tokensintegerDEFAULT 0
cache_tokensintegerDEFAULT 0
request_countintegerDEFAULT 0
models_usedtext

唯一约束:(date, tool_name, host_name)

usage_summary

按工具/主机汇总的仪表盘数据。

列名类型说明
tool_namevarchar(50)NOT NULL
host_namevarchar(100)
days_countintegerNOT NULL
total_tokensbigintNOT NULL
avg_tokensbigintNOT NULL
total_requestsintegerNOT NULL
total_input_tokensbigintNOT NULL
total_output_tokensbigintNOT NULL
first_datevarchar(10)
last_datevarchar(10)

唯一约束:(tool_name, host_name)

session_stats (物化视图)

从 daily_messages 中 agent_session_id IS NOT NULL 的记录聚合。提供会话级别的 token 计数、消息计数和时间戳范围。

多租户

tenants

列名类型说明
idinteger PK
nametextNOT NULL
slugtextUNIQUE
statustextCHECK IN ('active','suspended','trial','inactive')
plantextCHECK IN ('free','standard','premium','enterprise')
contact_emailtext
user_countintegerDEFAULT 0
total_tokens_usedintegerDEFAULT 0
deleted_attimestamp软删除

tenant_settings (与 tenants 1:1)

列名类型说明
tenant_idintegerUNIQUE FK → tenants(id) ON DELETE CASCADE
content_filter_enabledbooleanDEFAULT true
audit_log_enabledbooleanDEFAULT true
audit_log_retention_daysintegerDEFAULT 90
data_retention_daysintegerDEFAULT 365
sso_enabledbooleanDEFAULT false

tenant_quotas (与 tenants 1:1)

列名类型说明
tenant_idintegerUNIQUE FK → tenants(id) ON DELETE CASCADE
daily_token_limitintegerDEFAULT 1,000,000
monthly_token_limitintegerDEFAULT 30,000,000
max_usersintegerDEFAULT 100
max_sessions_per_userintegerDEFAULT 5

tenant_usage

列名类型说明
idinteger PK
tenant_idintegerFK → tenants(id) ON DELETE CASCADE
datedateNOT NULL
tokens_usedintegerDEFAULT 0
requests_madeintegerDEFAULT 0
active_usersintegerDEFAULT 0

唯一约束:(tenant_id, date)

SSO

sso_providers

列名类型说明
idinteger PK
nametextUNIQUE
provider_typetextNOT NULL (oauth2/oidc)
configtextNOT NULL (JSON)
tenant_idintegerFK → tenants(id)
is_activebooleanDEFAULT true

sso_identities

列名类型说明
idinteger PK
user_idintegerFK → users(id)
provider_nametextNOT NULL
provider_user_idtextNOT NULL

唯一约束:(provider_name, provider_user_id)

sso_sessions

列名类型说明
idinteger PK
session_tokentextUNIQUE
user_idintegerFK → users(id)
provider_nametextNOT NULL
access_tokentext
refresh_tokentext
expires_attimestamp

治理与合规

audit_logs

列名类型说明
idinteger PK
timestamptimestampDEFAULT CURRENT_TIMESTAMP
user_idinteger
usernametext
actiontextNOT NULL
severitytextDEFAULT 'info'
resource_typetext
resource_idtext
detailstext
ip_addresstext
successbooleanDEFAULT true

索引:idx_audit_timestamp, idx_audit_user_id, idx_audit_action, idx_audit_severity

content_filter_rules

列名类型说明
idinteger PK
patterntextNOT NULL
typetextDEFAULT 'keyword'
severitytextDEFAULT 'medium'
actiontextDEFAULT 'warn'
is_enabledbooleanDEFAULT true

security_settings

安全配置的键值存储。

列名类型说明
idinteger PK
setting_keyvarchar(100)UNIQUE
setting_valuetext
descriptiontext

anomaly_status

异常状态追踪表。

列名类型说明
idinteger PK自增
anomaly_typevarchar异常类型
affected_users_hashvarchar受影响用户哈希
statusvarchar处理状态
processed_byinteger处理人 ID
processed_attimestamp处理时间
created_attimestamp创建时间

insights_reports

AI 生成的使用洞察报告。

列名类型说明
idinteger PK自增
user_idinteger用户 ID
start_datevarchar开始日期
end_datevarchar结束日期
overall_scoreinteger总体评分
overall_assessmenttext总体评估
strengthstext优势(JSON)
areas_for_improvementtext改进建议(JSON)
suggestionstext建议(JSON)
usage_summarytext使用摘要(JSON)
modelvarchar使用的模型
raw_responsetext原始 AI 响应
created_attimestamp创建时间

告警与配额

alerts

列名类型说明
idinteger PK
alert_idtextUNIQUE
alert_typetextNOT NULL
severitytextNOT NULL
titletextNOT NULL
messagetext
user_idinteger
readbooleanDEFAULT false

quota_usage

列名类型说明
idinteger PK
user_idintegerFK → users(id) ON DELETE CASCADE
datedateNOT NULL
periodtextDEFAULT 'daily'
tokens_usedintegerDEFAULT 0
requests_usedintegerDEFAULT 0

唯一约束:(user_id, date, period)

quota_alerts

列名类型说明
idinteger PK
user_idintegerFK → users(id) ON DELETE CASCADE
alert_typetextNOT NULL
quota_typetextNOT NULL
thresholdrealNOT NULL
current_usageintegerNOT NULL
quota_limitintegerNOT NULL
percentagerealNOT NULL
acknowledgedbooleanDEFAULT false

notification_preferences

列名类型说明
user_idintegerPK
email_enabledbooleanDEFAULT true
push_enabledbooleanDEFAULT true
min_severitytextDEFAULT 'warning'

工作区与项目

projects

列名类型说明
idinteger PK
pathvarchar(500)UNIQUE
namevarchar(200)
descriptiontext
created_byinteger
is_activebooleanDEFAULT true
is_sharedbooleanDEFAULT false

user_projects

列名类型说明
idinteger PK
user_idintegerNOT NULL
project_idintegerNOT NULL
total_sessionsintegerDEFAULT 0
total_tokensbigintDEFAULT 0
total_requestsintegerDEFAULT 0

唯一约束:(user_id, project_id)

prompt_templates

列名类型说明
idinteger PK
nametextNOT NULL
categorytextDEFAULT 'general'
contenttextNOT NULL
variablestext
tagstext
author_idinteger
is_publicbooleanDEFAULT false
is_featuredbooleanDEFAULT false
use_countintegerDEFAULT 0

远程工作区

remote_machines

远程工作区机器注册表。

列名类型说明
idinteger PK自增
machine_idtext机器唯一标识
machine_nametext机器名称
hostnametext主机名
os_typetext操作系统类型
os_versiontext操作系统版本
ip_addresstextIP 地址
statustext状态
agent_versiontextAgent 版本
capabilitiestext能力(JSON)
cli_pathtextCLI 路径
work_dirtext工作目录
tenant_idinteger租户 ID
created_byinteger创建者 ID
created_attimestamp创建时间
updated_attimestamp更新时间
last_heartbeattimestamp最后心跳时间

machine_assignments

用户与远程机器的分配关系。

列名类型说明
idinteger PK自增
machine_idtext机器 ID
user_idinteger用户 ID
permissiontext权限
granted_byinteger授权者
granted_attimestamp授权时间

api_key_store

API 密钥加密存储。

列名类型说明
idinteger PK自增
tenant_idinteger租户 ID
providertextAI 服务商
key_nametext密钥名称
encrypted_keytext加密后的密钥
key_hashtext密钥哈希
base_urltextAPI 基础 URL
is_activebooleanDEFAULT true
created_byinteger创建者 ID
created_attimestamp创建时间
updated_attimestamp更新时间
cli_toolstextCLI 工具配置
cli_settingstextCLI 设置

协作

teams

列名类型说明
idinteger PK
team_idtextUNIQUE
nametextNOT NULL
descriptiontext
owner_idinteger

team_members

列名类型说明
idinteger PK
team_idtextNOT NULL
user_idintegerNOT NULL
roletextDEFAULT 'member'

唯一约束:(team_id, user_id)

shared_sessions

列名类型说明
idinteger PK
share_idtextUNIQUE
session_idtextNOT NULL
shared_byinteger
permissiontextDEFAULT 'view'
expires_attimestamp

knowledge_base

列名类型说明
idinteger PK
entry_idtextUNIQUE
team_idtext
titletextNOT NULL
contenttext
categorytextDEFAULT 'general'
is_publishedbooleanDEFAULT false

annotations

列名类型说明
idinteger PK
annotation_idtextUNIQUE
session_idtextNOT NULL
message_idtext
user_idinteger
contenttext
annotation_typetextDEFAULT 'comment'

同步

sync_events

列名类型说明
idinteger PK
event_idtextUNIQUE
event_typetextNOT NULL
sourcetext
session_idtext
user_idinteger
tool_nametext
datatext

retention_history

列名类型说明
idinteger PK
timestamptimestampDEFAULT CURRENT_TIMESTAMP
report_datatextNOT NULL

安全与权限

login_attempts

登录失败尝试记录,用于账户锁定。

列名类型说明
usernamevarcharNOT NULL,查找键
attempt_countintegerDEFAULT 0
locked_untiltimestamp锁定截止时间

user_permissions

用户级权限覆盖。

列名类型说明
idinteger PK自增
user_idintegerNOT NULL
permissiontextNOT NULL
granted_byinteger授权者
granted_attimestampDEFAULT CURRENT_TIMESTAMP

索引:idx_user_permissions_user, idx_user_permissions_permission

role_permissions

角色权限模板。

列名类型说明
idinteger PK自增
roletextNOT NULL
permissiontextNOT NULL

索引:idx_role_permissions_role, idx_role_permissions_permission

外键汇总

子表列名父表删除行为
userstenant_idtenantsSET NULL
sessionsuser_idusersCASCADE
web_user_auth_sessionsuser_idusers
user_tool_accountsuser_idusersCASCADE
user_daily_statsuser_idusersCASCADE
session_messagessession_idagent_sessions
quota_usageuser_idusersCASCADE
quota_alertsuser_idusersCASCADE
sso_identitiesuser_idusers
sso_sessionsuser_idusers
sso_providerstenant_idtenants
tenant_quotastenant_idtenantsCASCADE
tenant_settingstenant_idtenantsCASCADE
tenant_usagetenant_idtenantsCASCADE
anomaly_statusprocessed_byusers
insights_reportsuser_idusers

跨数据库兼容性

命名约定请参阅 DATABASE-CONVENTIONS.mdapp/repositories/database.py 中的 adapt_sql() 函数自动处理占位符转换(?%s)。