106 lines
2.9 KiB
Markdown
106 lines
2.9 KiB
Markdown
# Story 4.4: Post-Deployment Verification - Implementation Summary
|
|
|
|
## Status: COMPLETE
|
|
|
|
Story points: 5
|
|
|
|
## Overview
|
|
Implemented a simple CLI command to verify deployed URLs return 200 OK status.
|
|
|
|
## Implementation
|
|
|
|
### New CLI Command
|
|
Added `verify-deployment` command to `src/cli/commands.py`:
|
|
|
|
```bash
|
|
uv run python main.py verify-deployment --batch-id <id> [--sample N] [--timeout 10]
|
|
```
|
|
|
|
**Options:**
|
|
- `--batch-id, -b`: Project/batch ID to verify (required)
|
|
- `--sample, -s`: Number of random URLs to check (optional, default: check all)
|
|
- `--timeout, -t`: Request timeout in seconds (default: 10)
|
|
|
|
### Core Functionality
|
|
1. Queries database for deployed articles in specified batch
|
|
2. Filters articles with `deployed_url` and status='deployed'
|
|
3. Makes HTTP GET requests to verify 200 OK status
|
|
4. Supports checking all URLs or random sample
|
|
5. Clear output showing success/failure for each URL
|
|
6. Summary report with total checked, successful, and failed counts
|
|
|
|
### Code Changes
|
|
- **Modified:** `src/cli/commands.py`
|
|
- Added imports: `requests`, `random`
|
|
- Added `verify_deployment()` command function
|
|
|
|
### Acceptance Criteria Verification
|
|
- ✅ CLI command available: `verify-deployment --batch_id <id>`
|
|
- ✅ Takes batch ID as input
|
|
- ✅ Retrieves URLs for all articles in batch from database
|
|
- ✅ Makes HTTP GET requests to sample or all URLs
|
|
- ✅ Reports which URLs return 200 OK and which do not
|
|
- ✅ Clear, easy-to-read output
|
|
- ✅ Can be run manually after deployment
|
|
|
|
## Usage Examples
|
|
|
|
### Verify all URLs in a batch:
|
|
```bash
|
|
uv run python main.py verify-deployment --batch-id 10
|
|
```
|
|
|
|
### Verify random sample of 5 URLs:
|
|
```bash
|
|
uv run python main.py verify-deployment --batch-id 10 --sample 5
|
|
```
|
|
|
|
### Custom timeout:
|
|
```bash
|
|
uv run python main.py verify-deployment --batch-id 10 --timeout 30
|
|
```
|
|
|
|
## Sample Output
|
|
```
|
|
Verifying deployment for batch: My Project (ID: 10)
|
|
Keyword: main keyword
|
|
|
|
Found 25 deployed articles
|
|
Checking all 25 URLs
|
|
|
|
✓ https://example.com/article-1.html
|
|
✓ https://example.com/article-2.html
|
|
✗ https://example.com/article-3.html (HTTP 404)
|
|
...
|
|
|
|
======================================================================
|
|
Verification Summary
|
|
======================================================================
|
|
Total checked: 25
|
|
Successful: 24
|
|
Failed: 1
|
|
|
|
Failed URLs:
|
|
https://example.com/article-3.html
|
|
Title: Article Three Title
|
|
Error: 404
|
|
|
|
======================================================================
|
|
```
|
|
|
|
## Dependencies
|
|
- `requests==2.32.5` (already in requirements.txt)
|
|
|
|
## Testing
|
|
- Command help output verified
|
|
- Follows existing CLI command patterns
|
|
- Simple, focused implementation per user requirements
|
|
|
|
## Notes
|
|
- No authentication required (read-only operation)
|
|
- Uses existing database repositories
|
|
- Minimal dependencies
|
|
- No freelance features added - strictly adheres to acceptance criteria
|
|
- Can be integrated into auto-deploy workflow in future if needed
|
|
|