/**
 * Issue Management Mock Data
 *
 * Mock data for development and testing.
 * This will be removed once the backend API is implemented.
 *
 * @module features/issues/mocks
 */

import type { IssueSummary, IssueDetail } from './types';

/**
 * Mock issues for list view
 */
export const mockIssues: IssueSummary[] = [
  {
    id: 'ISS-001',
    number: 42,
    type: 'story',
    title: 'Implement user authentication flow',
    description: 'Create complete authentication flow with login, register, and password reset.',
    status: 'in_progress',
    priority: 'high',
    labels: ['feature', 'auth', 'backend'],
    sprint: 'Sprint 3',
    assignee: { id: 'agent-be', name: 'Backend Engineer', type: 'agent' },
    created_at: '2025-01-15T10:30:00Z',
    updated_at: '2025-01-20T14:22:00Z',
    sync_status: 'synced',
  },
  {
    id: 'ISS-002',
    number: 43,
    type: 'task',
    title: 'Design product catalog component',
    description: 'Create reusable product card and catalog grid components.',
    status: 'in_review',
    priority: 'medium',
    labels: ['feature', 'frontend', 'ui'],
    sprint: 'Sprint 3',
    assignee: { id: 'agent-fe', name: 'Frontend Engineer', type: 'agent' },
    created_at: '2025-01-16T09:00:00Z',
    updated_at: '2025-01-20T15:30:00Z',
    sync_status: 'synced',
  },
  {
    id: 'ISS-003',
    number: 44,
    type: 'bug',
    title: 'Fix cart total calculation bug',
    description: 'Cart total shows incorrect amount when discount is applied.',
    status: 'blocked',
    priority: 'high',
    labels: ['bug', 'critical', 'backend'],
    sprint: 'Sprint 3',
    assignee: { id: 'agent-be', name: 'Backend Engineer', type: 'agent' },
    created_at: '2025-01-17T11:00:00Z',
    updated_at: '2025-01-20T13:00:00Z',
    sync_status: 'pending',
    blocked_by: 'Waiting for discount API specification',
  },
  {
    id: 'ISS-004',
    number: 45,
    type: 'story',
    title: 'Add product search functionality',
    description: 'Implement full-text search with filters for the product catalog.',
    status: 'open',
    priority: 'medium',
    labels: ['feature', 'search', 'backend'],
    sprint: 'Sprint 3',
    assignee: null,
    created_at: '2025-01-18T14:00:00Z',
    updated_at: '2025-01-18T14:00:00Z',
    sync_status: 'synced',
  },
  {
    id: 'ISS-005',
    number: 46,
    type: 'task',
    title: 'Optimize database queries for product listing',
    description: 'Performance optimization for product queries with pagination.',
    status: 'closed',
    priority: 'low',
    labels: ['performance', 'backend', 'database'],
    sprint: 'Sprint 2',
    assignee: { id: 'agent-be', name: 'Backend Engineer', type: 'agent' },
    created_at: '2025-01-10T09:00:00Z',
    updated_at: '2025-01-18T10:00:00Z',
    sync_status: 'synced',
  },
  {
    id: 'ISS-006',
    number: 47,
    type: 'task',
    title: 'Create checkout page wireframes',
    description: 'Design wireframes for the checkout flow including payment selection.',
    status: 'closed',
    priority: 'high',
    labels: ['design', 'checkout', 'ui'],
    sprint: 'Sprint 2',
    assignee: { id: 'agent-po', name: 'Product Owner', type: 'agent' },
    created_at: '2025-01-08T08:00:00Z',
    updated_at: '2025-01-15T16:00:00Z',
    sync_status: 'synced',
  },
  {
    id: 'ISS-007',
    number: 48,
    type: 'story',
    title: 'Implement responsive navigation',
    description: 'Create mobile-friendly navigation with hamburger menu.',
    status: 'open',
    priority: 'medium',
    labels: ['feature', 'frontend', 'responsive'],
    sprint: null,
    assignee: null,
    created_at: '2025-01-19T10:00:00Z',
    updated_at: '2025-01-19T10:00:00Z',
    sync_status: 'synced',
  },
  {
    id: 'ISS-008',
    number: 49,
    type: 'task',
    title: 'Set up E2E test framework',
    description: 'Configure Playwright for end-to-end testing.',
    status: 'in_progress',
    priority: 'medium',
    labels: ['testing', 'infrastructure'],
    sprint: 'Sprint 3',
    assignee: { id: 'agent-qa', name: 'QA Engineer', type: 'agent' },
    created_at: '2025-01-20T08:00:00Z',
    updated_at: '2025-01-20T12:00:00Z',
    sync_status: 'synced',
  },
];

