{
  "issueId": "4158",
  "environment": "dev",
  "generatedAt": "2026-10-11T02:51:37+09:00",
  "sourceResult": "qa-results redacted from tracked output",
  "timings": {
    "issueId": "4158",
    "environment": "dev",
    "generatedAt": "2026-10-10T17:51:18.424Z",
    "exitStatus": 0,
    "timings": [
      {
        "name": "qa:run",
        "startedAt": "2026-10-10T17:50:14.955Z",
        "detail": {
          "issueId": "4158",
          "environment": "dev",
          "exitStatus": 0
        },
        "finishedAt": "2026-10-10T17:51:18.424Z",
        "durationMs": 63469,
        "status": "ok"
      },
      {
        "name": "prepare-results",
        "startedAt": "2026-10-10T17:50:14.956Z",
        "detail": {},
        "finishedAt": "2026-10-10T17:50:14.966Z",
        "durationMs": 10,
        "status": "ok"
      },
      {
        "name": "auth-refresh",
        "startedAt": "2026-10-10T17:50:14.966Z",
        "detail": {},
        "finishedAt": "2026-10-10T17:50:26.976Z",
        "durationMs": 12010,
        "status": "ok"
      },
      {
        "name": "auth-refresh:admin/dev/ADMIN",
        "startedAt": "2026-10-10T17:50:14.967Z",
        "detail": {
          "application": "admin",
          "role": "ADMIN",
          "businessRole": "ADMIN"
        },
        "finishedAt": "2026-10-10T17:50:21.700Z",
        "durationMs": 6733,
        "status": "ok"
      },
      {
        "name": "auth-refresh:admin/dev/BO",
        "startedAt": "2026-10-10T17:50:21.700Z",
        "detail": {
          "application": "admin",
          "role": "BO",
          "businessRole": "BO"
        },
        "finishedAt": "2026-10-10T17:50:26.976Z",
        "durationMs": 5276,
        "status": "ok"
      },
      {
        "name": "playwright",
        "startedAt": "2026-10-10T17:50:26.976Z",
        "detail": {
          "command": "npx playwright test qa/issues/4158/dev --trace retain-on-failure",
          "exitStatus": 0
        },
        "finishedAt": "2026-10-10T17:51:18.424Z",
        "durationMs": 51448,
        "status": "ok"
      }
    ]
  },
  "summary": {
    "status": "PASS",
    "passed": 6,
    "failed": 0,
    "skipped": 0,
    "blocked": 0,
    "flaky": 0,
    "durationMs": 50476
  },
  "rows": [
    {
      "title": "4158/dev/notice-branch-target.spec.ts / [4158][dev] QA checklist for #4158 / [ADMIN] 공지 노출 대상 영업점·가맹점 지정 등록",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 8680,
      "evidence": [
        "artifacts/screenshots/01-admin-notice-list.png",
        "artifacts/logs/01-notice-created.md"
      ],
      "screenshots": [
        "artifacts/screenshots/01-admin-notice-list.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/01-notice-created.md"
      ],
      "files": [],
      "role": "ADMIN - 공지 노출 대상 영업점·가맹점 지정 등록",
      "page": "[4158][dev] QA checklist for #4158",
      "checklistItem": "ADMIN 공지 등록(관리 화면과 같은 API)으로 노출 대상 영업점(A_주홍석_영업1, A_주홍석_영업2, 다른 영업라인 최인석 영업)·가맹점(A_주홍석_가맹3) 지정 공지 등록, 관리 화면 수정 모달에 지정값 표시",
      "action": "ADMIN - 공지 노출 대상 영업점·가맹점 지정 등록 계정으로 [4158][dev] QA checklist for #4158 항목을 확인",
      "expected": "ADMIN - 공지 노출 대상 영업점·가맹점 지정 등록 계정에서 [4158][dev] QA checklist for #4158 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4158/dev/notice-branch-target.spec.ts / [4158][dev] QA checklist for #4158 / [BO] BO A_주홍석_영업1 (jjmbo01) / 공지 노출 범위",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 206,
      "evidence": [
        "artifacts/logs/02-viewer-bo-branch1.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/02-viewer-bo-branch1.md"
      ],
      "files": [],
      "role": "BO - BO A_주홍석_영업1 (jjmbo01)",
      "page": "[BO] BO A_주홍석_영업1 (jjmbo01)",
      "checklistItem": "공지 노출 범위",
      "action": "BO - BO A_주홍석_영업1 (jjmbo01) 계정으로 [BO] BO A_주홍석_영업1 (jjmbo01) 항목을 확인",
      "expected": "BO - BO A_주홍석_영업1 (jjmbo01) 계정에서 [BO] BO A_주홍석_영업1 (jjmbo01) 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4158/dev/notice-branch-target.spec.ts / [4158][dev] QA checklist for #4158 / [VE] VE A_주홍석_가맹3 (jjmve01, 영업점 없는 영업라인) / 공지 노출 범위",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 190,
      "evidence": [
        "artifacts/logs/03-viewer-ve-vendor3.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/03-viewer-ve-vendor3.md"
      ],
      "files": [],
      "role": "VE - VE A_주홍석_가맹3 (jjmve01, 영업점 없는 영업라인)",
      "page": "[VE] VE A_주홍석_가맹3 (jjmve01, 영업점 없는 영업라인)",
      "checklistItem": "공지 노출 범위",
      "action": "VE - VE A_주홍석_가맹3 (jjmve01, 영업점 없는 영업라인) 계정으로 [VE] VE A_주홍석_가맹3 (jjmve01, 영업점 없는 영업라인) 항목을 확인",
      "expected": "VE - VE A_주홍석_가맹3 (jjmve01, 영업점 없는 영업라인) 계정에서 [VE] VE A_주홍석_가맹3 (jjmve01, 영업점 없는 영업라인) 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4158/dev/notice-branch-target.spec.ts / [4158][dev] QA checklist for #4158 / [VE] VE A_주홍석_가맹1 (jjmve02, 영업1·영업2 하위) / 공지 노출 범위",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 21455,
      "evidence": [
        "artifacts/screenshots/02-viewer-ve-vendor1-store.png",
        "artifacts/logs/04-viewer-ve-vendor1.md"
      ],
      "screenshots": [
        "artifacts/screenshots/02-viewer-ve-vendor1-store.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/04-viewer-ve-vendor1.md"
      ],
      "files": [],
      "role": "VE - VE A_주홍석_가맹1 (jjmve02, 영업1·영업2 하위)",
      "page": "[VE] VE A_주홍석_가맹1 (jjmve02, 영업1·영업2 하위)",
      "checklistItem": "공지 노출 범위",
      "action": "VE - VE A_주홍석_가맹1 (jjmve02, 영업1·영업2 하위) 계정으로 [VE] VE A_주홍석_가맹1 (jjmve02, 영업1·영업2 하위) 항목을 확인",
      "expected": "VE - VE A_주홍석_가맹1 (jjmve02, 영업1·영업2 하위) 계정에서 [VE] VE A_주홍석_가맹1 (jjmve02, 영업1·영업2 하위) 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4158/dev/notice-branch-target.spec.ts / [4158][dev] QA checklist for #4158 / [VE] VE A_주홍석_가맹4_루시페이먼츠 (예전 영업1 하위, 현재 법인 직속) / 공지 노출 범위",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 18059,
      "evidence": [
        "artifacts/screenshots/03-viewer-ve-vendor4-store.png",
        "artifacts/logs/05-viewer-ve-vendor4.md"
      ],
      "screenshots": [
        "artifacts/screenshots/03-viewer-ve-vendor4-store.png"
      ],
      "traces": [],
      "logs": [
        "artifacts/logs/05-viewer-ve-vendor4.md"
      ],
      "files": [],
      "role": "VE - VE A_주홍석_가맹4_루시페이먼츠 (예전 영업1 하위, 현재 법인 직속)",
      "page": "[VE] VE A_주홍석_가맹4_루시페이먼츠 (예전 영업1 하위, 현재 법인 직속)",
      "checklistItem": "공지 노출 범위",
      "action": "VE - VE A_주홍석_가맹4_루시페이먼츠 (예전 영업1 하위, 현재 법인 직속) 계정으로 [VE] VE A_주홍석_가맹4_루시페이먼츠 (예전 영업1 하위, 현재 법인 직속) 항목을 확인",
      "expected": "VE - VE A_주홍석_가맹4_루시페이먼츠 (예전 영업1 하위, 현재 법인 직속) 계정에서 [VE] VE A_주홍석_가맹4_루시페이먼츠 (예전 영업1 하위, 현재 법인 직속) 확인 결과가 체크리스트와 일치해야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    },
    {
      "title": "4158/dev/notice-branch-target.spec.ts / [4158][dev] QA checklist for #4158 / [ADMIN] 테스트 공지 삭제",
      "status": "PASS",
      "statusText": "통과",
      "durationMs": 963,
      "evidence": [
        "artifacts/logs/06-notice-cleanup.md"
      ],
      "screenshots": [],
      "traces": [],
      "logs": [
        "artifacts/logs/06-notice-cleanup.md"
      ],
      "files": [],
      "role": "ADMIN - 테스트 공지 삭제",
      "page": "[4158][dev] QA checklist for #4158",
      "checklistItem": "[ADMIN] 테스트 공지 삭제",
      "action": "ADMIN - 테스트 공지 삭제 계정으로 정책을 생성하고 삭제한 뒤 목록 반영 여부를 확인",
      "expected": "TA 계정에서 정책 생성과 삭제가 성공하고 목록에 즉시 반영되어야 합니다.",
      "actual": "기대한 동작과 일치했습니다.",
      "error": "",
      "failureCategory": "none",
      "failureCategoryText": "문제 없음",
      "reproduction": {
        "required": false,
        "reason": "정상 확인된 항목입니다.",
        "debugCommand": "",
        "notifyMessage": "",
        "manualSteps": []
      }
    }
  ]
}
