hasStatusChanged returns true if any story's inProgress or passes field changed.
(newPRD *PRD)
| 141 | |
| 142 | // hasStatusChanged returns true if any story's inProgress or passes field changed. |
| 143 | func (w *Watcher) hasStatusChanged(newPRD *PRD) bool { |
| 144 | if w.lastPRD == nil { |
| 145 | return true |
| 146 | } |
| 147 | |
| 148 | // If number of stories changed, treat as changed |
| 149 | if len(w.lastPRD.UserStories) != len(newPRD.UserStories) { |
| 150 | return true |
| 151 | } |
| 152 | |
| 153 | // Build a map of old stories by ID for comparison |
| 154 | oldStories := make(map[string]*UserStory) |
| 155 | for i := range w.lastPRD.UserStories { |
| 156 | oldStories[w.lastPRD.UserStories[i].ID] = &w.lastPRD.UserStories[i] |
| 157 | } |
| 158 | |
| 159 | // Check each new story for status changes |
| 160 | for i := range newPRD.UserStories { |
| 161 | newStory := &newPRD.UserStories[i] |
| 162 | oldStory, exists := oldStories[newStory.ID] |
| 163 | |
| 164 | if !exists { |
| 165 | // New story added |
| 166 | return true |
| 167 | } |
| 168 | |
| 169 | // Check if status fields changed |
| 170 | if oldStory.Passes != newStory.Passes || oldStory.InProgress != newStory.InProgress { |
| 171 | return true |
| 172 | } |
| 173 | } |
| 174 | |
| 175 | return false |
| 176 | } |
no outgoing calls