workflow

package
v0.0.0-...-ee4cec9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

本文件汇集 TDX 相关任务共用的工具: 按日期范围下载并解压 zip 的通用流程。

Index

Constants

View Source
const ExtraTicValidDates = "tic_valid_dates"

ExtraTicValidDates 是 prepare_tic 写入 args.Extra 的 key, 值类型为 []time.Time,列出本轮成功下载到的分时日期。

Variables

This section is empty.

Functions

func GetInitTaskNames

func GetInitTaskNames() []string

func GetRegisteredTasks

func GetRegisteredTasks() map[string]*Task

func GetUpdateTaskNames

func GetUpdateTaskNames() []string

Types

type ErrorMode

type ErrorMode int
const (
	ErrorModeStop ErrorMode = iota
	ErrorModeSkip
)

type SkipCondition

type SkipCondition func(ctx context.Context, db database.DataRepository, args *TaskArgs) bool

SkipCondition determines if a task should be skipped

type Task

type Task struct {
	Name      string
	DependsOn []string
	Executor  TaskFunc
	SkipIf    SkipCondition
	OnError   ErrorMode
}

Task represents a unit of work with dependencies

var (
	TaskCalcBasic  *Task
	TaskCalcFactor *Task
)
var (
	TaskUpdateDaily *Task
	TaskInitDaily   *Task
)
var TaskFetchGBBQ *Task
var TaskPrepareTic *Task
var TaskUpdate1Min *Task
var TaskUpdateBlocks *Task
var TaskUpdateGBBQ *Task
var TaskUpdateHolidays *Task
var TaskUpdateSymbolNames *Task

type TaskArgs

type TaskArgs struct {
	Min        bool
	TempDir    string
	VipdocDir  string
	DayFileDir string
	Today      time.Time
	Plan       *WorkPlan
	Extra      map[string]interface{}
}

type TaskExecutor

type TaskExecutor struct {
	// contains filtered or unexported fields
}

TaskExecutor manages and executes tasks with dependency resolution

func NewTaskExecutor

func NewTaskExecutor(db database.DataRepository, tasks map[string]*Task) *TaskExecutor

NewTaskExecutor creates a new task executor

func (*TaskExecutor) GetTaskNames

func (te *TaskExecutor) GetTaskNames() []string

func (*TaskExecutor) HasTask

func (te *TaskExecutor) HasTask(name string) bool

func (*TaskExecutor) Run

func (te *TaskExecutor) Run(ctx context.Context, taskNames []string, args *TaskArgs) error

type TaskFunc

type TaskFunc func(ctx context.Context, db database.DataRepository, args *TaskArgs) (*TaskResult, error)

TaskFunc is the function that executes a task

type TaskResult

type TaskResult struct {
	State   TaskState
	Rows    int
	Message string
	Error   error
}

TaskResult holds the execution result of a task

type TaskState

type TaskState string

TaskState represents the state of a task execution

const (
	StatePending   TaskState = "pending"
	StateRunning   TaskState = "running"
	StateCompleted TaskState = "completed"
	StateSkipped   TaskState = "skipped"
	StateFailed    TaskState = "failed"
)

type TradingCalendar

type TradingCalendar struct {
	// contains filtered or unexported fields
}

func NewTradingCalendar

func NewTradingCalendar(holidays []time.Time) *TradingCalendar

func (*TradingCalendar) IsHoliday

func (c *TradingCalendar) IsHoliday(d time.Time) bool

func (*TradingCalendar) IsTradingDay

func (c *TradingCalendar) IsTradingDay(d time.Time) bool

func (*TradingCalendar) IsWeekend

func (c *TradingCalendar) IsWeekend(d time.Time) bool

func (*TradingCalendar) LastTradingDayOnOrBefore

func (c *TradingCalendar) LastTradingDayOnOrBefore(d time.Time) time.Time

LastTradingDayOnOrBefore 返回 ≤ d 的最近交易日。

type WorkPlan

type WorkPlan struct {
	Today          time.Time
	LastTradingDay time.Time
	Calendar       *TradingCalendar

	NeedDaily    bool
	NeedGbbq     bool
	NeedBasic    bool
	NeedFactor   bool
	NeedHolidays bool

	Reason string // 用于日志
}

WorkPlan 在任务图启动前汇总交易日历与各表最新日期,决定哪些任务真正需要跑。 任务框架里的 SkipIf 只读取本结构,不再各自重复查询。

func BuildWorkPlan

func BuildWorkPlan(db database.DataRepository, today time.Time) (*WorkPlan, error)

BuildWorkPlan 读取交易日历与各表最新日期,推导本次 cron 要做什么。

func (*WorkPlan) AnyNeeded

func (p *WorkPlan) AnyNeeded() bool

AnyNeeded 是否有任何任务需要执行。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL