canina/.ai_agency/memory/backlog.json
parsa aghaei f437f46e2e feat: AI Software Agency v3 — complete overhaul
- Add AGENCY.md: master orchestration protocol (universal AI editor entry point)
- Add 00_intake.md: user requirements & intent detection agent
- Add 10_deploy.md: production deployment agent
- Add 11_seo_content.md: SEO specialist & content writer agent (dual mode)
- Add specs/reviews/: directory for specialist review reports

REVIEW PIPELINE (new):
- Each specialist reviews ONLY their own domain:
  - 04_dev_backend: API, services, DB, auth, DTOs
  - 05_dev_frontend: components, state, UX code, performance
  - 07_visual_qa: UX patterns, a11y, responsive, design system
  - 08_devops_security: secrets, Docker, CVEs, CI/CD
  - 11_seo_content: meta tags, content quality, structured data
- 02_product_manager: synthesis mode reads all findings, deduplicates,
  creates unified prioritized backlog

All agents now support dual modes (REVIEW + IMPLEMENT/ENFORCE/CREATE/INSPECT)
state.json v3: adds project_intent, review_phase tracking, resume_context
backlog.json: fixed structure {tasks: [...]}, added sub_steps per task
orchestrate.py: simplified to state management utility (no fake AI calls)
2026-07-26 17:30:05 +03:30

181 lines
10 KiB
JSON

