Tanka · Micro App Domain Model
Model 0.2
Tanka embedded application platform · DDD analysis · 2026-09-02

内嵌微应用平台
领域模型

一套稳定的 App 身份与容器协议,承接外部 H5、Tanka Assistant 托管应用、组织上架、群聊分享和公网访问。

最小核心 Application + Publication

应用维护自身身份、当前生产版本和访问范围,不感知自己出现在哪些功能中。

托管差异 预发布后再提升

Managed App 的所有升级先到独立预发布;组织已上架时再按管理员策略审核。

信任边界 一次鉴权交接

Launch Credential 只建立一次可信身份;之后 Session、过期和业务授权由应用负责。

先回答五个不同问题

发布、受众、组织上架、保存与分享可以同时存在,但不能互相替代。每个功能侧只持有稳定 appId。

当前边界

不设计 SDK 具体签名、部署编排、数据库兼容和应用内部权限;这些不再改变核心领域模型。

核心领域决策已闭环 剩余问题进入详细设计

完整用户故事

故事从一个待解决的协作问题开始,依次经过实现路径选择、制作或接入、发布、分发使用与持续治理。角色只是每个阶段的行动者。

先有业务需求,再有 App

例如,安全团队希望员工阅读指定 Memo、完成手写签名、生成 PDF 留档,并让负责人查看签署进度。此时用户表达的是工作目标,还没有 Application。

从零定制、单人维护Member 在 Flow 中交给 Tanka Assistant 制作 Managed App。

已有系统或需要多人研发外部团队完成研发与部署,Tenant Admin 以 General App 接入。

1
明确需求

Member 描述要解决的工作问题与期望结果。

2
选择路径

选择 Assistant 制作,或接入已有外部系统。

3
制作或接入

创建稳定 appId;生成源码草稿或配置外部 URL。

4
验证与发布

Managed App 先预发布;Owner 配置 Audience 并发布。

5
组织治理

需要时由 Admin 审核上架并选择升级策略。

6
分发与使用

分享、保存或嵌入;容器校验后打开业务页面。

7
迭代与交接

新版本重复预发布;必要时下架、转移或删除。

角色职责索引

下面按角色汇总职责,便于确认边界;实际发生顺序以上方主线为准。

Managed App Owner

制作、预发布与升级

  • US-C1 在 Flow 中描述需求,创建带稳定 appId 的内部草稿。
  • US-C2 预览独立实例,确认保存为自己的正式应用。
  • US-C3 配置 Public / Private,并发布首个生产版本。
  • US-C4 分享到群聊或 Memo,但不改变访问权限。
  • US-C5–C7 新版本先预发布,再按组织策略提升或审核。
  • US-C8 下架或在满足条件后软删除自己的应用。
Tenant Admin

接入与组织治理

  • US-A1 配置外部 URL、声明版本与受众,接入 General App。
  • US-A2 审核 Managed App 并上架到组织应用中心。
  • US-A3–A4 选择自动升级或逐版本审核,并对预发布作出决定。
  • US-A5 查询全部管理审计;运行打开记录不进入该范围。
  • US-A6 在成员离职等场景指定新的唯一 Owner。
Tenant Member

发现、打开与协作

  • US-M1 从 App Center、Chat、Memo 或 Deep Link 打开同一个 App。
  • US-M2 通过子页面 Deep Link 快速进入报表、记录或业务对象。
  • US-M3 保存有权访问的 App;取消保存不影响应用本身。
  • US-M4 通过原生 Picker 主动选择成员、Memo 或文件并返回 H5。
