Files
ainovel-clients/domain/review.go
2026-03-12 22:25:34 +08:00

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
}