{
"tasks": [
{
"id": "TASK-101",
"title": "Prisma Schema & Database Indexing Optimization (PostgreSQL)",
"description": "Add indexes on high-traffic search fields (categorySlug, suitableFor) in Product model. Validate B2B/Wholesale field relations.",
"architectural_layer": "data_persistence",
"assigned_role": "04_dev_backend",
"priority": "HIGH",
"status": "completed",
"max_files_allowed": 2,
"estimated_minutes": 20,
"dependency_task_ids": [],
"acceptance_criteria": [
"افزودن ایندکس روی فیلدهای پرکاربرد جستجو نظیر categorySlug و suitableFor در مدل Product",
"اعتبارسنجی ارجاعات ریلیشن‌ها و پشتیبانی متوازن از فیلدهای B2B/Wholesale"
],
"sub_steps": [
{ "index": 1, "name": "read_schema", "description": "Read existing Prisma schema", "status": "done" },
{ "index": 2, "name": "add_indexes", "description": "Add @@index directives on search fields", "status": "done" },
{ "index": 3, "name": "validate_relations", "description": "Validate B2B relation integrity", "status": "done" }
]
},
{
"id": "TASK-102",
"title": "Seed Data & Official Catalog Sync in Prisma (backend/prisma/seed.ts)",
"description": "Write complete seed.ts with 30 official Canina Germany catalog products including exact retail and wholesale prices. Must run via 'npx prisma db seed' without errors.",
"architectural_layer": "data_persistence",
"assigned_role": "04_dev_backend",
"priority": "HIGH",
"status": "pending",
"max_files_allowed": 2,
"estimated_minutes": 25,
"dependency_task_ids": ["TASK-101"],
"acceptance_criteria": [
"همگام‌سازی کامل ۳۰ محصول کاتالوگ رسمی Canina آلمان با قیمت‌های دقیق تک‌فروشی و قیمت عمده همکار",
"اجرای موفقیت‌آمیز npx prisma db seed بدون خطا"
],
"sub_steps": [
{ "index": 1, "name": "analyze_schema", "description": "Read schema.prisma Product model for all required fields", "status": "pending" },
{ "index": 2, "name": "write_seed_data", "description": "Write 30 Canina catalog products with retail+wholesale prices", "status": "pending" },
{ "index": 3, "name": "verify_seed_runs", "description": "Run npx prisma db seed and fix any errors", "status": "pending" }
]
},
{
"id": "TASK-103",
"title": "NestJS Global DTO Validation Pipes & Sanitization (backend/src/main.ts)",
"description": "Enable global ValidationPipe with whitelist and forbidNonWhitelisted. Set up Global Exception Filter for standard API error response structure.",
"architectural_layer": "transport_api",
"assigned_role": "04_dev_backend",
"priority": "HIGH",
"status": "pending",
"max_files_allowed": 3,
"estimated_minutes": 15,
"dependency_task_ids": ["TASK-102"],
"acceptance_criteria": [
"فعال‌سازی ValidationPipe سراسری با whitelist و forbidNonWhitelisted",
"تنظیم Global Exception Filter برای ساختار استاندارد پاسخ به خطاهای API"
],
"sub_steps": [
{ "index": 1, "name": "configure_validation_pipe", "description": "Add global ValidationPipe to main.ts bootstrap", "status": "pending" },
{ "index": 2, "name": "create_exception_filter", "description": "Create HttpExceptionFilter class with standardized error response", "status": "pending" },
{ "index": 3, "name": "register_global_filter", "description": "Register exception filter globally in main.ts", "status": "pending" }
]
},
{
"id": "TASK-104",
"title": "NestJS Auth & B2B Wholesale Role Guard Verification (backend/src/auth)",
"description": "Implement RolesGuard for User_Wholesale and ADMIN roles. Hide wholesale prices in product service when guard fails.",
"architectural_layer": "business_logic",
"assigned_role": "04_dev_backend",
"priority": "HIGH",
"status": "pending",
"max_files_allowed": 3,
"estimated_minutes": 20,
"dependency_task_ids": ["TASK-103"],
"acceptance_criteria": [
"پیاده‌سازی گارد دسترسی RolesGuard برای نقش‌های User_Wholesale و ADMIN",
"مخفی‌سازی قیمت عمده در سرویس محصولات در صورت عدم تایید گارد احراز هویت"
],
"sub_steps": [
{ "index": 1, "name": "create_roles_guard", "description": "Create RolesGuard decorator and guard class", "status": "pending" },
{ "index": 2, "name": "apply_to_product_service", "description": "Conditionally return wholesalePrice based on user role", "status": "pending" },
{ "index": 3, "name": "write_guard_tests", "description": "Write Jest tests for RolesGuard with mock user contexts", "status": "pending" }
]
},
{
"id": "TASK-105",
"title": "NestJS Admin Orders & B2B Document Approval Service (backend/src/admin)",
"description": "Create service for approving business license documents to upgrade user role to User_Wholesale. Implement controllers for bulk order status and invoice export.",
"architectural_layer": "business_logic",
"assigned_role": "04_dev_backend",
"priority": "HIGH",
"status": "pending",
"max_files_allowed": 3,
"estimated_minutes": 20,
"dependency_task_ids": ["TASK-104"],
"acceptance_criteria": [
"ایجاد سرویس تایید مدارک و پروانه کسب خریداران عمده جهت تغییر نقش به User_Wholesale",
"پیاده‌سازی کنترلرهای تغییر وضعیت سفارشات عمده و صادرات فاکتور"
],
"sub_steps": [
{ "index": 1, "name": "create_admin_module", "description": "Create NestJS AdminModule with controller and service", "status": "pending" },
{ "index": 2, "name": "implement_approval_service", "description": "Write document approval logic and role upgrade flow", "status": "pending" },
{ "index": 3, "name": "implement_order_controllers", "description": "Write bulk order status change and invoice export endpoints", "status": "pending" }
]
},
{
"id": "TASK-106",
"title": "Backend Unit & Integration Test Suite (Jest)",
"description": "Write unit tests for Auth and Products controllers. Ensure >80% code coverage for core backend services.",
"architectural_layer": "testing",
"assigned_role": "06_qa_engineer",
"priority": "HIGH",
"status": "pending",
"max_files_allowed": 3,
"estimated_minutes": 20,
"dependency_task_ids": ["TASK-105"],
"acceptance_criteria": [
"نوشتن تست‌های واحد کنترلرهای Auth و Products با Jest",
"تضمین درصد پوشش تست (Code Coverage) بالای ۸۰٪ برای سرویس‌های اصلی بک‌اند"
],
"sub_steps": [
{ "index": 1, "name": "write_auth_tests", "description": "Write Jest tests for AuthController covering login/logout/register", "status": "pending" },
{ "index": 2, "name": "write_product_tests", "description": "Write Jest tests for ProductsController with B2B price visibility tests", "status": "pending" },
{ "index": 3, "name": "verify_coverage", "description": "Run coverage report and ensure >80% for core services", "status": "pending" }
]
},
{
"id": "TASK-107",
"title": "Frontend Error Boundaries & Global Loading Skeletal Streaming",
"description": "Strengthen ErrorBoundary in ProductPage and B2BPortal. Add streaming skeletons for better UX.",
"architectural_layer": "presentation_ui",
"assigned_role": "05_dev_frontend",
"priority": "MEDIUM",
"status": "pending",
"max_files_allowed": 3,
"estimated_minutes": 15,
"dependency_task_ids": ["TASK-106"],
"acceptance_criteria": [
"تقویت ErrorBoundary در لایه‌های حساس مانند ProductPage و B2BPortal",
"ارتقای تجربه کاربری با اسکلتون‌های استریمینگ متوازن"
],
"sub_steps": [
{ "index": 1, "name": "create_error_boundary", "description": "Create or improve ErrorBoundary component", "status": "pending" },
{ "index": 2, "name": "create_skeletons", "description": "Create ProductSkeleton and B2BPortalSkeleton components", "status": "pending" },
{ "index": 3, "name": "integrate_into_pages", "description": "Wrap ProductPage and B2BPortal with ErrorBoundary and Suspense", "status": "pending" }
]
},
{
"id": "TASK-108",
"title": "B2B Wholesale Matrix & Prescription Direct Quick Order Optimization",
"description": "Connect B2B portal to backend auth service. Optimize bulk order registration with 30% discount for approved wholesalers.",
"architectural_layer": "presentation_ui",
"assigned_role": "05_dev_frontend",
"priority": "MEDIUM",
"status": "pending",
"max_files_allowed": 3,
"estimated_minutes": 20,
"dependency_task_ids": ["TASK-107"],
"acceptance_criteria": [
"ارتباط آنی پورتال B2B به سرویس احراز هویت بک‌اند",
"بهینه‌سازی ثبت سفارشات حجمی (Bulk Order) با تخفیف ۳۰٪ برای همکاران تاییدشده"
],
"sub_steps": [
{ "index": 1, "name": "connect_b2b_auth", "description": "Wire B2BPortal to backend auth API for role verification", "status": "pending" },
{ "index": 2, "name": "implement_bulk_order", "description": "Build bulk order form with quantity matrix and auto-discount calculation", "status": "pending" },
{ "index": 3, "name": "write_component_tests", "description": "Write tests for wholesale discount logic", "status": "pending" }
]
}
],
"metadata": {
"total": 8,
"completed": 1,
"in_progress": 0,
"pending": 7,
"generated_at": "2026-07-26T13:20:00Z",
"decomposition_pass": 1
}
}