{
  "schemaVersion": "1.0",
  "telemetryVersion": "1.0.0",
  "sourceSha256": "1289938f03a3c287d8d0a9dec722429815a4fe2d45b9a1e77f8f4b0b42b6aec7",
  "principles": {
    "purpose": "ux-improvement-and-operational-diagnosis",
    "noRawBusinessData": true,
    "noSensitiveData": true,
    "noDomClickSpying": true,
    "semanticEventsOnly": true,
    "rawRetentionDays": 90,
    "dailyAggregateRetentionMonths": 13
  },
  "events": [
    {
      "name": "screen.open",
      "category": "navigation",
      "description": "화면 진입",
      "allowedAttributes": [
        "module",
        "launchMode"
      ]
    },
    {
      "name": "screen.close",
      "category": "navigation",
      "description": "화면 종료",
      "allowedAttributes": [
        "module",
        "closeReason"
      ]
    },
    {
      "name": "task.start",
      "category": "task",
      "description": "측정 가능한 업무 Task 시작",
      "allowedAttributes": [
        "taskType"
      ]
    },
    {
      "name": "task.complete",
      "category": "task",
      "description": "업무 Task 정상 완료",
      "allowedAttributes": [
        "taskType",
        "result"
      ],
      "requiresDuration": true
    },
    {
      "name": "task.abandon",
      "category": "task",
      "description": "업무 Task 중단",
      "allowedAttributes": [
        "taskType",
        "reasonCode"
      ],
      "requiresDuration": true
    },
    {
      "name": "interaction.execute",
      "category": "interaction",
      "description": "KBX 의미 단위 업무 조작 실행",
      "allowedAttributes": [
        "interactionType",
        "commandId"
      ]
    },
    {
      "name": "search.execute",
      "category": "interaction",
      "description": "조회 실행",
      "allowedAttributes": [
        "resultBucket"
      ]
    },
    {
      "name": "command.execute",
      "category": "command",
      "description": "업무 Command 실행 시도",
      "allowedAttributes": [
        "commandId",
        "operationKind"
      ]
    },
    {
      "name": "command.succeeded",
      "category": "command",
      "description": "업무 Command 성공",
      "allowedAttributes": [
        "commandId",
        "operationKind"
      ],
      "requiresDuration": true
    },
    {
      "name": "command.failed",
      "category": "command",
      "description": "업무 Command 실패",
      "allowedAttributes": [
        "commandId",
        "problemType",
        "reasonCode"
      ],
      "requiresDuration": true
    },
    {
      "name": "lookup.open",
      "category": "lookup",
      "description": "Lookup 열기",
      "allowedAttributes": [
        "entityType"
      ]
    },
    {
      "name": "lookup.select",
      "category": "lookup",
      "description": "Lookup 선택 완료",
      "allowedAttributes": [
        "entityType",
        "selectionSource"
      ]
    },
    {
      "name": "grid.bulk_action",
      "category": "interaction",
      "description": "Grid 일괄처리 실행",
      "allowedAttributes": [
        "commandId",
        "countBucket"
      ]
    },
    {
      "name": "validation.failed",
      "category": "quality",
      "description": "저장/업무 실행 전후 검증 실패",
      "allowedAttributes": [
        "stage",
        "errorCountBucket",
        "reasonCode"
      ]
    },
    {
      "name": "excel.import.start",
      "category": "excel",
      "description": "Excel Import 시작",
      "allowedAttributes": [
        "importType",
        "rowCountBucket"
      ]
    },
    {
      "name": "excel.import.completed",
      "category": "excel",
      "description": "Excel Import 완료",
      "allowedAttributes": [
        "importType",
        "result",
        "rowCountBucket"
      ],
      "requiresDuration": true
    },
    {
      "name": "excel.import.failed",
      "category": "excel",
      "description": "Excel Import 실패",
      "allowedAttributes": [
        "importType",
        "reasonCode",
        "rowCountBucket"
      ],
      "requiresDuration": true
    },
    {
      "name": "exception.open",
      "category": "exception",
      "description": "업무 예외 생성/노출",
      "allowedAttributes": [
        "exceptionType",
        "severity"
      ]
    },
    {
      "name": "exception.resolved",
      "category": "exception",
      "description": "업무 예외 해결",
      "allowedAttributes": [
        "exceptionType",
        "resolutionType"
      ],
      "requiresDuration": true
    },
    {
      "name": "ai.proposal.open",
      "category": "ai",
      "description": "AI 제안 확인",
      "allowedAttributes": [
        "proposalType"
      ]
    },
    {
      "name": "ai.proposal.accept",
      "category": "ai",
      "description": "AI 제안 승인",
      "allowedAttributes": [
        "proposalType"
      ]
    },
    {
      "name": "ai.proposal.reject",
      "category": "ai",
      "description": "AI 제안 거절",
      "allowedAttributes": [
        "proposalType",
        "reasonCode"
      ]
    },
    {
      "name": "manual.intervention",
      "category": "outcome",
      "description": "정상 자동처리 대신 사람의 확인/수정/판단이 필요했던 업무",
      "allowedAttributes": [
        "workType",
        "reasonCode",
        "exceptionType"
      ]
    }
  ],
  "metrics": [
    {
      "key": "task_completion_time_ms",
      "label": "Task Completion Time",
      "numerator": "task.complete.duration_ms",
      "aggregation": "p50,p95",
      "unit": "ms"
    },
    {
      "key": "semantic_interactions_per_task",
      "label": "Interactions / Task",
      "numerator": "interaction.execute",
      "denominator": "task.complete",
      "aggregation": "ratio",
      "unit": "count"
    },
    {
      "key": "manual_intervention_rate",
      "label": "Manual Intervention Rate",
      "numerator": "ux_business_outcomes.manual_intervention_count",
      "denominator": "ux_business_outcomes.observed_count",
      "aggregation": "ratio",
      "unit": "percent"
    },
    {
      "key": "validation_failure_rate",
      "label": "Validation Failure Rate",
      "numerator": "validation.failed",
      "denominator": "command.execute",
      "aggregation": "ratio",
      "unit": "percent"
    },
    {
      "key": "import_failure_rate",
      "label": "Import Failure Rate",
      "numerator": "excel.import.failed",
      "denominator": "excel.import.start",
      "aggregation": "ratio",
      "unit": "percent"
    },
    {
      "key": "exception_resolution_time_ms",
      "label": "Exception Resolution Time",
      "numerator": "exception.resolved.duration_ms",
      "aggregation": "p50,p95",
      "unit": "ms"
    },
    {
      "key": "ai_proposal_acceptance_rate",
      "label": "AI Proposal Acceptance Rate",
      "numerator": "ai.proposal.accept",
      "denominator": "ai.proposal.open",
      "aggregation": "ratio",
      "unit": "percent"
    }
  ]
}