按生命周期排列的关键用户故事与领域结果
阶段主要角色用户目标领域结果
1 · 需求与选路Tenant Member / Admin解决具体协作问题,并决定自制还是接入尚不创建领域对象;确认路径后再创建 Application
2A · Assistant 制作Tenant Member在 Flow 描述应用并查看生成结果创建 DRAFT Application、稳定 appId 和可恢复源码项目
2B · General App 接入Tenant Admin配置已有外部 H5 的元信息、URL 与 Audience创建 EXTERNAL_INTEGRATION Application,由外部团队维护研发部署
3 · 预发布验收Managed App Owner在独立实例验证首个或后续 Revision生产不受影响;Revision 可提升或撤销
4 · 首次发布Managed App Owner确认保存,选择 Public / Private 并发布Application 进入 ACTIVE;Publication 指向生产 Revision
5 · 组织上架(可选)Tenant Admin审核 App,并选择 Auto Upgrade 或 Review RequiredApp Center 创建 OrganizationAppListing 引用
6 · 分发与保存Owner / Tenant Member分享 App 或子页面、嵌入 Memo、保存到个人列表各功能保存 appId 引用;Audience 与所有权不变
7 · 打开与使用Tenant Member从任一入口进入业务页面并使用原生 Picker容器先校验访问;应用后端完成一次身份交换后自管 Session
8 · 修改与升级Owner / Tenant Admin验证新版本,并按升级策略提升或审核批准后切换 activeRevisionId;拒绝时旧生产版本继续服务
9 · 持续治理Tenant Admin / Owner审计、下架、所有权兜底或软删除管理动作留痕;功能侧历史引用不被反向删除

统一语言

“上架”只指进入组织应用中心;“发布”只指在 Tanka 内拥有可运行生产版本。两者必须在产品、事件和接口中分开。

Application
具有稳定全局 appId、创建来源、Owner 和当前配置的应用身份。
Tanka Assistant App
由 Assistant 制作,Tanka 托管源码、预发布与生产版本。
External Integration
Tenant Admin 配置外部 URL,开发部署由外部团队负责。
Managed Revision
Managed App 的不可变版本,必须先部署到 Pre-release。
Publication
Tanka 内发布状态、当前生产 Revision 与 AudiencePolicy。
AudiencePolicy
PUBLIC 为 Tenant 全员;PRIVATE 为指定成员白名单。
Public Web
Managed App 是否允许脱离 Tanka、无注入上下文打开。
Organization App Listing
App Center 持有的组织上架配置,包含默认顺序和升级策略。
Saved App
Member 保存某 App 的简单关系,不授予访问或管理权。
AppReference
Chat / Memo 持有的 appId 与 Deep Link 引用。
UpgradePolicy
AUTO_UPGRADE 或 REVIEW_REQUIRED。
LaunchCredential
为一次真实 Tanka 启动签发的短期一次性凭证。
VerifiedPrincipal
应用后端验证得到的 Tenant、Member 与 App 身份事实。
Deep Link
定位 Tanka 资源或 App 内路由的 URI,不携带身份和授权。
Build从源码生成版本产物
Pre-release部署到隔离验证实例
Publish开放应用或提升生产版本
List加入组织应用中心
Share在功能侧创建引用

子域与限界上下文

Application Governance 保持最小;App Center、Chat、Memo 与 Navigation 在自己的边界引用 appId,不把入口位置反写进应用。

核心子域差异化子域支撑域Tanka 既有上下文外部系统
Tanka 微应用平台限界上下文图 应用治理位于中心,与组织身份、AI 创建、托管交付、App Center 审核、运行容器、鉴权、协作、审计和外部 H5 相连。 EXISTINGOrganization& IdentityTenant · Member · Admin DIFFERENTIATORAI App CreationFlow · Assistant · Source DIFFERENTIATORManaged DeliveryRevision · Pre-release COREApplication GovernanceApplication · Publication · Audience SUPPORTApp Center& ReviewListing · Saved · Review EXISTINGCollaborationChat · Memo · AppReference SUPPORTRuntime HostContainer · Bridge · Deep Link CRITICAL SUPPORTAuthentication BrokerIssue · Consume · Verify SUPPORTAudit & ComplianceManagement event projection EXTH5SystemURL

Application Governance

维护稳定 App 身份、唯一 Owner、元信息、Publication、Audience、软删除和管理员所有权转移。

不负责:列表入口、代码协作、业务权限

AI App Creation

把 Member 意图转成可恢复的源码项目;开始制作即创建内部 DRAFT Application。

Flow Agent 是工具,不是 Owner

Managed Delivery

管理不可变 ManagedRevision、独立预发布实例与生产指针切换;数据库兼容由应用负责。

所有正式版本先经过 Pre-release

App Center & Review

持有 OrganizationAppListing、SavedApp、升级策略和审核请求,组合 App Center 查询。

只引用 appId,不反向写 Application

Runtime Host

跨端解析入口、检查发布与 Audience、运行 H5、初始化 Bridge 并处理版本重新加载。

