hermes - 💡(How to fix) Fix 예약 작업 실행 카드에서 원문 문구를 숨기고 예약 작업 상세 화면으로 이동 지원

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
RAW_BUFFERClick to expand / collapse

배경

예약 작업 실행 결과가 Slack/메시징 스레드에 카드처럼 보이지만, 현재 클릭해도 아무 동작이 없습니다. 사용자가 기대하는 흐름은 실행 결과 카드에서 바로 웹 대시보드의 예약 작업 상세 화면으로 이동해 해당 예약 작업 정보를 확인하는 것입니다.

또한 실행됨 카드에 원본 요청 내용은 ... 같은 원문 안내가 노출되어 카드가 장황해 보입니다. 실행 결과 카드 표면에서는 이 문구를 제거하고, 필요한 원문/프롬프트는 상세 화면이나 고급 정보로 숨기는 쪽이 낫습니다.

현재 코드 관찰

  • cron/scheduler.py_deliver_result는 예약 작업 실행 결과를 기본적으로 텍스트 래퍼로 감쌉니다.
    • Cronjob Response: {task_name}
    • (job_id: {job_id})
    • 본문
    • To stop or manage this job...
  • Slack 어댑터 gateway/platforms/slack.pysend()는 일반 메시지 전송 시 chat_postMessage(text=...)만 사용합니다. 예약 작업 결과용 Block Kit 카드/버튼/클릭 액션은 없습니다.
  • Slack Block Kit action handler는 승인 버튼과 slash-confirm 버튼만 등록되어 있습니다.
  • 웹 대시보드 예약 작업 탭은 web/src/pages/CronPage.tsx에서 목록 카드만 렌더링합니다.
    • 카드 본문(Card/CardContent)에는 상세 이동용 onClick이 없습니다.
    • 현재 카드 오른쪽에는 pause/resume, trigger, delete 버튼만 있습니다.
  • API는 단건 예약 작업 조회를 이미 제공합니다.
    • hermes_cli/web_server.py: GET /api/cron/jobs/{job_id}
    • web/src/lib/api.ts에는 목록/생성/일시정지/재개/실행/삭제 클라이언트는 있지만 단건 조회 클라이언트가 없습니다.
  • 앱 라우팅은 web/src/App.tsx에서 /cronCronPage에 연결합니다. /cron/:jobId 또는 쿼리/해시 기반 상세 라우트가 없습니다.

구현 목표

  1. 예약 작업 실행됨 카드에서 원본 요청 내용은 ... 문구를 제거합니다.
  2. 예약 작업 실행됨 카드 클릭 시 웹 대시보드의 예약 작업 탭으로 이동하고, 해당 예약 작업 상세를 바로 볼 수 있게 합니다.
  3. 예약 작업 탭의 카드 클릭 동작을 기존 오른쪽 정보 패널 방식이 아니라 풀 화면 상세 화면으로 바꿉니다.
  4. 스레드/메시징 플랫폼에서 전달되는 실행 결과 카드도 같은 상세 화면 deep link를 재사용합니다.

제안 구현

1. 웹 대시보드 예약 작업 상세 라우트 추가

  • /cron/:jobId 또는 /cron?job=<id>&profile=<profile> 형태의 deep link를 지원합니다.
  • CronPage에서 선택된 job id가 있으면 목록 대신 풀 화면 상세를 렌더링합니다.
  • 상세 화면에는 최소한 다음 정보를 표시합니다.
    • 이름/상태/profile/deliver 대상
    • schedule, last run, next run
    • prompt/original request는 접힘 섹션 또는 상세/고급 섹션
    • pause/resume, trigger, delete 액션
    • 목록으로 돌아가기
  • web/src/lib/api.tsgetCronJob(id, profile?) 클라이언트를 추가합니다.

2. 예약 작업 카드 클릭 UX 변경

  • web/src/pages/CronPage.tsx의 목록 카드 전체를 클릭 가능하게 만들고 상세 라우트로 이동합니다.
  • 카드 내부 액션 버튼(pause/resume, trigger, delete)은 event propagation을 막아 카드 navigation과 충돌하지 않게 합니다.
  • 접근성: 카드가 링크/버튼으로 인식되도록 keyboard focus, Enter/Space 동작, aria-label을 제공합니다.

3. 메시징/Slack 실행 결과 카드 deep link

  • 예약 작업 실행 결과를 플랫폼별로 구조화된 카드로 보낼 수 있게 합니다.
  • Slack의 경우 chat_postMessage(blocks=...) 또는 버튼/accessory를 사용해 예약 작업 보기 액션/URL을 제공합니다.
  • 클릭 시 /cron/<job_id> 또는 쿼리 기반 deep link로 이동해야 합니다.
  • 현재 plain text delivery fallback은 유지합니다.
  • gateway 환경에서 dashboard base URL이 설정되어 있지 않으면 버튼을 숨기거나 plain text fallback만 사용합니다.

4. 카드 표면 문구 정리

  • 실행됨 카드 기본 표면에는 원본 요청 내용은 ... 류의 원문 안내를 노출하지 않습니다.
  • 작업 원문/prompt는 상세 화면의 접힘 영역에서 확인할 수 있게 합니다.
  • 기본 카드 표면은 예약된 작업 실행됨, 작업명, 실행 시각, 짧은 결과 요약 위주로 유지합니다.

완료 기준

  • 예약 작업 실행 결과 카드에 원본 요청 내용은 ... 문구가 더 이상 노출되지 않는다.
  • /cron 목록에서 예약 작업 카드를 클릭하면 풀 화면 상세 화면으로 이동한다.
  • 상세 화면 URL을 직접 열어도 해당 job 정보를 조회해 렌더링한다.
  • Slack/메시징 실행 결과 카드에서 예약 작업 보기를 누르면 해당 상세 화면으로 이동한다.
  • 카드 내부 액션 버튼 클릭이 상세 이동과 충돌하지 않는다.
  • dashboard base URL이 없거나 플랫폼이 Block Kit을 지원하지 않는 경우에도 기존 텍스트 delivery는 깨지지 않는다.
  • npm run typecheck가 통과한다.
  • 관련 Python 테스트 또는 스냅샷/단위 테스트가 있으면 cron delivery fallback이 유지됨을 검증한다.

참고 파일

  • cron/scheduler.py
  • gateway/platforms/slack.py
  • web/src/pages/CronPage.tsx
  • web/src/lib/api.ts
  • web/src/App.tsx
  • hermes_cli/web_server.py

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING