客户建站平台开发说明书
项目计划 →
09|前后端契约

数据模型、API与OA接口

明确平台事实对象、OA引用、接口规范和跨模块业务事件。

核心领域对象

不把OA对象复制成平台业务表

对象平台定义主要关系
OaIdentityRef内部员工外部身份引用,不是员工档案oa_user_id→platform_role_mapping→customer/site assignment
OaProjectRefOA内部项目引用和必要状态快照,不是项目管理tenant/site可关联一个或多个oa_project_id;只读
Tenant客户数据、权限、套餐和计费隔离边界拥有customer membership、subscription、site和数据
CustomerUser/Membership外部客户账号及其租户身份角色、站点范围、有效期和MFA
Subscription/Quota客户可用功能与资源限制package_version、tenant、usage和到期策略
Site站点语言、类型、区域、状态和当前发布版本tenant、template、page、content、domain、release
Page/ComponentInstance页面版本和组件树site_branch、component_version和theme
ContentItem/Translation产品、新闻、案例等结构化内容content_schema、language、taxonomy和version
Domain/Certificate域名所有权、DNS期望、证书和站点绑定site_domain_binding版本化
Release/Artifact发布快照、构建任务、产物、健康和线上指针site_version、deployment_unit
Inquiry/TrafficEvent网站转化事实/访问分析事件site、page、form和consent
OA数据映射

只保留稳定外部ID和授权必要快照

OA字段平台字段更新方式使用限制
员工唯一IDoa_identity_ref.external_user_idSSO实时+Webhook/对账主键必须稳定;禁用后撤销会话和分配
姓名/部门名称audit_actor_snapshot登录/动作时快照只用于显示和历史审计,不作为权限判断主键
部门ID/角色codeidentity_claim_snapshot每次登录和变更事件映射为平台角色,不直接当站点数据范围
内部项目IDoa_project_ref.external_project_id创建客户/站点时校验+定时摘要只读引用,不在平台修改OA项目
项目负责人IDinternal_owner_assignment.source_refOA同步后生成服务范围候选平台必须有明确customer/site assignment,不能仅凭部门自动全量访问
员工禁用/离职identity_status=disabledWebhook优先,定时对账兜底立即撤销登录、协助会话、API凭据和待分配权限
API统一契约

前端、PHP后端、OA适配器和Worker共同遵守

规则要求
路径与版本/api/v1;动作使用 /sites/{id}:publish、/tenants/{id}:suspend,不直接写status
身份上下文内部从OA SSO换取平台会话;客户从平台认证;服务端解析tenant、actor、role、scope
错误结构error_code、message、request_id、retryable、field_errors;不把异常堆栈返回前端
幂等创建租户/站点、询盘、发布、域名验证、导入等使用Idempotency-Key
并发更新draft/page/content携带version或If-Match,冲突返回最新版本和差异
分页搜索跨客户总后台使用cursor;限制page_size;复杂搜索走索引,不用offset扫描大表
长任务发布、导入、导出、AI、同步立即返回task_id,页面订阅或轮询任务状态
文件浏览器直传对象存储;服务端签发上传凭据和确认文件,不经PHP转发大文件
审计敏感动作服务端记录actor_type、真实ID、tenant/site、前后值、reason、request_id和结果
关键业务事件

跨模块异步联动,OA不可用不能拖垮建站主链

事件生产者消费者动作一致性/失败
oa.identity.disabledOA适配器撤销平台会话、协助会话和站点服务分配高优先级;失败P0告警
tenant.activated客户域创建配额、发送企业主邀请、初始化默认配置Outbox;邀请失败不回滚租户,可重发
site.created站点域预占资源、初始化模板/内容、建立监控创建和配额原子;初始化失败补偿释放配额
content.reviewed审核域解锁发布候选或返回驳回原因审核快照不可变
release.published发布域更新current_release、刷新CDN、启动监控、通知客户健康检查后切换;失败保持旧版
domain.verified域名域允许绑定和SSL签发重复事件幂等
inquiry.created询盘域客户通知、统计转化、可选回传外部系统询盘入库优先;下游失败重试
traffic.aggregated数据域更新客户和总后台看板缓存允许延迟,可从原始事件重算