chore: track docs/readme updates and remove web dist from git

This commit is contained in:
2026-03-01 22:31:31 +08:00
parent 7e97aaa7fc
commit dbfec3645b
13 changed files with 43 additions and 47 deletions
+4
View File
@@ -0,0 +1,4 @@
# 数据流
1.前端开始注册,关键信息(user,passwd)传入后端接口,执行注册流程(此处注册后不自动登录),密码通过哈希后存数据库(不可逆存储)
2.前端登录,关键信息(user,passwd)传入后端接口,后端校验,成功后生成refresh token和access token,将accesstoken对应的session存入redis而不存token,校验由拿到token中获取的sid匹配,refresh token哈希后连带session的其他信息存入数据库,也可以存入redis进行加速读取,并将二者返回给前端,前端收到后,将access token存入localstroage或内存(防止xss, refresh token存入httponly cookie,使用时代credential include
3.业务使用,每次业务http请求前先检查access token的过期时间,如果少于1-5分钟触发刷新token,携带refreshtoken向后端发送请求进行更换token,否则则直接进行业务,若在后端业务开始鉴权时返回401,则前端也要重试refresh,此处refresh的时候可以同时更新refresh token和accesstoken,并且作废旧token,如果refresh token过期,即前端响应退出登录(此处可以模拟7天免登录),此处重试仅一次即可,多个同token refresh请求仅允许一个执行
+36
View File
@@ -0,0 +1,36 @@
# 数据流
业务触发
业务系统(如任务到期、任务创建、状态变更)先产生日志化业务事件。
事件带基础字段:event_id、event_type、user_id、occurred_at、payload。
通知规则判断
规则引擎判断这条事件是否需要通知、通知谁、用什么模板。
同时做用户偏好过滤(是否订阅、免打扰时段、语言、时区)。
调度器编排
立即通知:直接进入投递流程。
定时通知:调度器按 cron/延时规则在目标时间生成通知任务。
这一层负责时区换算与批量窗口控制(避免瞬时洪峰)。
写入 MQ
通知任务由生产者写入 MQ(如 notification.jobs)。
任务包含:job_id、channel=email、to、template_id、params、trace_id、retry_count 等。
消费者处理
Worker 从 MQ 拉取任务,先做幂等检查(idempotency_key)。
如果判定“已发送过”,直接 ACK 丢弃重复任务。
否则进入渠道网关(Email Adapter)。
渠道网关发送(Email
网关将模板渲染后的邮件通过 SMTP/邮件服务商发出。
返回成功或失败结果,并带错误码。
可靠性机制
成功:记录 sent 状态并 ACK MQ。
可重试失败(超时、限流、临时网络故障):写入重试队列,按指数退避再次投递。
不可重试失败(地址非法、模板错误)或超最大重试:进入 DLQ 死信队列,等待人工/自动补偿。
状态回写与观测
每次处理都会回写通知状态(pending/sent/failed/dead)到存储层。
同时上报指标和日志:送达率、重试次数、端到端延迟、失败原因分布。
告警系统基于阈值触发报警(如失败率突增、队列堆积)。