refs #732: polish HMM report title and response
This commit is contained in:
@@ -13,6 +13,8 @@ DB를 다시 조회하거나 자연어를 해석하지 않는다.
|
||||
- 입력은 질문·답변 근거·조회 행으로 구성된 허용 JSON 계약이며, Oracle DB 함수는 템플릿에만 매핑한다.
|
||||
- 선사 실적 조회 MCP가 VPD를 적용한 데이터 접근 경계이고, 리포트 MCP는 표현 경계다.
|
||||
- 승인된 HTML 템플릿은 DB CLOB으로 버전 관리하고, 생성 HTML은 MCP 응답의 `html` 속성으로만 반환한다.
|
||||
- 제목은 질문 전체 문장을 복사하지 않는다. 포털의 제목 생성 지침이 요청 대상과 업무 범위만 남긴 짧은 보고서 제목을 만들고 renderer에 전달한다.
|
||||
- HTML artifact가 반환되면 일반 답변은 HTML 표나 코드를 반복하지 않고 생성 완료와 조회 건수만 안내한다. 실제 표현은 `생성된 리포트` 영역 하나에서 담당한다.
|
||||
|
||||
## 전체 흐름
|
||||
|
||||
|
||||
@@ -54,6 +54,24 @@ Tool 이름, 사용자 코드나 예상 행 수를 조건으로 사용하지 않
|
||||
`generatedAt`, `requestedBy`, `question`, `answer`, `execution`, `evidence`, `limitation`을
|
||||
넣는다. 행에는 담당자·선사 식별자와 최신 KPI만 넣는다.
|
||||
|
||||
`report.title`은 사용자 질문 원문이 아니다. 포털이 모델에 다음 제목 계약을 지시해 만든 짧은
|
||||
업무 제목이다.
|
||||
|
||||
- `HTML로 보여줘`, `리포트로 만들어줘`와 같은 출력 형식·행동 문구는 제거한다.
|
||||
- 사용자·팀·업무 대상처럼 범위를 구분하는 식별자는 유지한다.
|
||||
- 문장형 답변이 아니라 화면 머리글에 맞는 명사형 제목으로 만든다.
|
||||
- 템플릿이 붙이는 고정 부제와 같은 문구를 반복하지 않는다.
|
||||
|
||||
제목 생성이 실패하면 전체 질문을 제목으로 사용하지 않고 짧은 일반 업무 제목으로 안전하게
|
||||
대체한다. 이 규칙은 특정 사용자 코드나 조회 행 수를 조건으로 사용하지 않는다.
|
||||
|
||||
## 포털 표시 계약
|
||||
|
||||
renderer 응답에 유효한 `html` 또는 `rendered_html`이 있으면 HTML artifact가 최종 표현물이다.
|
||||
포털의 일반 답변 생성 지침은 HTML 태그, Markdown 표, 업무 행 전체를 다시 만들지 않고 제목과
|
||||
조회 건수, 아래 리포트 확인 안내만 반환한다. 포털은 같은 조건을 출력 후에도 검사해 모델이
|
||||
HTML을 반환하더라도 안전한 짧은 안내문으로 정규화한다.
|
||||
|
||||
서버는 JSON 크기, 행 수, 문자열 길이, 숫자 형식을 제한하고, 템플릿에 주입할 JSON에서
|
||||
`</script>`를 이스케이프한다. payload는 저장하지 않는다.
|
||||
|
||||
|
||||
@@ -34,6 +34,9 @@
|
||||
3. 실행 상세에서 첫 단계가 데이터 조회이고 두 번째 단계가 HTML 렌더링인지 확인한다.
|
||||
4. 결과 영역에 `생성된 리포트` iframe이 표시되고, 막대·상세 표가 첫 단계 `items`와 일치하는지
|
||||
확인한다.
|
||||
5. 일반 답변에는 `<table>`, `<div>` 또는 Markdown 표가 반복되지 않고, 생성 완료·제목·조회 건수만
|
||||
표시되는지 확인한다.
|
||||
6. 리포트 머리글이 질문 전체 문장이 아니라 출력 형식 문구를 제거한 짧은 업무 제목인지 확인한다.
|
||||
|
||||
대표 E1001 팀장 질의의 운영 회귀 기준은 현재 8건이다. 이 숫자는 검증 기준일 뿐 코드나 Tool
|
||||
인수에 고정하지 않는다. 첫 단계 원본에 행이 있는데 `reportJson.rows`가 0건이면 순차 실행 성공이
|
||||
|
||||
@@ -35,6 +35,31 @@
|
||||
**해결**: DB 템플릿 활성 상태와 custom Agent Tool의 반환 형식을 확인한다. 포털은 유효한 `html`
|
||||
또는 `rendered_html`만 sandboxed iframe으로 표시한다.
|
||||
|
||||
## 일반 답변에 HTML 표가 반복되거나 글자가 잘 보이지 않음
|
||||
|
||||
**원인**: 최종 답변 모델이 사용자의 `HTML로 보여줘`를 artifact 생성이 아니라 답변 본문 형식
|
||||
요청으로 해석해 `<table>` 또는 Markdown 표를 다시 작성했다.
|
||||
|
||||
**확인**: MCP 마지막 응답에 유효한 `html`이 있으면서 저장된 `answer`에도 HTML 태그나 표 행이
|
||||
있는지 확인한다.
|
||||
|
||||
**해결**: 최종 답변 지침에 HTML artifact 우선 규칙을 적용하고, 출력 후 검사에서 일반 답변을
|
||||
생성 완료·제목·조회 건수 안내로 정규화한다. iframe CSS나 조회 Tool은 변경하지 않는다.
|
||||
|
||||
**재발 방지**: renderer가 반환된 시나리오에서 일반 답변에 `<table>`과 Markdown 표가 없는지
|
||||
회귀 테스트한다.
|
||||
|
||||
## 리포트 제목에 질문 전체 문장이 표시됨
|
||||
|
||||
**원인**: `report.title`에 사용자 질문을 그대로 복사했다.
|
||||
|
||||
**확인**: renderer 호출의 `reportJson.report.title`과 `question`이 완전히 같은지 확인한다.
|
||||
|
||||
**해결**: 제목 생성 지침으로 출력 형식·행동 문구를 제거한 짧은 명사형 제목을 만들고,
|
||||
`report.question`에는 원문을 유지한다.
|
||||
|
||||
**재발 방지**: 제목과 원문 질문이 역할상 분리되고 제목 길이 제한이 적용되는지 검증한다.
|
||||
|
||||
## 리포트는 생성됐지만 행이 0건임
|
||||
|
||||
**원인**: 다음 둘 중 하나다.
|
||||
|
||||
Reference in New Issue
Block a user