下架后在加载 H5 前拒绝

Authentication Broker

为一次真实 Host 启动签发和消费 Credential,向应用后端返回 VerifiedPrincipal。

不维护应用自己的 Session

Collaboration

Chat 与 Memo 保存自己的 AppReference;分享只创建引用,不改变 Audience。

历史引用可显示下架或删除状态

Audit & Compliance

订阅管理类领域事件形成只追加投影;普通打开与 SDK 调用属于未来运行埋点。

不是业务状态源

最小领域模型

Application 是核心聚合。ManagedRevision、审核请求与 Credential 只有在需要独立生命周期时才单独存在。

Tanka 微应用最小领域模型 Application 位于中央,结构关联 ManagedRevision、AppReviewRequest、CredentialGrant;App Center、Chat、Memo 在功能侧通过 appId 引用;AuditRecord 是事件投影。 MANAGED ONLY · ROOTManagedRevisionAppId · RevisionId · VersionSourceSnapshot · ArtifactRefPreReleaseEndpoint · State预发布就绪后不可原地修改 PROCESS ROOTAppReviewRequestAppId · RevisionId · PurposeRequester · Reviewer · DecisionSUBMITTED / APPROVED / REJECTED首次上架或需审核升级 CORE AGGREGATE ROOTApplicationTenantId · global AppIdCreationSource · OwnerMemberId?Metadata · ExternalConfig?Lifecycle: DRAFT / ACTIVE / DELETEDPublication: state · audienceactiveRevisionId? (Managed only)不持有保存、分享、上架或 Pin 的反向关系 FUNCTION-SIDE REFERENCESApp Center · Chat · MemoOrganizationAppListingSavedApp · AppReferenceNavigationConfig只保存 appId 与本功能数据 SECURITY ROOTCredentialGrantAppId · TenantId · MemberIdNonce · IssuedAt · ExpiresAtISSUED / CONSUMED / EXPIRED一次身份交接 READ MODELAuditRecord · management events only

Application 聚合不变量

  • TenantId、全局 AppId 与 creationSource 创建后不变。
  • Assistant App 只有一个 Owner;只有 Tenant Admin 可以转移。
  • Publication 只有 PUBLISHED / UNPUBLISHED,并保存 Audience 与生产指针。
  • 删除前必须下架且不存在组织上架;删除不级联功能侧引用。

为什么只保留这些对象

  • ManagedRevision 需要不可变版本与独立预发布生命周期。
  • AppReviewRequest 需要被提交、批准、拒绝或撤销。
  • OrganizationAppListing 承载管理员排序与 UpgradePolicy,归 App Center。
  • SavedApp、AppReference 和 Pin 没有资格进入 Application 聚合。
AppMetadatatitle · description · icon · declaredVersion
CreationSourceTANKA_ASSISTANT | EXTERNAL_INTEGRATION
AudiencePolicyPUBLIC | PRIVATE(memberIds)
Publicationstate · activeRevisionId?
ExternalConfigentryUrl
WebExposureTANKA_ONLY | PUBLIC_WEB
UpgradePolicyAUTO_UPGRADE | REVIEW_REQUIRED
RuntimeDescriptorsurface · hostVersion · capabilities
DeepLinkappId · path · query

状态机与升级活动

应用身份、Tanka 内发布、预发布版本和审核流程分别变化。生产始终只有一个 activeRevisionId。

SaveApplicationSoftDelete DRAFT可从来源 Flow 恢复 ACTIVE可发布、升级与管理 DELETED软删除,历史引用保留
查看状态机文字版

Application:DRAFT 在用户开始制作时创建,保存后进入 ACTIVE;下架且移除组织上架后可软删除。

Publication:只保留 UNPUBLISHED ⇄ PUBLISHED;下架由容器阻止普通打开。

ManagedRevision:BUILDING → PRE_RELEASE_READY;可撤销,或被生产指针引用。Revision 本身不变成 PUBLISHED。

AppReviewRequest:SUBMITTED → APPROVED / REJECTED / WITHDRAWN;绑定具体 Revision。

ACTIVITY

Managed App 升级

所有变更先到预发布;只有“是否组织上架”和 UpgradePolicy 决定生产提升路径。

