ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenProject 站内通知中心(In-app Notifications)完整指南:收件箱、通知原因与偏好设置

OpenProject 站内通知中心(In-app Notifications)完整指南:收件箱、通知原因与偏好设置 OpenProject 站内通知中心In-app Notifications完整指南收件箱、通知原因与偏好设置【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openprojectOpenProject 的站内通知In-app Notifications将与你相关的变更实时汇聚到一个统一的通知中心无论是有人 提及你、工作包的状态/类型/日期发生变更还是你被新指派了任务都会在浏览器内即时提醒你可与邮件通知并行或替代使用。本文以 docs/user-guide/notifications/README.md 为骨架结合仓库源码notifications_controller.rb、notification.rb、routes.rb与配套的 通知设置文档系统讲解通知中心的访问方式、筛选与管理、已读机制、通知原因模型以及通知偏好配置读完即可完全掌握 OpenProject 站内通知的日常用法与底层实现。站内通知是什么站内通知用于在应用内及时告知与你相关的重要变更典型场景包括有人在评论中提及你mentioned工作包的状态、类型或日期被修改你被指派assignee为某工作包的负责人或责任人你正在关注watching的工作包发生了活动你设置的工作包提醒reminder或日期预警date alert被触发。站内通知默认启用This feature is enabled by default并且可以与邮件通知并行使用也可以作为邮件通知的替代方案。这意味着你可以完全在浏览器内处理所有需要关注的事项而无需频繁查看邮箱。从源码层面看一条通知本质上是一条持久化记录。在 app/models/notification.rb 中Notification模型通过belongs_to :recipient接收者、belongs_to :actor触发变更的人、belongs_to :journal产生通知的活动日志以及belongs_to :resource, polymorphic: true多态关联到具体资源如工作包来组织通知数据并定义了完整的通知原因枚举详见下文通知原因Reasons模型一节。如何访问站内通知顶部铃铛图标与未读徽章当存在需要你关注的通知时顶部页头top header右侧的通知铃铛图标上会显示一个红色徽章数字表示未读通知总数。徽章最多显示到 99超过后显示为99。点击右上角的铃铛图标即可进入Notification center通知中心。在路由层面通知中心的入口定义在 config/routes.rbresources :notifications, only: :index do collection do concerns :with_split_view post :mark_all_read resource :menu, module: :notifications, only: %i[show], as: :notifications_menu end end scope :notifications do get /, to: notifications#index, as: :notifications_center end对应的控制器 app/controllers/notifications_controller.rb 由NotificationsController ApplicationController实现index动作渲染专用的notifications布局页面渲染由前端 Angular 完成。通知中心的列表语义通知中心里每一行代表一个产生了通知的工作包。同一个工作包可能生成多条通知——例如你先关注了某个工作包一个人修改了它的日期随后另一个人又修改了状态这两次变更会分别生成两条通知。此时行右侧的蓝色徽章显示与该工作包相关的未读通知数量。工作包按新鲜度freshness排序列表顶部的行拥有最新的通知。如果一个原本排在较下方的工作包有了新更新它会因为成为最新通知而被移到列表顶部。[!NOTE] 如果同一个工作包存在多条通知工作包提醒 会优先展示当存在提醒时提醒内容显示在页面底部。如果某工作包同时设置了提醒和日期预警通知日期预警会与提醒合并显示在最后一行其余通知原因watcher、mentioned、assignee则继续显示在通知的第一行。管理通知分屏视图与五种筛选区域点击一条通知会在分屏视图split screen中打开该工作包的Activity活动标签页双击通知则打开工作包的完整视图。[!TIP] 分屏视图左侧有拖动条resizer你可以拖动调整分屏宽度调整结果会保存在本地并应用于其他分屏布局。打开 Activity 标签页后页面会自动滚动到最后一次产生通知的事件位置。标签页旁边的徽章表示内容数量例如Relations关系标签旁的数字 1 表示当前工作包与另一个工作包存在关系。[!TIP] 并非所有工作包活动都会生成通知。例如你因为被 提及而收到通知但那次提及之后该工作包可能还有其他活动——点击通知打开页面时Activity 标签页会自动滚动并高亮那次 提及因为那是触发通知的原始事件但后续活动并不会自动滚动到。通知中心左侧菜单提供了两组预定义筛选以及若干视图控制文档中标注为 Area 1–5Area 1 – 按原因筛选按你收到通知的原因过滤包括被 提及mention、你是该工作包的指派对象assignee或责任人accountable、你关注的工作包、以及你设置了活动提醒或日期预警的工作包。Area 2 – 按项目筛选按项目过滤例如只看某个特定项目产生的通知。Area 3 – 视图控制选择查看Unread仅未读或All全部其中All会包含之前已标记为已读的通知Mark all as read全部标记为已读按钮可以一键清空通知收件箱。Area 4 – 通知设置入口点击Settings按钮可查看或修改当前通知偏好也可以从右上角头像 Account settingsNotification settings进入。Area 5 – 分屏视图分屏不仅能查看工作包活动还能切换到工作包的 Overview、Files、Relations、Watchers 等其他标签页。[!TIP]Mark all as read只会清除当前页面上可见的通知行。如果未读通知数量非常多最旧的通知可能不在当前页面上此时可能需要多次点击该按钮才能完全清空收件箱。后端筛选与全部标记已读的实现筛选逻辑在控制器中由filtered_query私有方法实现app/controllers/notifications_controller.rb。它基于Queries::Notifications::NotificationQuery构建查询默认限定read_ian f未读并根据 URL 参数追加条件def filtered_query query Queries::Notifications::NotificationQuery.new(user: current_user) query.where(:read_ian, , f) case params[:filter] when project id params[:name].to_i query.where(:project_id, , [id]) when reason query.where(:reason, , [params[:name]]) end filtered_query query end而mark_all_read动作notifications_controller.rb正是基于这个筛选后的查询一次性把符合条件的通知批量更新为已读def mark_all_read if filtered_query.valid? filtered_query.results.update_all(read_ian: true, updated_at: Time.zone.now) else flash[:error] filtered_query.errors.full_messages.join(, ) end redirect_back fallback_location: notifications_path endread_ian即 read in-app notification站内通知已读标记字段可见已读/未读是通知记录上的持久化状态而不是仅存在于前端内存中的临时状态。通知原因Reasons模型通知中心左侧按原因筛选的选项与后端Notification模型中的REASONS枚举一一对应app/models/notification.rb枚举值含义mentioned被 提及assigned被指派为负责人assigneewatched关注的工作包发生活动subscribed订阅的工作包发生活动commented有新的评论created有新工作包被创建processed工作包状态被处理/变更prioritized优先级被修改scheduled日期被排定/修改responsible你是责任人accountabledate_alert_start_date开始日期临近预警date_alert_due_date截止日期临近/逾期预警shared工作包被共享给你reminder你设置的个人提醒被触发在前端通知中心的原因筛选菜单定义于 in-app-notification-center.component.ts包含 mentioned、accountable、watched、dateAlert、shared、reminder 等筛选项并通过urlParams.get(name)与后端params[:name]对接实现了前后端一致的筛选链路。标记通知为已读标记已读有三种入口通知行上的信封图标点击行右侧的Mark as read信封图标按钮会将该工作包对应的全部未读通知即蓝色徽章上的数量一次性标记为已读。分屏视图底部的 Mark as Read 按钮在分屏视图中打开工作包后点击底部的Mark as Read按钮效果与方式 1 相同。工作包完整视图右上角的信封图标在完整视图full screen中点击详情视图右上角的信封图标即可标记已读。通知中心之外的通知工作包上的未读徽章站内通知不仅存在于通知中心还会直接显示在工作包上——无论是在完整视图还是分屏视图中。如果当前打开的工作包存在相关未读通知Activity 标签页旁边会显示一个蓝色小徽章并标注未读通知数量。[!NOTE] 这个徽章上的数字不包含与日期预警Date alerts相关的通知。也就是说日期预警类通知只出现在通知中心收件箱 Inbox 与左侧独立的Date alerts分区中而不会叠加显示在工作包的 Activity 标签页徽章上。通知偏好设置通知中心 Area 4 的Settings按钮会带你进入通知设置页也可通过 头像 Account settingsNotification settings进入。完整说明见 Notification settings设置页分为四个区域Participating参与中的工作包你通过以下方式参与一个工作包被 提及、关注它出现在Watchers列表、或被指定为 assignee 或 accountable。默认情况下你会收到所有参与中的工作包的全部活动通知。对于你作为 assignee 或 accountable 的工作包可以通过勾选/取消勾选选项来调整。被 提及的通知无法关闭因为提及的目的就是引起你的注意如果不想再收到某个关注工作包的通知直接取消关注unwatch即可。[!NOTE] 修改这些设置可能导致你错过与你相关的重要更新。除非非常确定后果否则不建议更改默认值。Date alerts日期预警日期预警让你在参与中的工作包assignee、accountable 或 watcher的开始日期或截止日期临近时收到通知。对于开始日期和截止日期你可以选择当天、提前 1 天、提前 3 天或提前 1 周收到预警。[!NOTE]这里的天指自然日而非工作日。例如一个周一开始的工作包选择提前 3 天会在周五收到预警。日期预警每天在本地时间凌晨 1 点生成一次。启用日期预警时那些到期时间比所选预警时长更近的工作包不会生成通知。例如你选择截止日期前 3 天提醒而某个工作包此时只剩下 2 天到期则不会触发预警。对于逾期overdue日期你还可以选择周期性提醒每天、每 3 天或每周。[!NOTE] 逾期预警的旧通知会被标记为已读并替换为包含更新后截止日期的新通知。例如你选择每天提醒一个逾期工作包但一周后才查看你仍然只会看到该工作包的一条通知。要停止这些提醒可以取消勾选该选项或修改/移除工作包的日期。日期预警通知会同时出现在通知中心的Inbox和左侧独立的Date alerts分区中对应 访问站内通知。Non-participating非参与的工作包你还可以选择接收所有项目中、你未参与的工作包的特定事件通知包括新建工作包New work packages状态变更Status changes日期变更Date changes优先级变更Priority changes新评论New comments[!NOTE] 这些选项作用于所有项目中所有你未参与的工作包。如果启用过多你可能会收到大量无关通知请谨慎使用。Project-specific notifications项目级通知设置当你在某些项目更活跃、或某些活动如日期预警、新建工作包对你更重要时可以在项目级别精细调整通知设置点击 Add project-specific notifications按钮在出现的浮层表单中选择一个项目并指定通知设置保存后页面会列出所有已配置项目级通知的项目之后可随时修改。[!NOTE] 项目级设置会覆盖override上方的全局设置。当你觉得某个特定项目收到的通知过多或过少时可以使用这些设置。Email reminders邮件提醒站内通知之外你还可以通过邮件提醒补充通知例如在每天的固定时间收到摘要或在被 提及的瞬间立即收到邮件。相关说明见 Email reminders 与 账号设置中的邮件提醒。邮件提醒的默认配置为工作日周一至周五每天凌晨 2 点发送日报摘要你也可以选择立即接收、仅在特定日期/时间接收、暂停提醒邮件或完全关闭。若选择了被 提及时立即通知该提醒不会重复出现在日报摘要中。与其他通知形态的关系工作包提醒Reminders在工作包详情视图中点击Reminder闹钟图标可选择明天、3 天后、一周后、一个月后或指定日期/时间。预定义选项的时间默认为所选日期的上午 9 点可调整并可附带备注到点后提醒会出现在通知中心且当同一工作包存在多条通知时提醒优先展示详见 Work package reminders。邮件通知系统每天会通过邮件发送一次所有通知的汇总once-a-day summary也可以与站内通知并行使用。如果你倾向于完全不使用站内通知可以关闭对应偏好并依赖邮件渠道。小结OpenProject 的站内通知体系由通知记录 通知中心 偏好设置三层构成后端Notification模型持久化每条通知及其原因app/models/notification.rbNotificationsController负责收件箱渲染、筛选与批量已读app/controllers/notifications_controller.rb路由/notifications汇聚所有入口config/routes.rb前端 Angular 组件完成分屏、徽章与筛选交互。通过合理组合原因筛选、项目筛选、日期预警与项目级覆盖设置你可以把通知中心打造成完全贴合个人工作流的变更中枢。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表