콘텐츠로 이동

Zio.Report

양식(HTML) + 데이터(dict) → 완성본. 표준 양식에 값을 채워 메일 본문·문서를 만듭니다. 양식은 짧은 접근코드(uuid)로 부릅니다. 치환기는 멍청한 순수함수라, 무엇을 채울지는 부르는 쪽이 정합니다.

양식을 만들고 고치는 것도 여기서 합니다 — AI 와 대화하며 create 로 새로 만들고, info 로 지금 HTML 을 읽어 update 로 고칩니다. (웹 「리포트」 화면에서 손으로 만드는 것과 같은 것을 코드로.)

from zio_ontology import Zio
# 양식에 데이터를 채워 완성본(HTML 문자열)을 받는다
html = Zio.report("gGrgQtkY").render({
"subject": "", "sender_name": "",
"verdict": "일반 상품 홍보", "status_label": "스팸으로 판정됨", "status_color": "#c0392b",
"key_findings": ["평판이 낮음", "인증 서명 부재"], # 반복 섹션 {{#key_findings}}{{.}}{{/…}}
})
# 완성본을 도구로 보낸다 (메일 등)
Zio.tools.execute("send_email_via_smtp",
{"to_email": "", "subject": "", "body": html, "is_html": True})
# 새 양식 만들기 → uuid 를 받는다
got = Zio.report.create(
title="스팸 분석 리포트",
body='<div><h3>{{subject}}</h3>'
'<ul>{{#key_findings}}<li>{{.}}</li>{{/key_findings}}</ul></div>',
format="html")
uuid = got["uuid"]
# 샘플 데이터셋 만들기 — format="json" 은 출력 양식이 아니라 "데이터"다.
# body 에 JSON 문자열을 넣는다. html 양식과는 별개의 템플릿으로 등록된다.
Zio.report.create(
title="스팸 분석 리포트 샘플데이터",
body='{"subject": "예시 제목", "key_findings": ["항목 1", "항목 2"]}',
format="json")
# → 웹 저작 미리보기에서 이 json 을 "데이터 소스"로 골라 html 양식을 채워 볼 수 있다.
# 목록
for r in Zio.report.list(): # [{uuid, title, format}]
print(r["uuid"], r["title"])
# 대화하며 고치기: 지금 HTML 을 읽고 → 고쳐서 저장
cur = Zio.report(uuid).info() # {uuid, title, format, body_content, description}
new_html = cur["body_content"].replace("{{subject}}", "제목: {{subject}}")
Zio.report(uuid).update(body=new_html)
Method Description
Zio.report(uuid).render(data) 양식에 data(dict)를 채워 완성본 문자열. html 은 서버에서 인라인화·청소됩니다. 미리보기 화면과 같은 엔진이라 저작 때 본 그대로입니다.
Zio.report.create(title, body, format="html") 새 양식을 만들고 uuid 를 돌려줍니다. formathtml·text·json. (gdoc 은 웹에서 구글독스 URL 로.) json 은 **출력 양식이 아니라 「샘플 데이터셋」**입니다 — body 에 JSON 문자열을 넣어 등록하면, 웹 저작 화면의 미리보기에서 데이터 소스로 골라 html 양식을 채워 볼 수 있습니다.
Zio.report.list() 양식 목록 [{uuid, title, format}]. 본문은 info() 로.
Zio.report(uuid).info() 그 양식의 현재 내용(body_content 포함). 고치기 전에 먼저 읽습니다.
Zio.report(uuid).update(body=…, title=…) 양식을 고칩니다. 준 것만 바뀝니다. html 은 서버가 청소합니다(리치 인라인 스타일 보존).

샘플 데이터셋(format="json")은 어떻게 쓰나

섹션 제목: “샘플 데이터셋(format="json")은 어떻게 쓰나”

html 양식을 만들면 **「무슨 값이 들어갔을 때 어떻게 보이나」**를 확인할 예시 데이터가 필요합니다. 그 예시를 format="json" 템플릿으로 따로 등록해 둡니다.

  • html 양식과 json 샘플은 각각 독립된 템플릿입니다 — 서로 묶어(매핑) 저장하는 게 아닙니다.
  • 웹 저작 화면 미리보기에서 등록된 json 템플릿 중 하나를 데이터 소스로 골라 지금 html 양식에 채워 봅니다(붙여넣기도 가능).
  • SDK 로 값을 실제로 채울 땐 json 템플릿이 아니라 render(data)dict 를 직접 넘깁니다 — json 템플릿은 저작·미리보기 편의용입니다.

{{경로}} 치환(없으면 태그를 그대로 남김), {{a.b}} 점 경로, 반복 섹션 {{#목록}} … {{/목록}}(객체 배열이면 안에서 {{키}}, 스칼라 배열이면 {{.}}).

반복 섹션을 <table> 안에 두지 마십시오. HTML 파싱이 표 안의 {{#…}} 텍스트를 표 밖으로 밀어내 섹션이 깨집니다. 반복은 <ul> / <ol> / <div> 안에 두십시오.

양식은 저장, 데이터는 그때그때

섹션 제목: “양식은 저장, 데이터는 그때그때”

양식(HTML)은 한 번 만들어 두고 uuid 로 재사용합니다. 채울 데이터는 부를 때마다 다릅니다 — 무엇을 채울지(수집레코드 + 분석결과 병합 등)를 정하는 것은 부르는 쪽의 일이고, render 는 채우기만 합니다.