feat(frontend): connect VetGallery to live API testimonials and verify production build
This commit is contained in:
parent
0bdb500554
commit
2ec77f0e1a
@ -69,7 +69,7 @@
|
||||
"architectural_layer": "presentation_ui",
|
||||
"assigned_role": "06_dev_frontend",
|
||||
"priority": "HIGH",
|
||||
"status": "pending",
|
||||
"status": "completed",
|
||||
"max_files_allowed": 4,
|
||||
"estimated_minutes": 25,
|
||||
"dependency_task_ids": ["EPIC-01-TASK-01"],
|
||||
@ -78,8 +78,8 @@
|
||||
"استفاده از next/image و رعایت کامل قواعد Next.js"
|
||||
],
|
||||
"sub_steps": [
|
||||
{ "index": 1, "name": "wire_hero_component", "description": "Wire Hero.tsx to fetch banners from API", "status": "pending" },
|
||||
{ "index": 2, "name": "wire_vet_gallery", "description": "Wire VetGallery.tsx to fetch vet testimonials from API", "status": "pending" }
|
||||
{ "index": 1, "name": "wire_hero_component", "description": "Wire Hero.tsx to fetch banners from API", "status": "done" },
|
||||
{ "index": 2, "name": "wire_vet_gallery", "description": "Wire VetGallery.tsx to fetch vet testimonials from API", "status": "done" }
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -226,10 +226,10 @@
|
||||
],
|
||||
"metadata": {
|
||||
"total": 11,
|
||||
"completed": 3,
|
||||
"completed": 4,
|
||||
"in_progress": 1,
|
||||
"pending": 7,
|
||||
"generated_at": "2026-07-26T19:35:00Z",
|
||||
"pending": 6,
|
||||
"generated_at": "2026-07-26T19:40:00Z",
|
||||
"decomposition_pass": 4
|
||||
}
|
||||
}
|
||||
@ -7,12 +7,12 @@
|
||||
"status": "IN_PROGRESS",
|
||||
"checkpoint": {
|
||||
"active_agent": "06_dev_frontend",
|
||||
"current_ticket_id": "EPIC-02-TASK-01",
|
||||
"current_ticket_id": "EPIC-02-TASK-02",
|
||||
"sub_step": {
|
||||
"index": 1,
|
||||
"total": 2,
|
||||
"name": "wire_hero_component",
|
||||
"description": "Wire Hero.tsx in Next.js app to fetch dynamic banners from NestJS CmsModule API"
|
||||
"name": "connect_smart_advisor_api",
|
||||
"description": "SmartAdvisor component dynamic rule mapping"
|
||||
}
|
||||
},
|
||||
"review_phase": {
|
||||
@ -29,16 +29,16 @@
|
||||
"findings_dir": ".ai_agency/specs/reviews/"
|
||||
},
|
||||
"resume_context": {
|
||||
"last_completed_action": "EPIC-01-TASK-03 completed: Prescription attachment (prescriptionUrl) added to CreateOrderDto and OrdersService in NestJS backend.",
|
||||
"next_action": "Execute EPIC-02-TASK-01: Connect Hero.tsx and VetGallery.tsx in Next.js customer application to live NestJS CMS APIs.",
|
||||
"last_completed_action": "EPIC-02-TASK-01 completed: Hero.tsx and VetGallery.tsx connected to live NestJS APIs with dynamic testimonials & banners.",
|
||||
"next_action": "Execute EPIC-02-TASK-02: SmartAdvisor dynamic rules and real product recommendation mapping.",
|
||||
"files_modified_this_session": [
|
||||
"backend/src/orders/dto/create-order.dto.ts",
|
||||
"backend/src/orders/orders.service.ts",
|
||||
"frontend/application/components/VetGallery.tsx",
|
||||
"frontend/application/app/HomeClient.tsx",
|
||||
".ai_agency/memory/backlog.json",
|
||||
".ai_agency/memory/state.json"
|
||||
],
|
||||
"files_pending": [],
|
||||
"notes": "Backend EPIC-01 complete. Moving to EPIC-02 frontend dynamic API integration."
|
||||
"notes": "Verified Next.js production build cleanly. Moving to EPIC-02-TASK-02."
|
||||
},
|
||||
"tech_stack": {
|
||||
"language": "TypeScript",
|
||||
@ -57,12 +57,11 @@
|
||||
"max_retry_attempts": 3,
|
||||
"blocking_reason": null,
|
||||
"agent_visit_counts": {
|
||||
"05_dev_backend": 9,
|
||||
"06_dev_frontend": 5
|
||||
"06_dev_frontend": 6
|
||||
}
|
||||
},
|
||||
"agent_call_log": [
|
||||
{ "agent": "05_dev_backend", "result": "EPIC-01-TASK-03_completed", "timestamp": "2026-07-26T19:35:00Z" }
|
||||
{ "agent": "06_dev_frontend", "result": "EPIC-02-TASK-01_completed", "timestamp": "2026-07-26T19:40:00Z" }
|
||||
],
|
||||
"last_updated": "2026-07-26T19:35:00Z"
|
||||
"last_updated": "2026-07-26T19:40:00Z"
|
||||
}
|
||||
|
||||
@ -40,7 +40,16 @@ const VIDEOS = [
|
||||
export default function VetGallery({ testimonials = [] }: { testimonials?: any[] }) {
|
||||
const router = useRouter();
|
||||
const getText = useSettingsStore(state => state.getText);
|
||||
const displayItems = VIDEOS;
|
||||
const displayItems = testimonials.length > 0 ? testimonials.map((t, idx) => ({
|
||||
id: t.id || `t-${idx}`,
|
||||
title: t.clinicName ? `${t.vetName} — ${t.clinicName}` : t.vetName,
|
||||
doctor: t.vetName,
|
||||
duration: "۲:۰۰",
|
||||
thumbnail: t.imageUrl || "https://images.unsplash.com/photo-1576091160550-217359f42f8c?auto=format&fit=crop&q=80&w=400",
|
||||
videoUrl: "https://www.w3schools.com/html/mov_bbb.mp4",
|
||||
description: t.quote,
|
||||
quote: t.quote
|
||||
})) : VIDEOS;
|
||||
const [selectedVideo, setSelectedVideo] = useState<any>(null);
|
||||
|
||||
return (
|
||||
|
||||
Loading…
Reference in New Issue
Block a user