@ 12- apps/ 登机
可重复使用、可续用、每个用户x租户 登入进度 供引导者使用 流动——任何应用程序/页面都可以采用一个小型系统.
- 坚持用户停止的准确步骤 每个地貌不透明 有效载荷,所以一个新鲜的恢复了它们离开的地方(不是开始).
- 持久性-不可知性: 向注入的 UI + 钩子聊天
OnboardingStore, (中文(简体) ), 所以你支持Prisma服务器的动作 TRPC、REST之类的. - 船舶a Prisma 帮助工具 (单位:千美元)
createOnboardingRepository对于普通案件, (单位:千美元)GuidedSection将国家约束在@12-apps/ui是因为SectionOnboarding+分阶.
两只船都一半在这里(12至23日):屏幕和端点持续 通过,每个工厂. 采用.md 是否通过 合同 ——配置表,被咬的接线规则,以及B阶段注释 给一个已经有桌子的宿主.
出口
| 条目 | 导出 | 什麽 |
|---|---|---|
. | OnboardingProvider 编号 : useOnboarding | 客户端状态,通过注入突变 OnboardingStore。 。 。 . |
. | GuidedSection | 登陆英雄 – 按步法师(步法师) – 完成总结,由坚持状态所驱动. |
. | createOnboardingApiStore 编号 : fetchOnboardingState | 被捆绑到包的OWN端点的商店,因此每个主机中一次声明了URL,身体形状和日期复兴. |
. | 类型 | OnboardingStore, (中文(简体) ), OnboardingStateSnapshot, (中文(简体) ), GuidedStep, (中文(简体) ), GuidedNav,, , , , , , , , |
./server | createApiOnboarding({ db }) | 进展表面作为框架中立的路线描述符—— GET 财务报告和审定财务报表 PATCH 与 save 编号 : dismiss 编号 : reset。 。 。 . |
./server | createOnboardingRepository(getPrisma) | Prisma 读取/写入其下的帮助(data-commerce + 开始/完成印花). |
./hono | onboardingRouter({ db, resolveActor }) | 与可挂的Hono路由器相同的表面. hono 是一个可选的对等点. |
prisma/ | onboarding.prisma + 其迁移 | 套装 OWNS的 OnboardingState 模型——一个主机同步它(从下到下)而不是重制. |
数据模型随包而来
不要用手把模型复制进你的计划 使用 Prisma 的多文件计划 文件夹并同步软件包本身的部分内容——一个字节的 CCOPY,从不 symlink(一个相通的迁移被Prisma悄悄地跳过):
node node_modules/@12-apps/onboarding/scripts/sync-onboarding-schema.mjs prisma/schema
移民船只在 prisma/migrations/里面的言辞,都是有戒备的
- 如此的东道主已经 onboarding_states 应用为无操作,没有
prisma migrate resolve 跳个舞 见Adopting.md.
接线
// server: one mount. The host keeps only who is calling, and where data lives.
const onboarding = onboardingRouter({
db: async () => (await getPrismaClient()) as unknown as OnboardingPrisma,
featureKeys: ['ai_integration'],
resolveActor: (c) => resolveActorFor(c), // → { userId, clientId } | null
});
app.route('/api/admin/:tenantSlug', onboarding.router);
// browser: the package's own store, against those endpoints
const store = createOnboardingApiStore({ apiBase, featureKey: 'ai_integration' });
const initial = await fetchOnboardingState({ apiBase, featureKey: 'ai_integration' });
<OnboardingProvider featureKey="ai_integration" store={store} initialState={initial}>
<GuidedSection steps={steps} title="…" configuredSummary={…} />
</OnboardingProvider>
其持久性不是这些路径的主机( localStorage, tRPC, 服务器动作)
仍然通过自己的 OnboardingStore ——接缝不变.