from pathlib import Path
import importlib.util,json,shutil
from reportlab.pdfgen import canvas
from pdf2image import convert_from_path

HERE=Path(__file__).resolve().parent;ROOT=HERE.parents[6]
OUT=ROOT/'oss/local-deliverables/2026-09-24-AI智慧健康站渠道终端分版'
spec=importlib.util.spec_from_file_location('base',HERE.parent/'v6/build.py');base=importlib.util.module_from_spec(spec);spec.loader.exec_module(base)
ui=base.ui;ui.OUT=OUT;W,H=ui.W,ui.H;DATA=json.loads((HERE/'content.json').read_text())

def header(s,label):
 s.rect(0,0,W,H,'#FFFFFF');s.image(OUT/'assets/cpt-logo.png',32,25,98,15.24)
 s.text('康比特AI智慧健康站',342,25,222,10,ui.INK,True,align=2)
 s.text(label,32,61,531,10,'#A74E1F' if '渠道' in label else ui.BLUE,True)
def footer(s,d):
 s.line(32,794,563,794);s.text(d['note'],32,805,531,6.5,ui.GRAY,leading=9)

def consumer(s,d):
 header(s,'个人使用者版  ·  了解身体与日常吃动')
 s.text('测一次身体，\n把吃动建议带在身边。',32,90,531,27,ui.INK,True,leading=37)
 s.text('健康体测一体机 + AI运动营养师：测完、关联、看记录、问AI。',32,177,531,10.5,ui.GRAY)
 s.image(OUT/'assets/hardware-left-stage.png',0,214,W,W*2/3)
 s.text('你的同一个小程序 · 看档案，也能问吃动',207,217,357,9.2,'#2A70BE',True,align=1)
 ui.phone(s,ui.screen_archive,207,237,162);ui.phone(s,ui.screen_ai,402,237,162)
 s.text('关联本人记录',146,392,51,7.2,'#2A70BE',True,align=1);base.arrow(s,143,412,198);base.arrow(s,377,412,393)
 for x,w,title,desc in [(25,157,'先了解身体','身高 · 体重 · 血压 · 体成分'),(202,172,'再看自己的记录','体重 / BMI / 体脂 · 摄入与消耗'),(397,177,'问问今天怎么吃动','饮食问答 · 目标与训练卡')]:
  s.text(title,x,620,w,11,ui.INK,True,align=1);s.text(desc,x,642,w,7.9,ui.GRAY,align=1)
 s.rect(32,676,531,58,'#F0F6FC',9)
 s.text('怎么开始？',45,684,95,11,ui.BLUE,True)
 s.text('按现场提示关联本人记录，再问一句：“午餐吃点啥？”',135,684,414,10.2,ui.INK,True)
 s.text('日常查看档案与吃动信息；需要时复测，结合记录继续交流。',45,712,505,8.7,ui.GRAY)
 s.text('专业运动营养经验  ·  营养垂类大模型',32,749,531,10,ui.BLUE,True)
 s.text('25年、100支国家队服务经验形成专业基础；具体功能与接入范围以实际开通版本为准。',32,771,531,8,ui.GRAY)
 footer(s,d)

def channel(s,d):
 header(s,'渠道合作版  ·  面向有客户资源的销售伙伴')
 s.text('让你的客户网络，\n多一项专业营养业务。',32,90,531,27,ui.INK,True,leading=37)
 s.text('适合经销商、器材供应商与客户服务商，把产品加入已有销售组合。',32,177,531,10.5,ui.GRAY)
 s.rect(0,212,W,212,'#F2F6FA')
 s.text('你销售的产品组合',32,232,247,16,ui.INK,True)
 s.text('健康体测一体机\n+ AI运动营养师小程序\n+ 可选营养品',32,270,247,12,ui.INK,True,leading=23)
 s.text('设备负责采集，软件承接问答与档案。\n小程序页面可用于售前演示。',32,355,247,9.2,ui.GRAY,leading=15)
 c=s.c;c.saveState();path=c.beginPath();path.rect(297,H-424,298,212);c.clipPath(path,stroke=0)
 s.image(OUT/'assets/hardware-left-stage.png',297,217,298,198.67)
 ui.phone(s,ui.screen_ai,455,231,80);c.restoreState()
 s.text('软硬一体 · 界面节选示意',377,408,201,7,ui.GRAY,align=1)
 s.text('两类收益，基于真实成交与复购',32,442,531,16,ui.INK,True)
 for x,title,body in [(32,'设备销售差价','按确认的供货、成交与交付条件\n开展销售。'),(315,'营养品销售与复购','按真实需求和订单，依约定差价\n或分润规则结算。')]:
  s.text(title,x,478,248,17,'#AD521E',True)
  s.text(body,x,511,248,9.4,ui.GRAY,leading=15)
 s.line(32,554,563,554)
 s.text('卖给谁',32,568,75,11,ui.INK,True)
 s.text('健身瑜伽门店  /  健康管理与体检机构  /  企业健康服务点',114,568,449,9.3,ui.GRAY)
 s.text('合作时把责任说清楚',32,608,531,13,ui.INK,True)
 for x,title,body in [(32,'渠道侧','客户开发 · 场景沟通 · 本地协调'),(315,'康比特侧','约定产品 · 演示培训 · 技术支持')]:
  s.text(title,x,637,248,10,ui.INK,True);s.text(body,x,658,248,9,ui.GRAY)
 s.text('客户归属、安装验收、售后接口和运营分工，启动前书面确认。',32,686,531,8.5,ui.GRAY)
 s.rect(32,720,531,53,'#FFF5EC',8)
 s.text('下一步：带着目标区域、客户类型和首批点位，沟通合作方案。',45,730,505,10.1,'#A94A1D',True)
 s.text('25年专业积累 · 100支国家队服务经验 · 营养垂类模型',45,754,505,8.2,ui.GRAY)
 footer(s,d)

def main():
 (OUT/'assets').mkdir(parents=True,exist_ok=True)
 old=ROOT/'oss/local-deliverables/2026-09-24-AI智慧健康站软硬一体版'
 for name in ['cpt-logo.png','ai-male-bulking.png']:shutil.copy2(old/'assets'/name,OUT/'assets'/name)
 shutil.copy2(old/'generated/hardware-left-stage.png',OUT/'assets/hardware-left-stage.png')
 dest=OUT/'01-图文版';dest.mkdir(exist_ok=True)
 for d,draw in zip(DATA,[consumer,channel]):
  p=dest/f'{d["file"]}.pdf';c=canvas.Canvas(str(p),pagesize=(W,H),initialFontName='YaHei',initialFontSize=10)
  c.setTitle(d['title']+' '+d['file']);c.setAuthor('康比特');draw(ui.Surface(c,H),d);c.showPage();c.save()
  convert_from_path(str(p),dpi=200)[0].save(p.with_suffix('.png'));print(p)
 spec=importlib.util.spec_from_file_location('word',HERE.parent/'v2/build.py');word=importlib.util.module_from_spec(spec);spec.loader.exec_module(word)
 word.OUT=OUT/'02-纯文字与可编辑版';word.QA=word.OUT/'qa';word.HERE=HERE;word.DATA=DATA;word.QA.mkdir(parents=True,exist_ok=True);word.build_text()

if __name__=='__main__':main()
