package state import ( "os" "github.com/voocel/ainovel-cli/domain" ) // AppendStateChanges 追加角色状态变化到 meta/state_changes.json。 func (s *Store) AppendStateChanges(changes []domain.StateChange) error { existing, _ := s.LoadStateChanges() existing = append(existing, changes...) return s.writeJSON("meta/state_changes.json", existing) } // LoadStateChanges 读取全部状态变化记录。 func (s *Store) LoadStateChanges() ([]domain.StateChange, error) { var changes []domain.StateChange if err := s.readJSON("meta/state_changes.json", &changes); err != nil { if os.IsNotExist(err) { return nil, nil } return nil, err } return changes, nil } // LoadRecentStateChanges 加载指定章节之前最近 count 章的状态变化。 func (s *Store) LoadRecentStateChanges(currentChapter, count int) ([]domain.StateChange, error) { all, err := s.LoadStateChanges() if err != nil { return nil, err } start := max(currentChapter-count, 1) var result []domain.StateChange for _, c := range all { if c.Chapter >= start && c.Chapter < currentChapter { result = append(result, c) } } return result, nil }