83 lines
2.7 KiB
Go
83 lines
2.7 KiB
Go
package domain
|
|
|
|
// TimelineEvent 时间线事件。
|
|
type TimelineEvent struct {
|
|
Chapter int `json:"chapter"`
|
|
Time string `json:"time"`
|
|
Event string `json:"event"`
|
|
Characters []string `json:"characters,omitempty"`
|
|
}
|
|
|
|
// ForeshadowEntry 伏笔条目。
|
|
type ForeshadowEntry struct {
|
|
ID string `json:"id"`
|
|
Description string `json:"description"`
|
|
PlantedAt int `json:"planted_at"`
|
|
Status string `json:"status"` // planted / advanced / resolved
|
|
ResolvedAt int `json:"resolved_at,omitempty"`
|
|
}
|
|
|
|
// ForeshadowUpdate 伏笔增量操作。
|
|
type ForeshadowUpdate struct {
|
|
ID string `json:"id"`
|
|
Action string `json:"action"` // plant / advance / resolve
|
|
Description string `json:"description,omitempty"`
|
|
}
|
|
|
|
// RelationshipEntry 人物关系条目。
|
|
type RelationshipEntry struct {
|
|
CharacterA string `json:"character_a"`
|
|
CharacterB string `json:"character_b"`
|
|
Relation string `json:"relation"`
|
|
Chapter int `json:"chapter"`
|
|
}
|
|
|
|
// ConsistencyIssue 一致性问题。
|
|
type ConsistencyIssue struct {
|
|
Type string `json:"type"` // consistency / character / pacing / continuity / foreshadow / hook
|
|
Severity string `json:"severity"` // critical / error / warning
|
|
Description string `json:"description"`
|
|
Suggestion string `json:"suggestion,omitempty"`
|
|
}
|
|
|
|
// DimensionScore 单维度评审评分。
|
|
type DimensionScore struct {
|
|
Dimension string `json:"dimension"` // consistency / character / pacing / continuity / foreshadow / hook
|
|
Score int `json:"score"` // 0-100
|
|
Verdict string `json:"verdict"` // pass / warning / fail
|
|
Comment string `json:"comment,omitempty"` // 该维度的简要结论
|
|
}
|
|
|
|
// ReviewEntry Editor 的审阅条目。
|
|
type ReviewEntry struct {
|
|
Chapter int `json:"chapter"`
|
|
Scope string `json:"scope"` // chapter / global / arc
|
|
Issues []ConsistencyIssue `json:"issues"`
|
|
Dimensions []DimensionScore `json:"dimensions,omitempty"` // 分维度评分
|
|
Verdict string `json:"verdict"` // accept / polish / rewrite
|
|
Summary string `json:"summary"`
|
|
AffectedChapters []int `json:"affected_chapters,omitempty"` // 需要重写/打磨的章节号
|
|
}
|
|
|
|
// CriticalCount 返回 critical 级别问题数量。
|
|
func (r *ReviewEntry) CriticalCount() int {
|
|
n := 0
|
|
for _, issue := range r.Issues {
|
|
if issue.Severity == "critical" {
|
|
n++
|
|
}
|
|
}
|
|
return n
|
|
}
|
|
|
|
// ErrorCount 返回 error 级别问题数量。
|
|
func (r *ReviewEntry) ErrorCount() int {
|
|
n := 0
|
|
for _, issue := range r.Issues {
|
|
if issue.Severity == "error" {
|
|
n++
|
|
}
|
|
}
|
|
return n
|
|
}
|