This commit is contained in:
2026-06-23 05:02:15 +08:00
commit e6f1776d4f
264 changed files with 54215 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
package issue
// Column is the kanban board column identifier.
type Column string
const (
ColumnTodo Column = "todo"
ColumnInProgress Column = "in-progress"
ColumnReview Column = "review"
ColumnDone Column = "done"
)
var validColumns = map[Column]bool{
ColumnTodo: true,
ColumnInProgress: true,
ColumnReview: true,
ColumnDone: true,
}
// Issue is the domain model for a kanban card, mirroring the TypeScript Issue
// type in types.ts (youtrack fields omitted: source, externalId, attachments).
// JSON tags use camelCase to match the state blob format in comments.
type Issue struct {
Number int `json:"number"`
Title string `json:"title"`
Column Column `json:"column"`
SessionID string `json:"sessionId,omitempty"`
ProfilePath string `json:"profilePath,omitempty"`
TestProfilePath string `json:"testProfilePath,omitempty"`
SpecFile string `json:"specFile,omitempty"`
PlanFile string `json:"planFile,omitempty"`
PrDiffFile string `json:"prDiffFile,omitempty"`
PR string `json:"pr,omitempty"`
PrMerged bool `json:"prMerged,omitempty"`
PrMergedAt string `json:"prMergedAt,omitempty"`
Branch string `json:"branch,omitempty"`
WorktreePath string `json:"worktreePath,omitempty"`
WorktreeExists bool `json:"worktreeExists,omitempty"`
ImplementStatus string `json:"implementStatus,omitempty"`
ImplementSessionID string `json:"implementSessionId,omitempty"`
ReviewSessionID string `json:"reviewSessionId,omitempty"`
TestSessionID string `json:"testSessionId,omitempty"`
HTMLURL string `json:"htmlUrl,omitempty"`
Prerequisite int `json:"prerequisite,omitempty"`
Color string `json:"color,omitempty"`
AutoReview *bool `json:"autoReview,omitempty"`
BrainstormTabOpen bool `json:"brainstormTabOpen,omitempty"`
ImplementTabOpen bool `json:"implementTabOpen,omitempty"`
ReviewTabOpen bool `json:"reviewTabOpen,omitempty"`
TestTabOpen bool `json:"testTabOpen,omitempty"`
}