model

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package model 数据模型定义

Package model 定义了 TaskBridge 的核心数据模型

Index

Constants

View Source
const MetadataEnd = " -->"

MetadataEnd 元数据结束标记

View Source
const MetadataMarker = "<!-- TaskBridge-Metadata:"

MetadataMarker 元数据标记 - 用于在备注中识别元数据块

Variables

This section is empty.

Functions

func EmbedMetadata

func EmbedMetadata(description string, metadata *TaskMetadata) (string, error)

EmbedMetadata 将元数据嵌入到描述文本中

func ExtractMetadataOnly

func ExtractMetadataOnly(description string) string

ExtractMetadataOnly 从描述文本中提取元数据,返回清理后的描述

Types

type Capabilities

type Capabilities struct {
	SupportsDelta     bool `json:"supports_delta"`
	SupportsSubtasks  bool `json:"supports_subtasks"`
	SupportsPriority  bool `json:"supports_priority"`
	SupportsTags      bool `json:"supports_tags"`
	SupportsReminders bool `json:"supports_reminders"`
}

Capabilities Provider 能力

type ImportanceLevel

type ImportanceLevel int

ImportanceLevel 重要程度

const (
	// ImportanceNone 无重要程度
	ImportanceNone ImportanceLevel = 0
	// ImportanceLow 低重要程度
	ImportanceLow ImportanceLevel = 1
	// ImportanceMedium 中重要程度
	ImportanceMedium ImportanceLevel = 2
	// ImportanceHigh 高重要程度
	ImportanceHigh ImportanceLevel = 3
	// ImportanceCritical 关键重要程度
	ImportanceCritical ImportanceLevel = 4
)

func (ImportanceLevel) String

func (i ImportanceLevel) String() string

String 返回重要程度的字符串描述

type Manifest

type Manifest struct {
	Version   string                  `json:"version"`
	CreatedAt time.Time               `json:"created_at"`
	UpdatedAt time.Time               `json:"updated_at"`
	Providers map[string]ProviderMeta `json:"providers"`
	SyncPairs []SyncPair              `json:"sync_pairs"`
}

Manifest 全局清单文件

func NewManifest

func NewManifest() *Manifest

NewManifest 创建新清单

type MappingDatabase

type MappingDatabase struct {
	Version  string        `json:"version"`
	Mappings []TaskMapping `json:"mappings"`
}

MappingDatabase 映射数据库

func NewMappingDatabase

func NewMappingDatabase() *MappingDatabase

NewMappingDatabase 创建新映射数据库

type PendingOp

type PendingOp struct {
	ID        string    `json:"id"`
	Type      string    `json:"type"` // create, update, delete
	Provider  string    `json:"provider"`
	TaskID    string    `json:"task_id"`
	CreatedAt time.Time `json:"created_at"`
	Retries   int       `json:"retries"`
	Status    string    `json:"status"` // pending, retrying, failed
	LastError string    `json:"last_error,omitempty"`
}

PendingOp 待处理操作

type Priority

type Priority int

Priority 优先级

const (
	// PriorityNone 无优先级
	PriorityNone Priority = 0
	// PriorityLow 低优先级
	PriorityLow Priority = 1
	// PriorityMedium 中优先级
	PriorityMedium Priority = 2
	// PriorityHigh 高优先级
	PriorityHigh Priority = 3
	// PriorityUrgent 紧急优先级
	PriorityUrgent Priority = 4
)

func PriorityFromInt

func PriorityFromInt(i int) Priority

PriorityFromInt 从整数创建优先级

func (Priority) Emoji

func (p Priority) Emoji() string

Emoji 返回优先级的 Emoji 表示

func (Priority) String

func (p Priority) String() string

String 返回优先级的字符串描述

type PriorityCalculator

type PriorityCalculator struct {
	// WeightDueDate 截止日期权重
	WeightDueDate float64 `json:"weight_due_date"`
	// WeightImportance 重要程度权重
	WeightImportance float64 `json:"weight_importance"`
	// WeightUrgency 紧急程度权重
	WeightUrgency float64 `json:"weight_urgency"`
	// WeightProgress 进度权重
	WeightProgress float64 `json:"weight_progress"`
}

PriorityCalculator 优先级计算器 - AI 可调用

func NewDefaultPriorityCalculator

func NewDefaultPriorityCalculator() *PriorityCalculator

NewDefaultPriorityCalculator 创建默认优先级计算器

func (*PriorityCalculator) Calculate

func (pc *PriorityCalculator) Calculate(task *Task) int

Calculate 计算综合优先级分数

type ProviderData