Managed App 升级活动图 Owner 请求修改,交付系统构建预发布,Owner 验证后,根据是否组织上架和升级策略直接提升或提交管理员审核,普通成员在批准前继续使用旧版本。 OWNERMANAGED DELIVERYTENANT ADMINMEMBERS / PRODUCTION 请求修改构建部署预发布Owner 验证否:无需审核是:提交审核审核批准拒绝 / 撤销 生成源码快照 ManagedRevision Pre-release Ready 需要审核?Listing + Policy 确认发布 提交审核 管理员决定 批准目标 Revision 保持旧生产版本 切换 activeRevisionId

两类应用,共用一个运行模型

创建来源是唯一判别字段:TANKA_ASSISTANTEXTERNAL_INTEGRATION。当前不再增加一一对应的 AppKind。

EXTERNAL_INTEGRATION

General App

创建与管理
Tenant Admin 配置
研发协作
Tanka 外部完成
运行入口
管理员填写的外部 URL
版本
可填写 declaredVersion,仅作元信息
域名风险
Tenant 自行承担;只做基础技术校验
部署与回滚
外部团队负责,Tanka 不保证
独立访问
由外部应用自己的登录策略决定
TANKA_ASSISTANT

Managed App

创建与管理
唯一 Tenant Member Owner
研发协作
当前不支持;多人场景转 External
运行入口
当前 activeRevisionId
版本
不可变 ManagedRevision
预发布
所有正式升级的必经步骤
组织升级
AUTO_UPGRADE / REVIEW_REQUIRED
公网访问
独立 PUBLIC_WEB 配置
P

组织上架是治理,不是访问授权

Owner 可以把 App 发布给指定成员或 Tenant 全员,并在群聊传播;Admin 上架决定它是否进入组织应用中心,以及后续生产升级是否必须审核。

CONFIRMED

一次鉴权交接

前端环境信息用于体验;真实业务身份只能由应用后端消费一次性 Launch Credential 后建立。

CLIENT HINTS

运行体验上下文

surface、hostVersion、bridgeVersion、theme、locale、timezone、tenantHint、memberHint

允许:渲染、兼容判断、调用 Host 能力不能:直接建立业务登录态
SERVER EXCHANGE
SERVER FACT

VerifiedPrincipal

appId、tenantId、memberId、authenticatedAt、launchId

允许:应用后端建立自己的 Session之后的过期、登出和授权由应用负责
Tanka 内嵌应用一次鉴权时序 Host 先校验应用发布、Membership 和 Audience,加载 H5 后签发一次性 Credential,应用后端向 Auth Broker 验证并建立自己的业务 Session。 Tanka HostClient + Runtime H5 FrontendEmbedded App App BackendOwns Session App GovernancePublication + Audience Auth BrokerIssue + Consume IdentityMembership LAUNCH ACCESSHOST CREDENTIALAPPLICATION LOGIN 1. ResolveLaunch(appId, current session)2. Read active Membership3. MembershipSnapshot4. Allow(activeRevisionId) / Deny5. Load H5 + RuntimeDescriptor 6. requestLaunchCredential(nonce)7. Issue bound one-time credential8. LaunchCredential9. Return credential 10. Exchange credential11. Verify + consume12. Recheck publication + audience13. Access fact14. VerifiedPrincipal15. Create application session UNPUBLISHED 或无权访问时,Host 不加载业务页面 Credential 绑定 appId、tenantId、memberId、nonce 与短期有效期 伪造 Bridge 或用户资料不能换得可信业务 Session
查看鉴权时序文字版
  1. Host 以 appId 和当前登录会话解析所属 Tenant,读取活动 Membership、Publication 与 Audience。
  2. 允许后才加载 H5,并注入仅用于体验的 RuntimeDescriptor。
  3. H5 通过 Bridge 请求短期一次性 LaunchCredential,并交给自己的应用后端。
  4. 应用后端向 Tanka Auth Broker 验证;Broker 单次消费 Credential,并重新检查当前发布与访问事实。
  5. 应用后端获得 VerifiedPrincipal,创建自己的 Session;后续过期、续期、登出与业务授权由应用自行管理。
SECURITY ROOT

CredentialGrant

GrantId、AppId、TenantId、MemberId、Nonce、IssuedAt、ExpiresAt、ConsumedAt、Status。

只完成一次身份交接,不成为长期业务 Token。
VALUE OBJECT

