351 lines
10 KiB
Markdown
351 lines
10 KiB
Markdown
|
|
# Implementation Plan: Enhanced Litters & Pedigree Features
|
||
|
|
|
||
|
|
## Project Overview
|
||
|
|
Complete implementation of litter management features and interactive pedigree visualization with family tree functionality.
|
||
|
|
|
||
|
|
## Phase 1: Interactive Pedigree Tree ✅ (Priority 1)
|
||
|
|
|
||
|
|
### 1.1 Core Pedigree Component
|
||
|
|
- [ ] Install react-d3-tree dependency
|
||
|
|
- [ ] Create PedigreeTree component with D3 visualization
|
||
|
|
- [ ] Implement data transformation from API to tree format
|
||
|
|
- [ ] Add zoom and pan controls
|
||
|
|
- [ ] Implement color coding (blue for males, pink for females)
|
||
|
|
- [ ] Add node click navigation
|
||
|
|
- [ ] Display node information (name, registration, birth year, sex)
|
||
|
|
- [ ] Show 5 generations by default
|
||
|
|
|
||
|
|
### 1.2 Pedigree Page Enhancement
|
||
|
|
- [ ] Replace placeholder with full PedigreeTree component
|
||
|
|
- [ ] Add generation selector (3, 4, 5 generations)
|
||
|
|
- [ ] Add COI display prominently
|
||
|
|
- [ ] Add "View as PDF" export button (future)
|
||
|
|
- [ ] Add "Print" button with print-friendly view
|
||
|
|
- [ ] Add loading states
|
||
|
|
- [ ] Add error handling for missing data
|
||
|
|
- [ ] Add breadcrumb navigation
|
||
|
|
|
||
|
|
### 1.3 Pedigree Features
|
||
|
|
- [ ] Collapsible/expandable nodes
|
||
|
|
- [ ] Tooltip on hover with full details
|
||
|
|
- [ ] Highlight common ancestors
|
||
|
|
- [ ] Show linebreeding indicators
|
||
|
|
- [ ] Add legend for colors and symbols
|
||
|
|
- [ ] Responsive design for mobile
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 2: Enhanced Litter Management (Priority 2)
|
||
|
|
|
||
|
|
### 2.1 Litter Detail Page
|
||
|
|
- [ ] Create LitterDetail.jsx page
|
||
|
|
- [ ] Display litter overview card
|
||
|
|
- [ ] Sire and dam information with photos
|
||
|
|
- [ ] Breeding date
|
||
|
|
- [ ] Expected whelping date (63 days)
|
||
|
|
- [ ] Actual whelping date
|
||
|
|
- [ ] Puppy count (expected vs actual)
|
||
|
|
- [ ] COI calculation for the pairing
|
||
|
|
- [ ] Add timeline view of litter events
|
||
|
|
- [ ] Add notes section
|
||
|
|
|
||
|
|
### 2.2 Puppy Management
|
||
|
|
- [ ] Create PuppyBatchAdd component
|
||
|
|
- [ ] Quick add multiple puppies form
|
||
|
|
- [ ] Auto-increment names (Puppy 1, Puppy 2, etc.)
|
||
|
|
- [ ] Bulk set common fields (breed, birth date)
|
||
|
|
- [ ] Individual customization per puppy
|
||
|
|
- [ ] Puppy list view within litter
|
||
|
|
- [ ] Individual puppy cards with quick actions
|
||
|
|
- [ ] Drag-and-drop photo upload per puppy
|
||
|
|
- [ ] Bulk actions (delete, export)
|
||
|
|
|
||
|
|
### 2.3 Litter Photo Gallery
|
||
|
|
- [ ] Create LitterGallery component
|
||
|
|
- [ ] Upload litter photos (not tied to specific puppy)
|
||
|
|
- [ ] Display in grid/carousel view
|
||
|
|
- [ ] Photo captions and dates
|
||
|
|
- [ ] Delete/reorder photos
|
||
|
|
- [ ] Lightbox view for full-size images
|
||
|
|
|
||
|
|
### 2.4 Whelping Countdown
|
||
|
|
- [ ] Create CountdownWidget component
|
||
|
|
- [ ] Calculate days until expected whelping
|
||
|
|
- [ ] Show progress bar
|
||
|
|
- [ ] Alert when within 7 days
|
||
|
|
- [ ] Update when actual date recorded
|
||
|
|
- [ ] Show "days since birth" after whelping
|
||
|
|
|
||
|
|
### 2.5 Enhanced Litter List
|
||
|
|
- [ ] Add "Create New Litter" button
|
||
|
|
- [ ] Add filters (upcoming, current, past)
|
||
|
|
- [ ] Add search by parent names
|
||
|
|
- [ ] Add sorting (date, puppy count)
|
||
|
|
- [ ] Show countdown for upcoming litters
|
||
|
|
- [ ] Show puppy count badge
|
||
|
|
- [ ] Add quick actions (edit, view, delete)
|
||
|
|
- [ ] Add litter status badges (planned, pregnant, whelped)
|
||
|
|
|
||
|
|
### 2.6 Litter Form Enhancement
|
||
|
|
- [ ] Create comprehensive LitterForm component
|
||
|
|
- [ ] Add expected puppy count field
|
||
|
|
- [ ] Add notes/comments field
|
||
|
|
- [ ] Add breeding method dropdown (natural, AI, etc.)
|
||
|
|
- [ ] Add progesterone level tracking
|
||
|
|
- [ ] Add ultrasound confirmation date
|
||
|
|
- [ ] Validation for logical dates
|
||
|
|
- [ ] Auto-calculate expected whelping
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 3: Litter Statistics & Analytics (Priority 3)
|
||
|
|
|
||
|
|
### 3.1 Litter Statistics Dashboard
|
||
|
|
- [ ] Create LitterStats component
|
||
|
|
- [ ] Display on Dashboard and LitterDetail pages
|
||
|
|
- [ ] Show average litter size
|
||
|
|
- [ ] Show male/female ratio
|
||
|
|
- [ ] Show breeding success rate
|
||
|
|
- [ ] Show most productive pairings
|
||
|
|
- [ ] Show genetic diversity metrics
|
||
|
|
- [ ] Charts using Chart.js or Recharts
|
||
|
|
|
||
|
|
### 3.2 Parent Performance
|
||
|
|
- [ ] Track individual sire/dam statistics
|
||
|
|
- [ ] Show on DogDetail page
|
||
|
|
- [ ] Number of litters produced
|
||
|
|
- [ ] Total offspring count
|
||
|
|
- [ ] Average litter size
|
||
|
|
- [ ] Success rate
|
||
|
|
- [ ] Link to all their litters
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 4: Integration & Polish (Priority 4)
|
||
|
|
|
||
|
|
### 4.1 Dog Profile Integration
|
||
|
|
- [ ] Add "View Pedigree" button on DogDetail page
|
||
|
|
- [ ] Add "Litters" tab on DogDetail page
|
||
|
|
- [ ] Show offspring list
|
||
|
|
- [ ] Show parent information with links
|
||
|
|
- [ ] Show siblings
|
||
|
|
|
||
|
|
### 4.2 Navigation Enhancement
|
||
|
|
- [ ] Add Pedigree to main navigation
|
||
|
|
- [ ] Add Litters to main navigation
|
||
|
|
- [ ] Add breadcrumbs to all pages
|
||
|
|
- [ ] Add back buttons where appropriate
|
||
|
|
|
||
|
|
### 4.3 Performance Optimization
|
||
|
|
- [ ] Lazy load pedigree tree data
|
||
|
|
- [ ] Implement API caching for pedigree
|
||
|
|
- [ ] Optimize image loading for galleries
|
||
|
|
- [ ] Add loading skeletons
|
||
|
|
- [ ] Debounce search inputs
|
||
|
|
|
||
|
|
### 4.4 Error Handling & UX
|
||
|
|
- [ ] Add error boundaries
|
||
|
|
- [ ] Add retry mechanisms
|
||
|
|
- [ ] Add empty states for all lists
|
||
|
|
- [ ] Add confirmation dialogs for destructive actions
|
||
|
|
- [ ] Add success/error toast notifications
|
||
|
|
- [ ] Add form validation with helpful messages
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Technical Implementation Details
|
||
|
|
|
||
|
|
### Dependencies to Install
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"react-d3-tree": "^3.6.2",
|
||
|
|
"react-toastify": "^9.1.3",
|
||
|
|
"date-fns": "^2.30.0"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### API Endpoints Needed
|
||
|
|
|
||
|
|
#### Existing (verify functionality)
|
||
|
|
- GET `/api/litters` - List all litters
|
||
|
|
- POST `/api/litters` - Create litter
|
||
|
|
- GET `/api/litters/:id` - Get litter details
|
||
|
|
- PUT `/api/litters/:id` - Update litter
|
||
|
|
- DELETE `/api/litters/:id` - Delete litter
|
||
|
|
- GET `/api/pedigree/:id` - Get pedigree tree
|
||
|
|
|
||
|
|
#### New Endpoints to Create
|
||
|
|
- POST `/api/litters/:id/puppies/batch` - Batch add puppies
|
||
|
|
- GET `/api/litters/:id/photos` - Get litter photos
|
||
|
|
- POST `/api/litters/:id/photos` - Upload litter photo
|
||
|
|
- DELETE `/api/litters/:id/photos/:photoId` - Delete litter photo
|
||
|
|
- GET `/api/litters/statistics` - Get litter statistics
|
||
|
|
- GET `/api/dogs/:id/offspring` - Get dog's offspring
|
||
|
|
- GET `/api/dogs/:id/litters` - Get dog's litters (as parent)
|
||
|
|
|
||
|
|
### Database Schema Changes
|
||
|
|
|
||
|
|
#### Add to `litters` table:
|
||
|
|
```sql
|
||
|
|
ALTER TABLE litters ADD COLUMN expected_puppy_count INTEGER;
|
||
|
|
ALTER TABLE litters ADD COLUMN actual_puppy_count INTEGER;
|
||
|
|
ALTER TABLE litters ADD COLUMN notes TEXT;
|
||
|
|
ALTER TABLE litters ADD COLUMN breeding_method VARCHAR(50);
|
||
|
|
ALTER TABLE litters ADD COLUMN progesterone_level DECIMAL(5,2);
|
||
|
|
ALTER TABLE litters ADD COLUMN ultrasound_date DATE;
|
||
|
|
ALTER TABLE litters ADD COLUMN status VARCHAR(20) DEFAULT 'planned';
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Create `litter_photos` table:
|
||
|
|
```sql
|
||
|
|
CREATE TABLE IF NOT EXISTS litter_photos (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
litter_id INTEGER NOT NULL,
|
||
|
|
filename VARCHAR(255) NOT NULL,
|
||
|
|
path VARCHAR(255) NOT NULL,
|
||
|
|
caption TEXT,
|
||
|
|
upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
display_order INTEGER DEFAULT 0,
|
||
|
|
FOREIGN KEY (litter_id) REFERENCES litters(id) ON DELETE CASCADE
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
### Component Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
client/src/
|
||
|
|
├── components/
|
||
|
|
│ ├── PedigreeTree.jsx (NEW)
|
||
|
|
│ ├── PuppyBatchAdd.jsx (NEW)
|
||
|
|
│ ├── LitterGallery.jsx (NEW)
|
||
|
|
│ ├── CountdownWidget.jsx (NEW)
|
||
|
|
│ ├── LitterStats.jsx (NEW)
|
||
|
|
│ └── LitterForm.jsx (ENHANCE)
|
||
|
|
├── pages/
|
||
|
|
│ ├── PedigreeView.jsx (REBUILD)
|
||
|
|
│ ├── LitterList.jsx (ENHANCE)
|
||
|
|
│ ├── LitterDetail.jsx (NEW)
|
||
|
|
│ └── DogDetail.jsx (ENHANCE)
|
||
|
|
└── utils/
|
||
|
|
├── pedigreeHelpers.js (NEW)
|
||
|
|
└── dateHelpers.js (NEW)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Testing Checklist
|
||
|
|
|
||
|
|
### Pedigree Tree
|
||
|
|
- [ ] Displays correctly for dogs with complete lineage
|
||
|
|
- [ ] Handles missing parents gracefully
|
||
|
|
- [ ] Zoom and pan work smoothly
|
||
|
|
- [ ] Node clicks navigate to correct dog
|
||
|
|
- [ ] COI displays correctly
|
||
|
|
- [ ] Colors are correct for male/female
|
||
|
|
- [ ] Responsive on mobile
|
||
|
|
- [ ] Print view works
|
||
|
|
|
||
|
|
### Litter Management
|
||
|
|
- [ ] Can create new litter
|
||
|
|
- [ ] Can add puppies individually
|
||
|
|
- [ ] Can batch add puppies
|
||
|
|
- [ ] Puppies auto-link to litter parents
|
||
|
|
- [ ] Can upload photos
|
||
|
|
- [ ] Countdown displays correctly
|
||
|
|
- [ ] Expected vs actual puppy count tracks
|
||
|
|
- [ ] Can edit litter details
|
||
|
|
- [ ] Can delete litter (with confirmation)
|
||
|
|
- [ ] Statistics calculate correctly
|
||
|
|
|
||
|
|
### Integration
|
||
|
|
- [ ] Pedigree accessible from dog profile
|
||
|
|
- [ ] Litters show on parent profiles
|
||
|
|
- [ ] Navigation works smoothly
|
||
|
|
- [ ] No console errors
|
||
|
|
- [ ] Loading states display
|
||
|
|
- [ ] Error states display
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Implementation Order (Suggested)
|
||
|
|
|
||
|
|
### Sprint 1 (4-6 hours): Pedigree Tree
|
||
|
|
1. Install react-d3-tree
|
||
|
|
2. Create PedigreeTree component
|
||
|
|
3. Rebuild PedigreeView page
|
||
|
|
4. Add controls and styling
|
||
|
|
5. Test with existing data
|
||
|
|
|
||
|
|
### Sprint 2 (4-6 hours): Litter Detail & Enhancements
|
||
|
|
1. Create database migration for litter enhancements
|
||
|
|
2. Create LitterDetail page
|
||
|
|
3. Create CountdownWidget
|
||
|
|
4. Enhance LitterList
|
||
|
|
5. Create LitterForm enhancements
|
||
|
|
|
||
|
|
### Sprint 3 (3-4 hours): Puppy Management
|
||
|
|
1. Create PuppyBatchAdd component
|
||
|
|
2. Add batch API endpoint
|
||
|
|
3. Integrate into LitterDetail
|
||
|
|
4. Test puppy workflow
|
||
|
|
|
||
|
|
### Sprint 4 (2-3 hours): Photo Gallery
|
||
|
|
1. Create database migration for litter_photos
|
||
|
|
2. Create LitterGallery component
|
||
|
|
3. Add photo upload API endpoints
|
||
|
|
4. Integrate into LitterDetail
|
||
|
|
|
||
|
|
### Sprint 5 (2-3 hours): Statistics & Integration
|
||
|
|
1. Create LitterStats component
|
||
|
|
2. Add statistics API endpoint
|
||
|
|
3. Add pedigree/litter links to DogDetail
|
||
|
|
4. Update navigation
|
||
|
|
|
||
|
|
### Sprint 6 (2 hours): Polish & Testing
|
||
|
|
1. Add error handling
|
||
|
|
2. Add loading states
|
||
|
|
3. Add confirmation dialogs
|
||
|
|
4. Test all workflows
|
||
|
|
5. Fix bugs
|
||
|
|
6. Update documentation
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Success Criteria
|
||
|
|
|
||
|
|
### Pedigree
|
||
|
|
- ✅ Interactive tree with 5 generations
|
||
|
|
- ✅ Zoom, pan, and navigation work smoothly
|
||
|
|
- ✅ COI displayed prominently
|
||
|
|
- ✅ Print-friendly view available
|
||
|
|
- ✅ Responsive design
|
||
|
|
|
||
|
|
### Litters
|
||
|
|
- ✅ Full litter lifecycle management (planned → pregnant → whelped)
|
||
|
|
- ✅ Batch puppy addition saves time
|
||
|
|
- ✅ Photo galleries enhance visual tracking
|
||
|
|
- ✅ Countdown helps with planning
|
||
|
|
- ✅ Statistics provide insights
|
||
|
|
- ✅ Integration with dogs is seamless
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Documentation Updates Needed
|
||
|
|
|
||
|
|
- [ ] Update README.md with new features
|
||
|
|
- [ ] Update ROADMAP.md with completion status
|
||
|
|
- [ ] Create USER_GUIDE.md section for litters
|
||
|
|
- [ ] Create USER_GUIDE.md section for pedigree
|
||
|
|
- [ ] Document API endpoints in API_DOCS.md
|
||
|
|
- [ ] Add screenshots to documentation
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
- Prioritize pedigree tree first as it's highly visible and impressive
|
||
|
|
- Litter features build on each other, implement in order
|
||
|
|
- Consider adding unit tests for complex calculations (COI, dates)
|
||
|
|
- Keep accessibility in mind (keyboard navigation, screen readers)
|
||
|
|
- Consider adding undo/redo for batch operations
|