type ProviderData struct {
	Provider      string        `json:"provider"`
	DisplayName   string        `json:"display_name"`
	LastFullSync  time.Time     `json:"last_full_sync"`
	LastDeltaSync time.Time     `json:"last_delta_sync"`
	SyncToken     string        `json:"sync_token"`
	ETag          string        `json:"etag"`
	Capabilities  Capabilities  `json:"capabilities"`
	Stats         ProviderStats `json:"stats"`
}

ProviderData Provider 数据元信息

type ProviderMeta

type ProviderMeta struct {
	Enabled       bool      `json:"enabled"`
	Authenticated bool      `json:"authenticated"`
	LastSync      time.Time `json:"last_sync"`
	TaskCount     int       `json:"task_count"`
	ListCount     int       `json:"list_count"`
}

ProviderMeta Provider 元数据

type ProviderRef

type ProviderRef struct {
	ID           string    `json:"id"`
	ListID       string    `json:"list_id"`
	ETag         string    `json:"etag"`
	LastModified time.Time `json:"last_modified"`
	Version      int       `json:"version"`
}

ProviderRef Provider 引用

type ProviderStats

type ProviderStats struct {
	TotalTasks     int `json:"total_tasks"`
	CompletedTasks int `json:"completed_tasks"`
	PendingTasks   int `json:"pending_tasks"`
	Lists          int `json:"lists"`
}

ProviderStats Provider 统计信息

type Quadrant

type Quadrant int

Quadrant 四象限 - 艾森豪威尔矩阵

const (
	// QuadrantUrgentImportant 第一象限 - 紧急且重要 - 立即做
	QuadrantUrgentImportant Quadrant = 1
	// QuadrantNotUrgentImportant 第二象限 - 不紧急但重要 - 计划做
	QuadrantNotUrgentImportant Quadrant = 2
	// QuadrantUrgentNotImportant 第三象限 - 紧急但不重要 - 授权做
	QuadrantUrgentNotImportant Quadrant = 3
	// QuadrantNotUrgentNotImportant 第四象限 - 不紧急也不重要 - 删除/延后
	QuadrantNotUrgentNotImportant Quadrant = 4
)

func CalculateQuadrant

func CalculateQuadrant(urgency UrgencyLevel, importance ImportanceLevel) Quadrant

CalculateQuadrant 根据紧急和重要程度计算象限

func CalculateQuadrantFromTask

func CalculateQuadrantFromTask(task *Task) Quadrant

CalculateQuadrantFromTask 根据任务属性自动计算象限

func (Quadrant) ShortName

func (q Quadrant) ShortName() string

ShortName 返回象限的简短名称

func (Quadrant) String

func (q Quadrant) String() string

String 返回象限的字符串描述

type SyncError

type SyncError struct {
	TaskID    string `json:"task_id"`
	Operation string `json:"operation"`
	Message   string `json:"message"`
}

SyncError 同步错误

type SyncOpStats

type SyncOpStats struct {
	Pulled  int `json:"pulled"`
	Pushed  int `json:"pushed"`
	Updated int `json:"updated"`
	Deleted int `json:"deleted"`
	Skipped int `json:"skipped"`
	Errors  int `json:"errors"`
}

SyncOpStats 同步操作统计

type SyncPair

type SyncPair struct {
	Source     string `json:"source"`
	Target     string `json:"target"`
	Enabled    bool   `json:"enabled"`
	Direction  string `json:"direction"`  // bidirectional, pull, push
	Resolution string `json:"resolution"` // latest_wins, source_wins, target_wins
}

SyncPair 同步对配置

type SyncSession

type SyncSession struct {
	ID          string      `json:"id"`
	Direction   string      `json:"direction"` // pull, push, bidirectional
	Source      string      `json:"source"`
	Target      string      `json:"target,omitempty"`
	StartedAt   time.Time   `json:"started_at"`
	CompletedAt time.Time   `json:"completed_at"`
	Status      string      `json:"status"` // running, completed, failed, conflict
	Stats       SyncOpStats `json:"stats"`
	Errors      []SyncError `json:"errors,omitempty"`
}

SyncSession 同步会话

type SyncState

type SyncState struct {
	Version           string        `json:"version"`
	SyncSessions      []SyncSession `json:"sync_sessions"`
	PendingOperations []PendingOp   `json:"pending_operations"`
}

SyncState 同步状态数据库

func NewSyncState

func NewSyncState() *SyncState

NewSyncState 创建新同步状态

type Task

type Task struct {
	// ID 任务唯一标识
	ID string `json:"id"`
	// Title 任务标题
	Title string `json:"title"`
	// Description 任务描述
	Description string `json:"description,omitempty"`
	// Status 任务状态
	Status TaskStatus `json:"status"`
	// CreatedAt 创建时间
	CreatedAt time.Time `json:"created_at"`
	// UpdatedAt 更新时间
	UpdatedAt time.Time `json:"updated_at"`
	// CompletedAt 完成时间
	CompletedAt *time.Time `json:"completed_at,omitempty"`

	// DueDate 截止日期
	DueDate *time.Time `json:"due_date,omitempty"`
	// StartDate 开始日期
	StartDate *time.Time `json:"start_date,omitempty"`
	// Reminder 提醒时间
	Reminder *time.Time `json:"reminder,omitempty"`

	// ListID 所属列表 ID
	ListID string `json:"list_id,omitempty"`
	// ListName 所属列表名称
	ListName string `json:"list_name,omitempty"`
	// Tags 标签列表
	Tags []string `json:"tags,omitempty"`
	// Categories 分类列表
	Categories []string `json:"categories,omitempty"`

	// Quadrant 四象限分类
	Quadrant Quadrant `json:"quadrant"`
	// Urgency 紧急程度
	Urgency UrgencyLevel `json:"urgency"`
	// Importance 重要程度
	Importance ImportanceLevel `json:"importance"`

	// Priority 优先级(1-4)
	Priority Priority `json:"priority"`
	// PriorityScore AI 计算的优先级分数
	PriorityScore int `json:"priority_score"`

	// Progress 进度(0-100)
	Progress int `json:"progress"`
	// EstimatedMinutes 预估时间(分钟)
	EstimatedMinutes int `json:"estimated_minutes,omitempty"`
	// ActualMinutes 实际时间(分钟)
	ActualMinutes int `json:"actual_minutes,omitempty"`

	// ParentID 父任务 ID
	ParentID *string `json:"parent_id,omitempty"`
	// SubtaskIDs 子任务 ID 列表
	SubtaskIDs []string `json:"subtask_ids,omitempty"`

	// Metadata 元数据,用于存储扩展信息
	Metadata *TaskMetadata `json:"metadata,omitempty"`

	// Source 任务来源平台
	Source TaskSource `json:"source"`
	// SourceRawID 原始平台的任务 ID
	SourceRawID string `json:"source_raw_id"`
	// ETag 用于并发控制的实体标签
	ETag string `json:"etag,omitempty"`
}

Task 统一任务模型 - 抽象所有 Todo 软件的任务

func CloneTask added in v1.0.4

func CloneTask(task *Task) *Task

func (*Task) CalculatePriorityScore

func (t *Task) CalculatePriorityScore() int

CalculatePriorityScore 计算优先级分数

func (*Task) DaysUntilDue

func (t *Task) DaysUntilDue() int

DaysUntilDue 计算距离截止日期的天数

func (*Task) IsCompleted

func (t *Task) IsCompleted() bool

IsCompleted 检查任务是否已完成

func (*Task) IsOverdue

func (t *Task) IsOverdue() bool

IsOverdue 检查任务是否已过期

type TaskList

type TaskList struct {
	// ID 列表唯一标识
	ID string `json:"id"`
	// Name 列表名称
	Name string `json:"name"`
	// Description 列表描述
	Description string `json:"description,omitempty"`
	// Source 来源平台
	Source TaskSource `json:"source"`
	// SourceRawID 原始平台的列表 ID
	SourceRawID string `json:"source_raw_id"`
	// CreatedAt 创建时间
	CreatedAt time.Time `json:"created_at"`
	// UpdatedAt 更新时间
	UpdatedAt time.Time `json:"updated_at"`
	// TaskCount 任务数量
	TaskCount int `json:"task_count,omitempty"`
}

TaskList 任务列表

func CloneTaskList added in v1.0.4

func CloneTaskList(list *TaskList) *TaskList

type TaskMapping

type TaskMapping struct {
	LocalID    string                 `json:"local_id"`
	TitleHash  string                 `json:"title_hash"`
	Providers  map[string]ProviderRef `json:"providers"`
	SyncStatus string                 `json:"sync_status"` // synced, pending, conflict
	LastSync   time.Time              `json:"last_sync"`
	Resolution string                 `json:"resolution"`
}

TaskMapping 跨 Provider 任务映射

type TaskMetadata

type TaskMetadata struct {
	// Version 元数据版本
	Version string `json:"version"`

	// Quadrant 四象限分类(1-4)
	Quadrant int `json:"quadrant"`
	// Urgency 紧急程度(0-4)
	Urgency int `json:"urgency"`
	// Importance 重要程度(0-4)
	Importance int `json:"importance"`

	// Priority 优先级(0-4)
	Priority int `json:"priority"`
	// PriorityScore AI 计算的优先级分数
	PriorityScore int `json:"priority_score"`

	// AISuggestion AI 建议内容
	AISuggestion string `json:"ai_suggestion,omitempty"`
	// AIConfidence AI 建议置信度
	AIConfidence float64 `json:"ai_confidence,omitempty"`

	// EstimatedMinutes 预估时间(分钟)
	EstimatedMinutes int `json:"estimated_minutes,omitempty"`
	// ActualMinutes 实际时间(分钟)
	ActualMinutes int `json:"actual_minutes,omitempty"`
	// PomodoroCount 番茄钟数量
	PomodoroCount int `json:"pomodoro_count,omitempty"`

	// CustomFields 自定义字段
	CustomFields map[string]interface{} `json:"custom_fields,omitempty"`

	// LastSyncAt 最后同步时间
	LastSyncAt time.Time `json:"last_sync_at"`
	// SyncSource 同步来源
	SyncSource string `json:"sync_source"`
	// LocalID 本地任务 ID
	LocalID string `json:"local_id"`
}

TaskMetadata 任务元数据 - 存储在原始软件的备注/描述中

func CloneTaskMetadata added in v1.0.4

func CloneTaskMetadata(metadata *TaskMetadata) *TaskMetadata

func ExtractMetadata

func ExtractMetadata(description string) (string, *TaskMetadata, error)

ExtractMetadata 从描述文本中提取元数据,返回描述和元数据

func MetadataFromTask

func MetadataFromTask(task *Task) *TaskMetadata

MetadataFromTask 从任务创建元数据

func NewTaskMetadata

func NewTaskMetadata() *TaskMetadata

NewTaskMetadata 创建新的元数据

func ParseMetadata

func ParseMetadata(s string) (*TaskMetadata, error)

ParseMetadata 从字符串解析元数据

func (*TaskMetadata) ApplyToTask

func (m *TaskMetadata) ApplyToTask(task *Task)

ApplyToTask 将元数据应用到任务

func (*TaskMetadata) ToJSON

func (m *TaskMetadata) ToJSON() (string, error)

ToJSON 序列化为 JSON 字符串 - 用于嵌入备注

type TaskSource

type TaskSource string

TaskSource 任务来源

const (
	// SourceMicrosoft Microsoft 来源
	SourceMicrosoft TaskSource = "microsoft"
	// SourceGoogle Google 来源
	SourceGoogle TaskSource = "google"
	// SourceFeishu 飞书来源
	SourceFeishu TaskSource = "feishu"
	// SourceTickTick 滴答清单来源
	SourceTickTick TaskSource = "ticktick"
	// SourceDida 滴答清单国内版来源
	SourceDida TaskSource = "dida"
	// SourceTodoist Todoist 来源
	SourceTodoist TaskSource = "todoist"
	// SourceOmniFocus OmniFocus 来源
	SourceOmniFocus TaskSource = "omnifocus"
	// SourceApple Apple 来源
	SourceApple TaskSource = "apple"
	// SourceLocal 本地来源
	SourceLocal TaskSource = "local"
)

type TaskStatus

type TaskStatus string

TaskStatus 任务状态

const (
	// StatusTodo 待办状态
	StatusTodo TaskStatus = "todo"
	// StatusInProgress 进行中状态
	StatusInProgress TaskStatus = "in_progress"
	// StatusCompleted 已完成状态
	StatusCompleted TaskStatus = "completed"
	// StatusCancelled 已取消状态
	StatusCancelled TaskStatus = "cancelled"
	// StatusDeferred 已延期状态
	StatusDeferred TaskStatus = "deferred"
)

type UrgencyLevel

type UrgencyLevel int

UrgencyLevel 紧急程度

const (
	// UrgencyNone 无紧急程度
	UrgencyNone UrgencyLevel = 0
	// UrgencyLow 低紧急程度
	UrgencyLow UrgencyLevel = 1
	// UrgencyMedium 中紧急程度
	UrgencyMedium UrgencyLevel = 2
	// UrgencyHigh 高紧急程度
	UrgencyHigh UrgencyLevel = 3
	// UrgencyCritical 紧急
	UrgencyCritical UrgencyLevel = 4
)

func (UrgencyLevel) String

func (u UrgencyLevel) String() string

String 返回紧急程度的字符串描述

Jump to

Keyboard shortcuts

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