Ech0 数据模型设计文档

本文件基于 Ech0/internal/model 目录所有模型与 DTO 汇总,覆盖持久化与非持久化数据结构。

相关文档

1. 通用响应模型

Result

  • code:1 成功 / 0 失败
  • msg:提示信息
  • data:响应主体

handler.Response

  • code:自定义业务码(可选)
  • data:响应数据
  • msg:提示信息

2. 基础 DTO

PageQueryDto

  • pagepageSizesearch

ImageDto

  • urlsourceobject_keywidthheight

GetPresignURLDto / PresignDto

  • 请求:file_namecontent_type
  • 响应:object_keypresign_urlfile_url

GetWebsiteTitleDto

  • website_url

3. Echo 领域模型

Echo

  • idcontentusernamelayoutprivate
  • user_idextensionextension_type
  • images(Image[])、tags(Tag[])
  • fav_countcreated_at

Image

  • idmessage_id(关联 Echo)
  • image_urlimage_sourceobject_key
  • widthheight

Tag / EchoTag

  • Tag:idnameusage_countcreated_at
  • EchoTag:echo_idtag_id

扩展类型与布局

  • Extension:MUSIC / VIDEO / GITHUBPROJ / WEBSITE
  • Layout:waterfall / grid / horizontal / carousel
  • ImageSource:local / url / s3

4. 用户与认证

User

  • idusernamepasswordis_adminavatar

OAuthBinding

  • user_idprovideroauth_id
  • issuerauth_type

UserInfoDto

  • usernamepasswordis_adminavatar

OAuthInfoDto

  • provideruser_idoauth_idissuerauth_type

JWT Claims

  • user_idusername + 标准 claims

OAuth2/OIDC 辅助结构

  • OAuthStateactionuser_idnonceredirectexpprovider
  • 各 Provider Token/User DTO:GitHub/Google/QQ 等

Passkey / WebAuthn

  • Passkeycredential_idcredential_jsonpublic_keysign_count
  • PasskeyRegisterBeginReqPasskeyRegisterBeginResp
  • PasskeyLoginBeginResp
  • PasskeyFinishReq
  • PasskeyDeviceDto
  • PasskeyUpdateDeviceNameReq

5. 设置模型

SystemSetting / SystemSettingDto

  • site_titleserver_logoserver_name
  • server_urlallow_register
  • ICP_numbermeting_apicustom_csscustom_js

CommentSetting / CommentSettingDto

  • enable_commentprovidercomment_api

S3Setting / S3SettingDto

  • enableproviderendpointaccess_keysecret_key
  • bucket_nameregionuse_ssl
  • cdn_urlpath_prefixpublic_read

OAuth2Setting / OAuth2SettingDto

  • enableproviderclient_idclient_secret
  • redirect_uriscopesauth_urltoken_urluser_info_url
  • is_oidcissuerjwks_url

AccessTokenSetting / AccessTokenSettingDto

  • nameexpiry(DTO)
  • iduser_idtokencreated_at(实体)

FediverseSetting / FediverseSettingDto

  • enableserver_url

AgentSetting / AgentSettingDto

  • enableprovidermodelapi_keypromptbase_url

BackupSchedule / BackupScheduleDto

  • enablecron_expression

6. Connect / Inbox / Todo

Connect

  • server_nameserver_urllogo
  • total_echostoday_echossys_username

Connected

  • idconnect_url

Inbox

  • idsourcetypecontent
  • readread_countmetaread_atcreated_at

Todo

  • idcontentuser_idusernamestatuscreated_at

7. Webhook 与队列

Webhook / WebhookDto

  • nameurlsecretis_active
  • last_statuslast_triggercreated_atupdated_at

DeadLetter

  • typepayloaderror_msg
  • retry_countnext_retrystatus
  • created_atupdated_at

8. ActivityPub / Fediverse 模型

WebFingerResponse

  • subjectaliaseslinks

Actor

  • idtypenamepreferredUsernamesummary
  • iconimagefollowersfollowinginboxoutbox
  • publicKey

Activity

  • @contextidtypeactorobject
  • publishedtoccsummary

Object

  • idtypeattributedTo
  • contentsourceattachmentpublished

Outbox / Followers / Following

  • OutboxResponseOutboxPage
  • FollowersResponseFollowersPage
  • FollowingResponseFollowingPage

Follow / Follower

  • Followactor_idobject_idstatus
  • Followeractor_iduser_id

InboxStatus / TimelineItem

  • 记录远端 Activity 与 Object 的快照内容及索引信息

9. 监控模型

Metrics

  • CPUMemoryDiskNetworkSystem

10. 常量与枚举

文件与存储

  • UploadFileTypeimage / audio
  • FileStorageTypelocal / s3

评论服务

  • twikoo / artalk / waline / giscus

S3 Provider

  • aws / aliyun / tencent / r2 / minio / other

OAuth Provider

  • github / google / qq / custom

Agent Provider

  • openai / deepseek / anthropic / gemini / qwen / ollama / custom

Inbox 类型与来源

  • 类型:echo / notification
  • 来源:system / agent / user

DeadLetter

  • 类型:webhook / push_echo_fediverse
  • 状态:pending / processing / failed / completed / discarded

AccessToken 过期策略

  • 8_hours / 1_month / never

Todo 状态

  • 0 未完成 / 1 已完成

ActivityPub

  • ActivityType:Create / Follow / Like / Accept / Announce / Undo
  • FollowStatus:none / pending / accepted / rejected

OAuth2

  • OAuth2Action:login / register / bind
  • AuthType:oauth2 / oidc