Zio.Report
양식(HTML) + 데이터(dict) → 완성본. 표준 양식에 값을 채워 메일 본문·문서를 만듭니다. 양식은 짧은 접근코드(uuid)로 부릅니다. 치환기는 멍청한 순수함수라, 무엇을 채울지는 부르는 쪽이 정합니다.
양식을 만들고 고치는 것도 여기서 합니다 — AI 와 대화하며
create로 새로 만들고,info로 지금 HTML 을 읽어update로 고칩니다. (웹 「리포트」 화면에서 손으로 만드는 것과 같은 것을 코드로.)
채우기 — render
섹션 제목: “채우기 — render”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})저작 — create · info · update
섹션 제목: “저작 — create · info · update”# 새 양식 만들기 → 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 를 돌려줍니다. format 은 html·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는 채우기만 합니다.