[AGENT-2] 4-hour countdown action plan with Meilisearch fix
This commit is contained in:
parent
169718273b
commit
862b87547f
1 changed files with 365 additions and 0 deletions
365
AGENT2_ACTION_PLAN.md
Normal file
365
AGENT2_ACTION_PLAN.md
Normal file
|
|
@ -0,0 +1,365 @@
|
|||
# Agent 2 - 4-Hour Countdown Action Plan
|
||||
|
||||
**Mission:** Get NaviDocs demo-ready for Riviera Plaisance presentation
|
||||
**Deadline:** ~4 hours from now
|
||||
**Agent:** Agent 2 - Current Functionality Tester
|
||||
|
||||
---
|
||||
|
||||
## 🎯 THE GOAL
|
||||
Demonstrate **working search functionality** with real document data to show sticky engagement potential.
|
||||
|
||||
---
|
||||
|
||||
## ⚡ CRITICAL BLOCKER: Meilisearch Down
|
||||
|
||||
**Status:** Service running on StackCP only, not localhost
|
||||
**Impact:** Search feature broken (demo killer)
|
||||
**Fix Time:** 5 minutes
|
||||
|
||||
### IMMEDIATE ACTION (START NOW)
|
||||
|
||||
```bash
|
||||
# Option 1: Start Meilisearch locally (RECOMMENDED)
|
||||
cd /tmp
|
||||
meilisearch --http-addr 127.0.0.1:7700 \
|
||||
--master-key "5T66jrwQ8F8cOk4dUlFY0Vp59fMnCsIfi4O6JZl9wzU=" &
|
||||
|
||||
# Verify it started
|
||||
sleep 2
|
||||
curl http://localhost:7700/health
|
||||
# Should return: {"status":"available"}
|
||||
```
|
||||
|
||||
**Expected Output:**
|
||||
```json
|
||||
{"status":"available"}
|
||||
```
|
||||
|
||||
**Time:** 5 minutes (including startup delay)
|
||||
|
||||
---
|
||||
|
||||
## 📋 TIMELINE: What to Do When
|
||||
|
||||
### PHASE 1: Setup (Next 10 min)
|
||||
**Goal:** Get Meilisearch running + verify server connectivity
|
||||
|
||||
```
|
||||
T+0:00 → Start Meilisearch (above command)
|
||||
T+0:02 → Verify health endpoint
|
||||
T+0:05 → CONFIRM: curl http://localhost:7700/health returns {"status":"available"}
|
||||
T+0:10 → Meilisearch ready for indexing
|
||||
```
|
||||
|
||||
**Checklist:**
|
||||
- [ ] Meilisearch started
|
||||
- [ ] Health endpoint responds
|
||||
- [ ] API server still running on :8001
|
||||
|
||||
---
|
||||
|
||||
### PHASE 2: Test Data Creation (Next 20 min)
|
||||
**Goal:** Create realistic test documents so demo has something to search
|
||||
|
||||
**Problem:** No test data exists currently
|
||||
- No sample PDFs
|
||||
- No sample images
|
||||
- No test entities in database
|
||||
|
||||
**Action 1: Create Test Directory**
|
||||
```bash
|
||||
mkdir -p /home/setup/navidocs/test-data/documents
|
||||
mkdir -p /home/setup/navidocs/test-data/receipts
|
||||
```
|
||||
|
||||
**Action 2: Create Sample Test Files**
|
||||
|
||||
**Option A: Quick Workaround (5 min)**
|
||||
- Use any PDF you can find locally
|
||||
- Or create a simple text document and convert to PDF
|
||||
- Focus on having SOME data to search
|
||||
|
||||
**Option B: Proper Sample Documents (15 min)**
|
||||
- Download real boat manual samples from YachtWorld
|
||||
- Create "Prestige 40 User Manual" (PDF)
|
||||
- Create "Engine Maintenance Log" (text → PDF)
|
||||
- Create 2-3 maintenance receipt images (JPG/PNG)
|
||||
|
||||
**Sample Files Needed for Demo:**
|
||||
1. `prestige-40-owners-manual.pdf` - Main document
|
||||
2. `engine-maintenance-log.pdf` - Searchable document
|
||||
3. `receipt-engine-service-2025.jpg` - OCR test image
|
||||
|
||||
**Time:** 15-20 minutes total
|
||||
|
||||
---
|
||||
|
||||
### PHASE 3: Index Test Data (Next 15 min)
|
||||
**Goal:** Populate Meilisearch index so search has real results
|
||||
|
||||
**Step 1: Create Test Entities in Database**
|
||||
```javascript
|
||||
// Add to /home/setup/navidocs/test-data/seed-entities.js
|
||||
|
||||
const db = require('better-sqlite3')('./server/db/navidocs.db');
|
||||
|
||||
const orgId = 'org-demo-001';
|
||||
const boatId = 'boat-prestige-40';
|
||||
|
||||
// Create organization
|
||||
db.prepare(`
|
||||
INSERT INTO organizations (id, name, type, created_at)
|
||||
VALUES (?, ?, ?, datetime('now'))
|
||||
`).run(orgId, 'Riviera Plaisance Demo', 'boat-dealer', Date.now() / 1000);
|
||||
|
||||
// Create boat entity
|
||||
db.prepare(`
|
||||
INSERT INTO entities (id, organization_id, name, entity_type, make, model, year)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
`).run(boatId, orgId, 'Demo Prestige 40', 'boat', 'Jeanneau', 'Prestige 40', 2023);
|
||||
|
||||
console.log('Test entities created');
|
||||
```
|
||||
|
||||
**Step 2: Upload Documents**
|
||||
Use the `/api/upload` endpoint:
|
||||
```bash
|
||||
curl -X POST http://localhost:8001/api/upload \
|
||||
-F "document=@/home/setup/navidocs/test-data/documents/prestige-40-owners-manual.pdf" \
|
||||
-F "documentType=manual" \
|
||||
-F "entityId=boat-prestige-40"
|
||||
```
|
||||
|
||||
**Step 3: Trigger Indexing**
|
||||
Documents automatically index through BullMQ queue:
|
||||
- Redis triggers processing
|
||||
- OCR extracts text
|
||||
- Meilisearch indexes pages
|
||||
|
||||
**Expected Result:**
|
||||
- Documents appear in search results
|
||||
- Search for "engine" returns relevant pages
|
||||
- OCR confidence visible in results
|
||||
|
||||
**Time:** 10-15 minutes
|
||||
|
||||
---
|
||||
|
||||
### PHASE 4: Verify Search Works (Next 10 min)
|
||||
**Goal:** Confirm end-to-end search pipeline functional
|
||||
|
||||
**Test 1: Health Checks**
|
||||
```bash
|
||||
# API health
|
||||
curl http://localhost:8001/health
|
||||
|
||||
# Meilisearch health
|
||||
curl http://localhost:7700/health
|
||||
|
||||
# Check Meilisearch index
|
||||
curl http://localhost:7700/indexes
|
||||
```
|
||||
|
||||
**Test 2: Search Query**
|
||||
```bash
|
||||
curl "http://localhost:8001/api/search?q=engine&limit=5"
|
||||
```
|
||||
|
||||
**Expected Response:**
|
||||
```json
|
||||
{
|
||||
"results": [
|
||||
{
|
||||
"id": "page_doc-001_p1",
|
||||
"title": "Engine Maintenance - Prestige 40",
|
||||
"text": "Engine model: Volvo Penta D6...",
|
||||
"pageNumber": 1,
|
||||
"ocrConfidence": 0.95
|
||||
}
|
||||
],
|
||||
"totalResults": 3,
|
||||
"processingTime": "42ms"
|
||||
}
|
||||
```
|
||||
|
||||
**Test 3: Filter by Entity**
|
||||
```bash
|
||||
curl "http://localhost:8001/api/search?q=propeller&entityId=boat-prestige-40"
|
||||
```
|
||||
|
||||
**Time:** 5-10 minutes
|
||||
|
||||
---
|
||||
|
||||
### PHASE 5: Create Demo Script (Next 15 min)
|
||||
**Goal:** Have a polished demo sequence ready
|
||||
|
||||
**Script: demo-search-walkthrough.sh**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
echo "=== NaviDocs Search Demo ==="
|
||||
echo ""
|
||||
echo "1. Searching for 'engine maintenance'..."
|
||||
curl -s "http://localhost:8001/api/search?q=engine+maintenance&limit=3" | jq .
|
||||
|
||||
echo ""
|
||||
echo "2. Searching for 'propeller' in Prestige 40..."
|
||||
curl -s "http://localhost:8001/api/search?q=propeller&entityId=boat-prestige-40" | jq .
|
||||
|
||||
echo ""
|
||||
echo "3. Document statistics..."
|
||||
curl -s "http://localhost:8001/api/stats" | jq .
|
||||
|
||||
echo ""
|
||||
echo "=== Demo Complete ==="
|
||||
```
|
||||
|
||||
**Create file:**
|
||||
```bash
|
||||
cat > /home/setup/navidocs/demo-search-walkthrough.sh << 'EOF'
|
||||
# ... content above ...
|
||||
EOF
|
||||
chmod +x /home/setup/navidocs/demo-search-walkthrough.sh
|
||||
```
|
||||
|
||||
**Time:** 10 minutes
|
||||
|
||||
---
|
||||
|
||||
## 📊 TIMELINE SUMMARY
|
||||
|
||||
```
|
||||
T+0:00 → Start Meilisearch (5 min)
|
||||
T+0:05 → Create test data (20 min)
|
||||
T+0:25 → Index documents (15 min)
|
||||
T+0:40 → Verify search (10 min)
|
||||
T+0:50 → Create demo script (15 min)
|
||||
T+1:05 → DEMO READY ✅
|
||||
|
||||
Remaining buffer: ~2 hours 55 minutes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚨 CONTINGENCY PLAN
|
||||
|
||||
**If Meilisearch still fails:**
|
||||
1. Show API architecture without live search
|
||||
2. Demo database schema and document structure
|
||||
3. Show OCR pipeline code
|
||||
4. Explain search integration (diagram)
|
||||
5. Promise to deploy next week
|
||||
|
||||
**If test data creation takes too long:**
|
||||
1. Use pre-existing data from database
|
||||
2. Skip OCR testing (too time-consuming)
|
||||
3. Focus on search feature only
|
||||
|
||||
**If upload endpoint fails:**
|
||||
1. Directly insert test documents into database
|
||||
2. Skip upload demo, focus on search/retrieval
|
||||
3. Explain the full pipeline conceptually
|
||||
|
||||
---
|
||||
|
||||
## 📝 Success Criteria for Demo
|
||||
|
||||
✅ **MUST HAVE:**
|
||||
1. Meilisearch running and responding to health check
|
||||
2. At least 3 searchable documents in index
|
||||
3. Search query returns relevant results (e.g., "engine" finds engine pages)
|
||||
4. OCR confidence scores visible in results
|
||||
|
||||
✅ **NICE TO HAVE:**
|
||||
1. Document upload working end-to-end
|
||||
2. Filter by entity working (entity-specific search)
|
||||
3. Multiple document types (manual, receipt, spec)
|
||||
4. Clean terminal output (no error logs)
|
||||
|
||||
❌ **CAN SKIP:**
|
||||
1. Full OCR processing (takes 5+ min per document)
|
||||
2. Advanced search syntax (filters, facets)
|
||||
3. Multi-user authentication demo
|
||||
4. StackCP remote deployment verification
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Troubleshooting Quick Reference
|
||||
|
||||
### Problem: Meilisearch won't start
|
||||
```bash
|
||||
# Check if port 7700 in use
|
||||
lsof -i :7700
|
||||
|
||||
# Kill old process
|
||||
pkill meilisearch
|
||||
|
||||
# Start fresh
|
||||
meilisearch --http-addr 127.0.0.1:7700
|
||||
```
|
||||
|
||||
### Problem: Search returns no results
|
||||
```bash
|
||||
# Check if index exists
|
||||
curl http://localhost:7700/indexes
|
||||
|
||||
# Check if documents indexed
|
||||
curl http://localhost:7700/indexes/navidocs-pages/stats
|
||||
|
||||
# Manually reindex
|
||||
node /home/setup/navidocs/server/scripts/reindex-all.js
|
||||
```
|
||||
|
||||
### Problem: API not responding
|
||||
```bash
|
||||
# Restart server
|
||||
pkill -f "node.*navidocs.*index.js"
|
||||
cd /home/setup/navidocs/server && npm start
|
||||
|
||||
# Check port
|
||||
lsof -i :8001
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 Quick Reference Commands
|
||||
|
||||
**Verify Meilisearch:**
|
||||
```bash
|
||||
curl http://localhost:7700/health
|
||||
```
|
||||
|
||||
**Test Search API:**
|
||||
```bash
|
||||
curl "http://localhost:8001/api/search?q=test"
|
||||
```
|
||||
|
||||
**Check Database:**
|
||||
```bash
|
||||
sqlite3 /home/setup/navidocs/server/db/navidocs.db "SELECT COUNT(*) FROM documents;"
|
||||
```
|
||||
|
||||
**View Recent Errors:**
|
||||
```bash
|
||||
tail -50 /tmp/navidocs-server.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Final Checklist (Before Demo)
|
||||
|
||||
- [ ] Meilisearch running (`curl http://localhost:7700/health`)
|
||||
- [ ] API server running (`curl http://localhost:8001/health`)
|
||||
- [ ] Test documents indexed (at least 3)
|
||||
- [ ] Search query works (`curl "http://localhost:8001/api/search?q=engine"`)
|
||||
- [ ] Demo script ready and tested
|
||||
- [ ] Terminal clean (no error logs visible)
|
||||
- [ ] Time check: Showtime in ~X hours
|
||||
|
||||
---
|
||||
|
||||
**Agent 2 Report Generated:** 2025-11-13
|
||||
**Time Budget:** ~1 hour to prepare + ~3 hours buffer before showtime
|
||||
**Next Agent:** Agent 3 (UX/Sales Pitch) - Read this report to understand what's working/not working
|
||||
Loading…
Add table
Reference in a new issue