> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 通知

应用内通知、按用户偏好和管理员公告。

## 初学者演练

先决条件：阅读下面的两个初学者指南，完成 Web 本地设置，并在编辑器的根目录中打开此 monorepo。网页设置属于`apps/web/.env.local`； Next.js不读取根`.env`。默认fake模式下的`/dashboard`是无数据库演示； `/auth` 需要迁移数据库。

简而言之：工作区是一个团队的单独用户、数据和设置。服务器是可信后端；让提供商密钥远离浏览器和电话代码。迁移是创建或更新表的版本化数据库更改。人工智能模型是回答的引擎；型号目录是服务器上可用型号 ID 和价格的列表。提供商是一种外部服务，例如人工智能、电子邮件或计费服务。权利是允许工作区使用某项功能的授权。 Webhook 是一个服务发送到另一个服务的 URL 的消息。

1. 以测试会员身份登录并打开“设置”→“通知”以查看可用的频道首选项。

2. 在一个工作区中使用两名测试成员，并使用 `EMAIL_PROVIDER=local` 触发本地测试事件，例如邀请。

3. 确认只有符合条件的会员和已启用的频道才会在应用程序或本地发件箱中收到通知。不要向真实会员发送测试消息。

对于自定义代码，请从提供的 `prompts/README.md` 开始，然后复制最接近的提示：对于应用程序屏幕为 `prompts/new-app-screen.md`，对于公共页面为 `prompts/new-landing-page.md`。对于服务器、数据库或提供商工作，请为您的编码代理提供本指南的任务，并要求其读取 `AGENTS.md`、`.ai/PROJECT_CONTEXT.md` 和匹配的 `.ai/` 镜像；检查此处指定的确切源文件；列出文件并在编辑前进行检查；保留工作区所有权和仅限服务器的机密；并向您展示差异。告诉它您想要的行为、输入和输出字段、允许的角色、预期的成功和错误以及测试帐户、提供程序或设备。使用样本值；永远不要粘贴真正的秘密。

[开始之前](https://supastack.dev/zh/docs/web/before-you-start.md)

[终端基础知识](https://supastack.dev/zh/docs/web/terminal-basics.md)

[网络本地设置](https://supastack.dev/zh/docs/web/ship-in-5-minutes.md)

[座席提示和项目内存](https://supastack.dev/zh/docs/web/agents.md)


## 使用产品事件管道

`notification-events.ts` 将计费、预算、邀请、会员和关联帐户活动映射到本地化副本和按会员交付计划。 API和应用程序客户端读取登录工作区的通知；偏好控制合格的频道。

有些事件有意保留在应用程序内。例如，连接帐户刷新失败不得暴露令牌详细信息或触发未经请求的电子邮件。


## 尊重收件人的喜好

使用现有的交付计划、默认首选项和参与者排除选项，而不是单独向每个成员发送消息。事务性电子邮件仍然使用配置的提供商并记录其自己的发送结果。


## 验证收件人和状态

测试禁用的首选项、排除的参与者、删除的成员、未读/已读行为和另一个工作区。保持动态更新可访问并验证本地化消息。

[邮件发送](https://supastack.dev/zh/docs/modules/email.md)

[通知字典](https://supastack.dev/zh/docs/web/i18n.md)


## 安装与配置

通知服务(notification-service.ts)存储工作区级应用内记录;GET /api/notifications 为已登录成员列出它们,mark-read 路由更新状态。按用户的偏好标志控制产品更新和安全警报等类别。

成员在 /settings/notifications 中管理偏好。平台公告通过 announcement-actions 撰写,并通过同一管道投递。

```
GET   /api/notifications
PATCH /api/notifications   (mark-read)

Emitted on mutations, e.g.:
  member.left
  member.role_changed
```


## 实现流程

在成功的变更之后发出通知 —— 绝不在写入提交之前。保持负载结构化(类型、工作区、引用),使界面无需解析散文即可渲染和路由。

在投递可禁用类别之前检查偏好标志;与安全相关的通知(新会话、密钥变更)应保持强制性。


## 验证与排障

验证禁用的偏好会抑制投递、mark-read 跨会话持久、另一个工作区无法列出这些记录,以及公告到达预期成员。随着量级增长,将通知扇出保持在请求的关键路径之外。


## 下一篇

[账户与安全](https://supastack.dev/zh/docs/web/account.md)