VerifiedPrincipal

服务端确认的 App、Tenant、Member 和认证时间;不包含应用业务角色。

仅供应用后端建立自己的 Session。
APPLICATION OWNERSHIP

Own Session Policy

应用决定自己的 Cookie / Token、续期、过期、登出和业务权限。

Bridge 不在 401 后刷新通用 Tanka userToken。
OUTSIDE TANKA

TANKA_ONLY 在拿不到有效 Credential 时阻止业务访问。Managed App 的 PUBLIC_WEB 与可独立打开的 General App 使用自己的公网身份策略,不获得 Tanka 注入状态。

领域事件与管理审计

管理审计只覆盖改变应用、版本、组织上架和治理状态的操作。普通打开、Deep Link 点击与 SDK 调用留给未来运行埋点。

Application Governance

  • ApplicationDraftCreated内部草稿与 appId 已建立
  • ApplicationActivated用户确认保存
  • ApplicationMetadataUpdated当前元信息改变
  • AudiencePolicyChangedPublic / Private 或白名单改变
  • ApplicationPublishedTanka 内正式开放
  • ApplicationUnpublished容器阻止普通打开
  • ApplicationOwnershipTransferredAdmin 指定新 Owner
  • ApplicationSoftDeleted业务对象软删除

Delivery & Review

  • ManagedRevisionBuildStarted新版本开始构建
  • ManagedRevisionPreReleaseReady独立预发布可验证
  • ManagedRevisionWithdrawn创建者撤销本次版本
  • OrganizationAppListed管理员完成组织上架
  • UpgradePolicyChanged升级治理策略改变
  • VersionUpgradeRequested提交具体 Revision
  • VersionUpgradeApproved管理员批准版本
  • ProductionRevisionChanged生产指针完成切换

Feature-side References

  • AppSavedApp Center 保存 appId
  • SavedAppRemoved只删除个人保存关系
  • ChatAppReferenceCreatedChat 保存 App 或子页面引用
  • MemoAppReferenceCreatedMemo 保存 Embed 引用
  • OrganizationAppUnlisted移除官方入口,不删除 App

AuditRecord

按 Tenant 隔离的只追加管理投影。记录谁在什么时候改变了什么,以及命令是否成功。

auditIdtenantIdappIdrevisionId?actorTypeactorIdactionresultbefore?after?reason?correlationIdoccurredAteventVersion
Append onlyManagement onlyToken redactionTenant-scoped query
关键领域事件的消费者和结果
事件直接消费者结果边界
ApplicationUnpublishedRuntime Host拒绝新普通会话;功能侧可显示不可用不删除历史引用
OrganizationAppListedApp Center生成组织应用入口与 UpgradePolicy不授予访问权
ProductionRevisionChangedRuntime Host新会话加载新 Revision旧会话按需 UPGRADE_REQUIRED
ApplicationOwnershipTransferredAI Creation + Delivery新 Owner 获得源码与后续升级能力不转移原个人 Flow
ApplicationSoftDeletedApp Center + Collaboration引用显示“应用已删除”AuditRecord 永久保留

运行容器、JS SDK 与 Deep Link

当前只定义能力族和信任等级。Tanka 数据通过原生 Picker 由用户主动选择,不提供 H5 静默枚举组织数据的接口。

能力族作用关键对象信任等级
Environment

端类型、Host / Bridge 版本、主题、语言、时区和能力判断。

RuntimeDescriptor体验信息
Initialization

Host 握手、ready / failure 与 Capability Negotiation。

BridgeSessionHost 控制
Credential

请求一次性 Launch Credential;应用后端验证后建立 Session。

CredentialGrant服务端可信
Lifecycle

resume、pause、back、close、resize 与升级重载。

RuntimeSessionHost 控制
Navigation

打开统一 Tanka Deep Link、返回 Tanka 与跨应用路由。

DeepLink启动前校验
Native Picker

唤起成员、Memo、文件等原生选择器,并返回用户选择。

PickerResult业务输入
Collaboration

分享 App 或子页面、在 Memo 中创建 Embed 引用。

AppReference引用不授权
Messaging

Host 与 H5 请求响应、事件、超时和协议错误。

BridgeEnvelope协议通道
DETAIL DESIGN

