Files
smartmate/backend/shared/ports/active_scheduler.go
Losita 4d9a5c4d30 Version: 0.9.69.dev.260504
后端:
1. 阶段 4 active-scheduler 服务边界落地,新增 `cmd/active-scheduler`、`services/active_scheduler`、`shared/contracts/activescheduler` 和 active-scheduler port,迁移 dry-run、trigger、preview、confirm zrpc 能力
2. active-scheduler outbox consumer、relay、retry loop 和 due job scanner 迁入独立服务入口,gateway `/active-schedule/*` 改为通过 zrpc client 调用
3. gateway 目录收口为 `gateway/api` + `gateway/client`,统一归档 userauth、notification、active-scheduler 的 HTTP 门面和 zrpc client
4. 将旧 `backend/active_scheduler` 领域核心下沉到 `services/active_scheduler/core`,清退旧根目录活跃实现,并补充 active-scheduler 启动期跨域依赖表检查
5. 调整单体启动与 outbox 归属,`cmd/all` 不再启动 active-scheduler workflow、scanner 或 handler

文档:
1. 更新微服务迁移计划,将阶段 4 active-scheduler 标记为首轮收口完成,并明确下一阶段进入 schedule / task / course / task-class
2026-05-04 21:01:00 +08:00

23 lines
1.0 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package ports
import (
"context"
"encoding/json"
contracts "github.com/LoveLosita/smartflow/backend/shared/contracts/activescheduler"
)
// ActiveSchedulerCommandClient 是 gateway 调用 active-scheduler 服务的最小能力集合。
//
// 职责边界:
// 1. 只覆盖当前 HTTP 入口需要的 dry-run / trigger / preview / confirm
// 2. 不暴露 active-scheduler 的 DAO、graph、selection、job scanner 或 outbox consumer
// 3. 复杂响应先以原始 JSON 透传,避免 gateway 重建一套主动调度 DTO。
type ActiveSchedulerCommandClient interface {
DryRun(ctx context.Context, req contracts.ActiveScheduleRequest) (json.RawMessage, error)
Trigger(ctx context.Context, req contracts.ActiveScheduleRequest) (*contracts.TriggerResponse, error)
CreatePreview(ctx context.Context, req contracts.ActiveScheduleRequest) (json.RawMessage, error)
GetPreview(ctx context.Context, req contracts.GetPreviewRequest) (json.RawMessage, error)
ConfirmPreview(ctx context.Context, req contracts.ConfirmPreviewRequest) (json.RawMessage, error)
}