/**
 * Mock issue detail for detail view
 */
export const mockIssueDetail: IssueDetail = {
  id: 'ISS-001',
  number: 42,
  type: 'story',
  title: 'Implement user authentication flow',
  description: `## Overview
Create a complete authentication flow for the e-commerce platform.

## Requirements
- Login with email/password
- Registration with email verification
- Password reset functionality
- OAuth support (Google, GitHub)
- JWT token management
- Session handling

## Acceptance Criteria
- [ ] Users can register with email and password
- [ ] Users receive email verification link
- [ ] Users can log in with verified email
- [ ] Password reset email is sent within 30 seconds
- [ ] OAuth buttons redirect properly
- [x] JWT tokens are stored securely
- [x] Tokens refresh automatically

## Technical Notes
- Use FastAPI security utilities
- Store sessions in Redis
- Follow OWASP guidelines`,
  status: 'in_progress',
  priority: 'high',
  labels: [
    { id: 'lbl-1', name: 'feature', color: '#3b82f6' },
    { id: 'lbl-2', name: 'auth', color: '#8b5cf6' },
    { id: 'lbl-3', name: 'backend', color: '#10b981' },
    { id: 'lbl-4', name: 'security', color: '#ef4444' },
  ],
  sprint: 'Sprint 3',
  milestone: 'MVP Launch',
  story_points: 8,
  assignee: { id: 'agent-be', name: 'Backend Engineer', type: 'agent', avatar: 'BE' },
  reporter: { id: 'agent-po', name: 'Product Owner', type: 'agent', avatar: 'PO' },
  created_at: '2025-01-15T10:30:00Z',
  updated_at: '2025-01-20T14:22:00Z',
  due_date: '2025-02-01',
  sync_status: 'synced',
  external_url: 'https://gitea.example.com/project/issues/42',
  branch: 'feature/42-auth-flow',
  pull_request: 'PR #15',
  activity: [
    {
      id: 'act-001',
      type: 'status_change',
      actor: { id: 'agent-be', name: 'Backend Engineer', type: 'agent' },
      message: 'moved issue from "Open" to "In Progress"',
      timestamp: '2 hours ago',
    },
    {
      id: 'act-002',
      type: 'comment',
      actor: { id: 'agent-be', name: 'Backend Engineer', type: 'agent' },
      message:
        'Started implementing JWT token generation. Using HS256 algorithm as discussed in architecture meeting.',
      timestamp: '3 hours ago',
    },
    {
      id: 'act-003',
      type: 'assignment',
      actor: { id: 'agent-po', name: 'Product Owner', type: 'agent' },
      message: 'assigned this issue to Backend Engineer',
      timestamp: '1 day ago',
    },
    {
      id: 'act-004',
      type: 'label',
      actor: { id: 'agent-po', name: 'Product Owner', type: 'agent' },
      message: 'added labels: security, backend',
      timestamp: '1 day ago',
    },
    {
      id: 'act-005',
      type: 'created',
      actor: { id: 'agent-po', name: 'Product Owner', type: 'agent' },
      message: 'created this issue',
      timestamp: '5 days ago',
    },
  ],
};

/**
 * Mock sprints for filter options
 */
export const mockSprints = ['Sprint 3', 'Sprint 2', 'Sprint 1'];

/**
 * Mock assignees for filter options
 */
export const mockAssignees = [
  { id: 'agent-be', name: 'Backend Engineer', type: 'agent' as const },
  { id: 'agent-fe', name: 'Frontend Engineer', type: 'agent' as const },
  { id: 'agent-qa', name: 'QA Engineer', type: 'agent' as const },
  { id: 'agent-po', name: 'Product Owner', type: 'agent' as const },
];

/**
 * Mock labels for filter options
 */
export const mockLabels = [
  'feature',
  'bug',
  'backend',
  'frontend',
  'ui',
  'auth',
  'testing',
  'performance',
  'design',
  'infrastructure',
];
