47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
// fake 假执行器:D8 闭环验收用,模拟平台执行(延迟后返回成功)。
|
|
package fake
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"everypublish/agentcore/internal/exec"
|
|
"everypublish/shared/proto"
|
|
)
|
|
|
|
// Executor 假执行器(可作兜底:任何平台都返回成功)
|
|
type Executor struct {
|
|
SimMS int
|
|
}
|
|
|
|
// Platform 空串表示通用(注册为兜底)
|
|
func (e Executor) Platform() string { return "" }
|
|
|
|
// Execute 模拟执行:延迟 SimMS 后返回成功
|
|
func (e Executor) Execute(ctx context.Context, task exec.Task) exec.Result {
|
|
select {
|
|
case <-time.After(time.Duration(e.SimMS) * time.Millisecond):
|
|
case <-ctx.Done():
|
|
return exec.Result{TaskID: task.TaskID, Status: "failed", Error: "cancelled"}
|
|
}
|
|
return exec.Result{
|
|
TaskID: task.TaskID,
|
|
Status: "success",
|
|
PublishedURL: "https://example.com/fake/" + task.TaskID,
|
|
Receipts: []string{},
|
|
}
|
|
}
|
|
|
|
// SolveChallenge 模拟扫码:延迟后返回已解决
|
|
func (e Executor) SolveChallenge(ctx context.Context, ch proto.Challenge, onQR func(qrToken, qrURL string)) (bool, string) {
|
|
if onQR != nil {
|
|
onQR("fake-qr-token", "https://example.com/fake-qr")
|
|
}
|
|
select {
|
|
case <-time.After(time.Duration(e.SimMS) * time.Millisecond):
|
|
case <-ctx.Done():
|
|
return false, ""
|
|
}
|
|
return true, "fake-qr-token"
|
|
}
|