Version: 0.9.60.dev.260430

后端:
1.接入主动调度 worker 与飞书通知链路
- 新增 due job scanner 与 active_schedule.triggered workflow
- 接入 notification.feishu.requested handler、飞书 webhook provider 和用户通知配置接口
- 支持 notification_records 去重、重试、skipped/dead 状态流转
- 完成 api / worker / all 启动模式装配与主动调度验收记录
2.后续要做的就是补全从异常发生到给用户推送消息之间的逻辑缺口
This commit is contained in:
Losita
2026-04-30 23:45:27 +08:00
parent e945578fbf
commit 0a014f7472
26 changed files with 3636 additions and 55 deletions

View File

@@ -93,6 +93,33 @@ func newApplyError(code ErrorCode, message string, err error) error {
return &ApplyError{Code: code, Message: message, Err: err}
}
// NewApplyError 构造 confirm/apply 链路可分类业务错误。
//
// 职责边界:
// 1. 供 service/API 层把预览归属、幂等冲突、adapter 业务拒绝转换为统一错误语义;
// 2. 不负责写 preview 状态,也不决定 HTTP 状态码;
// 3. cause 仅用于保留底层错误,展示给前端的文案应放在 message。
func NewApplyError(code ErrorCode, message string, cause error) error {
return newApplyError(code, message, cause)
}
// AsApplyError 尝试把 error 还原为 ApplyError。
//
// 职责边界:
// 1. 只做 errors.As 类型判断,方便 API 层统一映射业务错误;
// 2. 不把未知错误强行归类,避免数据库或系统故障被误判为 4xx
// 3. 返回 bool=false 时,调用方应按普通系统错误处理。
func AsApplyError(err error) (*ApplyError, bool) {
if err == nil {
return nil, false
}
var applyErr *ApplyError
if errors.As(err, &applyErr) {
return applyErr, true
}
return nil, false
}
func errorCodeOf(err error) ErrorCode {
if err == nil {
return ""