Files
smartmate/backend/shared/ports/schedule.go
Losita 29b8cf0ada Version: 0.9.70.dev.260504
后端:
1. 阶段 5 schedule 首刀服务化落地,新增 `cmd/schedule`、`services/schedule/{dao,rpc,sv,core}`、`gateway/client/schedule`、`shared/contracts/schedule` 和 schedule port
2. gateway `/api/v1/schedule/*` 切到 schedule zrpc client,HTTP 门面只保留鉴权、参数绑定、超时和轻量转发
3. active-scheduler 的 schedule facts、feedback 和 confirm apply 改为调用 schedule RPC adapter,减少对 `schedule_events`、`schedules`、`task_classes`、`task_items` 的跨域 DB 依赖
4. 单体聊天主动调度 rerun 的 schedule 读写链路切到 schedule RPC,迁移期仅保留 task facts 直读 Gorm
5. 为 schedule zrpc 补充 `Ping` 启动健康检查,并在 gateway client 与 active-scheduler adapter 初始化时校验服务可用
6. `cmd/schedule` 独立初始化 DB / Redis,只 AutoMigrate schedule 自有表,并显式检查迁移期 task / task-class 依赖表
7. 更新 active-scheduler 依赖表检查和 preview confirm apply 抽象,保留旧 Gorm 实现作为迁移期回退路径
8. 补充 `schedule.rpc` 示例配置和 schedule HTTP RPC 超时配置

文档:
1. 更新微服务迁移计划,将阶段 5 schedule 首刀进展、当前切流点、旧实现保留范围和 active-scheduler DB 依赖收缩情况写入基线
2026-05-04 22:33:38 +08:00

26 lines
1.3 KiB
Go

package ports
import (
"context"
"encoding/json"
schedulecontracts "github.com/LoveLosita/smartflow/backend/shared/contracts/schedule"
)
// ScheduleCommandClient 是 gateway 调用 schedule 服务的最小能力集合。
//
// 职责边界:
// 1. 只覆盖当前 /api/v1/schedule HTTP 门面需要的能力;
// 2. 不暴露 schedule DAO、事务编排、粗排算法或 apply 状态机;
// 3. 复杂响应先以 JSON 透传,避免 gateway 复制 schedule 内部 DTO。
type ScheduleCommandClient interface {
GetUserTodaySchedule(ctx context.Context, userID int) (json.RawMessage, error)
GetUserWeeklySchedule(ctx context.Context, userID int, week int) (json.RawMessage, error)
DeleteScheduleEvent(ctx context.Context, req schedulecontracts.DeleteScheduleEventsRequest) error
GetUserRecentCompletedSchedules(ctx context.Context, req schedulecontracts.RecentCompletedRequest) (json.RawMessage, error)
GetUserOngoingSchedule(ctx context.Context, userID int) (json.RawMessage, error)
RevokeTaskItemFromSchedule(ctx context.Context, req schedulecontracts.RevokeTaskItemRequest) error
SmartPlanning(ctx context.Context, req schedulecontracts.SmartPlanningRequest) (json.RawMessage, error)
SmartPlanningMulti(ctx context.Context, req schedulecontracts.SmartPlanningMultiRequest) (json.RawMessage, error)
}