Appearance
模块:Shared(领域层)
唯一职责:定义跨层共享的 TypeScript 类型和纯函数,作为 Nuxt 约定目录
shared/自动导入。
边界
属于本模块:
- 节点相关类型(
NodeType、NodeStatus、ContentOrigin、NodeData判别联合、CanvasNode) - 画布类型(
Canvas、Viewport) - 边类型(
CanvasEdge) - 模型类型(
ModelModality、AiModelInfo、AiModel、ModelAbility、AbilityType、AbilityRules) - 连线校验纯函数(
validateEdge、wouldCreateCycle) - 上游数据收集纯函数(
collectUpstreamOutputs、buildPrompt) - 模型能力解析纯函数(
getAbilityOptions、resolveAbilityValues、getReferenceImageLimit、resolveConstrainedValues)
不属于本模块:
- 运行时副作用代码(Nuxt 约定:
shared/禁止导入 Vue/Nitro) - 组件 Props / Emits 类型(定义在各组件内部)
- API 请求/响应类型(定义在
services/内部) - UI 专属常量(定义在
constants/)
不变量
shared/types/中所有导出为interface或type,不含运行时逻辑shared/utils/中所有导出为纯函数,不导入 Vue/Nitro/Pinia- 作为 Nuxt 约定目录,所有导出自动导入,无需手动 import
- 位于架构分层 L0(领域层),被 L1、L2、L3 单向依赖
错误场景
领域层为纯类型定义和纯函数,不产生运行时错误。纯函数的异常输入通过返回值表达(如 validateEdge 返回 { valid: false, reason }),不抛出异常。
实现位置
| 角色 | 文件路径 |
|---|---|
| 节点类型 | shared/types/node.ts |
| 画布类型 | shared/types/graph.ts |
| 边类型 | shared/types/edge.ts |
| 模型类型 | shared/types/model.ts |
| 连线校验 | shared/utils/edge-validation.ts |
| 上游数据收集 | shared/utils/upstream.ts |
| 模型能力解析 | shared/utils/ability.ts |