_tanka-embed=true、SSR 首屏防闪动、浮窗模式、各端 Picker 清单与错误码属于 Runtime / SDK 设计,不进入领域实体。

跨上下文不变量

这些规则应同时出现在产品验收、服务端校验和契约测试中。

Tenant isolation

所有 App、Revision、Credential、Listing 和 Audit 都绑定 Tenant。

Deep Link 不携带 Tenant;appId 解析所属 Tenant,当前会话提供 Member。

Stable identity

appId 全局唯一,creationSource 创建后不可修改。

当前只有 TANKA_ASSISTANT 与 EXTERNAL_INTEGRATION 两类来源。

Single ownership

Managed App 只有一个 Owner,不提供协同开发成员。

需要多人开发时在外部完成,并以 General App 接入。

Reference direction

功能侧引用 appId,Application 不维护反向关系。

保存、分享、上架和 Pin 都不能成为访问授权。

Public semantics

PUBLIC 是 Tenant 全员,PUBLIC_WEB 是独立开关。

General App 的外部可访问性由外部应用自己决定。

Container gate

UNPUBLISHED 或 Audience 不允许时,容器不加载业务页面。

Owner 预览使用明确的预发布入口,不属于普通打开。

Pre-release first

Managed App 的每个正式新版本都先部署到预发布实例。

代码保存不会直接影响生产,提升才切换 activeRevisionId。

Review policy

首次组织上架必审,后续按 UpgradePolicy 执行。

REVIEW_REQUIRED 审核前,普通成员继续运行旧生产版本。

Identity handoff

前端提示不能建立业务身份。

应用后端消费一次性 Credential 后,自行管理 Session 与授权。

Audit boundary

管理事件进入只追加审计,运行行为不进入。

数据库兼容与应用业务操作也不属于 Tanka 管理审计。

Ownership fallback

只有 Tenant Admin 可以转移唯一 Owner。

交接源码项目与管理权,不交接原 Owner 的个人 Flow 和凭证。

Deletion boundary

删除前必须下架并移除组织上架。

软删除不级联 Chat、Memo 或 SavedApp 的历史引用。

能力分期与剩余详细设计

领域模型已闭环。剩余问题影响协议和工程实现,不再要求新增核心业务实体。

Foundation

通用内嵌与管理闭环

  • External Integration 注册与 URL 配置
  • Application、Publication、Audience
  • SavedApp 与 Organization App Listing
  • 跨端 Host、基础 Bridge 与 Deep Link
  • Launch Credential 一次交换
  • 发布、下架、软删除和管理审计
Creator loop

Tanka Assistant 制作闭环

  • DRAFT Application 与 Flow 恢复
  • ManagedRevision 与独立预发布实例
  • Owner 自主发布 Public / Private App
  • Chat 分享、Memo Embed 与保存
  • PUBLIC_WEB 独立配置
  • 管理员所有权转移兜底
Governed upgrades

组织升级治理

  • 首次组织上架审核
  • AUTO_UPGRADE / REVIEW_REQUIRED
  • 逐版本预发布审核与生产切换
  • 历史 Revision 回滚能力
  • UPGRADE_REQUIRED 与容器重载
  • 完整运维可观测能力

进入详细设计的 8 个问题

它们不会改变当前核心模型,但需要在 SDK、平台和数据设计中继续落地。

  1. URI scheme统一为 tanka://app/...,还是兼容既有 tanka-app://...
  2. 资源保留DRAFT、历史 Revision、预发布实例和软删除资源保留多久。
  3. 环境隔离预发布与生产的网络、数据和中间件如何隔离。
  4. Bridge 契约方法、错误码、Capability Negotiation 与各端差异。
  5. 鉴权迁移Bridge 1.0 cmdId 1006 如何迁移到 Launch Credential。
  6. 版本重载UPGRADE_REQUIRED、旧静态资源缓存与刷新体验。
  7. Public Web无 Tanka 模式初始化、入口 URL 与 SSR 首屏提示。
  8. 审计运维管理审计保留期、检索权限和导出格式。
MODEL 0.2

Tanka 管理应用如何进入组织与容器;
应用管理自己的业务与登录生命周期。

这条边界让外部 H5 与 Assistant 托管应用共享 appId、Publication、Deep Link 和鉴权入口,同时避免把 App Center、Chat、Memo 或应用业务权限塞进 Application 聚合。