diff --git a/crates/op-editor-core/assets/scene_templates/banxin-rule-deck.op b/crates/op-editor-core/assets/scene_templates/banxin-rule-deck.op new file mode 100644 index 000000000..26b9caa1f --- /dev/null +++ b/crates/op-editor-core/assets/scene_templates/banxin-rule-deck.op @@ -0,0 +1,2702 @@ +{ + "version": "1.0.0", + "name": "版心界行 · 中文原生排版档", + "variables": { + "c-xuan": { + "type": "color", + "value": "#F3F0E9" + }, + "c-xuan-deep": { + "type": "color", + "value": "#E5E1D7" + }, + "c-case": { + "type": "color", + "value": "#1E1813" + }, + "c-ink": { + "type": "color", + "value": "#2A241F" + }, + "c-ink-soft": { + "type": "color", + "value": "#5F5A55" + }, + "c-ink-faint": { + "type": "color", + "value": "#807A76" + }, + "c-xuan-on": { + "type": "color", + "value": "#F0ECE7" + }, + "c-xuan-dim": { + "type": "color", + "value": "#B4B0AA" + }, + "c-jie": { + "type": "color", + "value": "#D0CBC5" + }, + "c-cinnabar": { + "type": "color", + "value": "#AA4331" + }, + "c-cinnabar-wash": { + "type": "color", + "value": "#F9D7CE" + } + }, + "children": [ + { + "type": "frame", + "id": "f1", + "name": "01 封面 · 函套", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-case" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f3", + "name": "主标", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 430, + "children": [ + { + "type": "text", + "id": "t2", + "name": "主标题", + "content": "汉字排版\n在屏幕上的四次退让", + "fontFamily": "Noto Sans SC", + "fontSize": 96, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-on" + } + ], + "lineHeight": 1.08, + "letterSpacing": -2, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r4", + "name": "朱砂短线", + "width": 96, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 120, + "y": 685 + }, + { + "type": "frame", + "id": "f6", + "name": "副标", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 725, + "children": [ + { + "type": "text", + "id": "t5", + "name": "副标题", + "content": "写给编辑与界面设计者的一份版面评议", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f9", + "name": "落款", + "width": 1680, + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "x": 120, + "y": 880, + "children": [ + { + "type": "text", + "id": "t7", + "name": "落款 · 单位", + "content": "版面组 · 内部评议", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t8", + "name": "落款 · 日期", + "content": "2026.08.09", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "path", + "id": "p10", + "name": "鱼尾 · 上", + "d": "M0 0 L20 0 L10.0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 996 + }, + { + "type": "path", + "id": "p11", + "name": "鱼尾 · 下", + "d": "M10.0 0 L20 9 L0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 1009 + }, + { + "type": "text", + "id": "t12", + "name": "页码", + "content": "1 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "center", + "x": 860, + "y": 1026 + } + ], + "x": 0, + "y": 0 + }, + { + "type": "frame", + "id": "f13", + "name": "02 篇目 · 函套", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-case" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f15", + "name": "眉题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 144, + "children": [ + { + "type": "text", + "id": "t14", + "name": "眉题", + "content": "篇目", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f35", + "name": "篇目列表", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 264, + "children": [ + { + "type": "frame", + "id": "f18", + "name": "篇目 01", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "padding": [ + 36, + 0 + ], + "children": [ + { + "type": "text", + "id": "t16", + "name": "序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96 + }, + { + "type": "text", + "id": "t17", + "name": "篇名", + "content": "版心:先给一页定出可以落墨的地方", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-on" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r19", + "name": "界行 · 条间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f22", + "name": "篇目 02", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "padding": [ + 36, + 0 + ], + "children": [ + { + "type": "text", + "id": "t20", + "name": "序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96 + }, + { + "type": "text", + "id": "t21", + "name": "篇名", + "content": "界行:分栏是为了缩短行,不是分盒子", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-on" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r23", + "name": "界行 · 条间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f26", + "name": "篇目 03", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "padding": [ + 36, + 0 + ], + "children": [ + { + "type": "text", + "id": "t24", + "name": "序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96 + }, + { + "type": "text", + "id": "t25", + "name": "篇名", + "content": "行长:三十个字是一道生理线", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-on" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r27", + "name": "界行 · 条间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f30", + "name": "篇目 04", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "padding": [ + 36, + 0 + ], + "children": [ + { + "type": "text", + "id": "t28", + "name": "序号", + "content": "04", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96 + }, + { + "type": "text", + "id": "t29", + "name": "篇名", + "content": "标点:断行处最见功夫", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-on" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r31", + "name": "界行 · 条间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f34", + "name": "篇目 05", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "padding": [ + 36, + 0 + ], + "children": [ + { + "type": "text", + "id": "t32", + "name": "序号", + "content": "05", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96 + }, + { + "type": "text", + "id": "t33", + "name": "篇名", + "content": "收束:把四次退让逐项收回", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-on" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "path", + "id": "p36", + "name": "鱼尾 · 上", + "d": "M0 0 L20 0 L10.0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 996 + }, + { + "type": "path", + "id": "p37", + "name": "鱼尾 · 下", + "d": "M10.0 0 L20 9 L0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 1009 + }, + { + "type": "text", + "id": "t38", + "name": "页码", + "content": "2 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "center", + "x": 860, + "y": 1026 + } + ], + "x": 2040, + "y": 0 + }, + { + "type": "frame", + "id": "f39", + "name": "03 论述 · 版心", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-xuan" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f41", + "name": "天头批注", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 56, + "children": [ + { + "type": "text", + "id": "t40", + "name": "批注", + "content": "版心先于版式;边界不定,谈不上呼吸", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f43", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 144, + "children": [ + { + "type": "text", + "id": "t42", + "name": "标题", + "content": "版心不是边距,是一页里可以落墨的那块地", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f45", + "name": "正文", + "width": 960, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 264, + "children": [ + { + "type": "text", + "id": "t44", + "name": "正文", + "content": "屏幕上的版面把版心简化成了四边等距的内边距,\n于是每一页都从同一个位置开始,也在同一处结束。\n古籍的做法相反:天头留给批注,地脚留给页码,\n两者从来不等高,页面因此有了上下方向。\n这一档把天头定为 144、地脚定为 108,\n多出来的那一截,是给投影时被人头遮住的下沿的。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r46", + "name": "界行 · 横", + "width": 960, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ], + "x": 120, + "y": 648 + }, + { + "type": "frame", + "id": "f56", + "name": "三条做法", + "width": 960, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 672, + "children": [ + { + "type": "frame", + "id": "f49", + "name": "做法 1", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "padding": [ + 14, + 0 + ], + "children": [ + { + "type": "text", + "id": "t47", + "name": "序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 56 + }, + { + "type": "text", + "id": "t48", + "name": "做法", + "content": "天头留给批注,地脚留给页码与鱼尾", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f52", + "name": "做法 2", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "padding": [ + 14, + 0 + ], + "children": [ + { + "type": "text", + "id": "t50", + "name": "序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 56 + }, + { + "type": "text", + "id": "t51", + "name": "做法", + "content": "正文块收窄到三十字,宁可分栏也不放宽", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f55", + "name": "做法 3", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "padding": [ + 14, + 0 + ], + "children": [ + { + "type": "text", + "id": "t53", + "name": "序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 56 + }, + { + "type": "text", + "id": "t54", + "name": "做法", + "content": "界行的长度由版面定,与文字多少无关", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f58", + "name": "旁注", + "width": 600, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1200, + "y": 264, + "children": [ + { + "type": "text", + "id": "t57", + "name": "旁注", + "content": "版心之外的留白不是废纸。\n天头承批注,地脚承页码,\n两者各有职务在身,\n所以不必、也不该等高。", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r59", + "name": "界行", + "width": 1, + "height": 708, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ], + "x": 1140, + "y": 264 + }, + { + "type": "path", + "id": "p60", + "name": "鱼尾 · 上", + "d": "M0 0 L20 0 L10.0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 996 + }, + { + "type": "path", + "id": "p61", + "name": "鱼尾 · 下", + "d": "M10.0 0 L20 9 L0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 1009 + }, + { + "type": "text", + "id": "t62", + "name": "页码", + "content": "3 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "center", + "x": 860, + "y": 1026 + } + ], + "x": 4080, + "y": 0 + }, + { + "type": "frame", + "id": "f63", + "name": "04 双栏对读", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-xuan" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f65", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 144, + "children": [ + { + "type": "text", + "id": "t64", + "name": "标题", + "content": "分栏是为了把行缩短,不是把内容装进两个盒子", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f69", + "name": "左栏 · 其说", + "width": 808, + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 264, + "children": [ + { + "type": "text", + "id": "t66", + "name": "栏题", + "content": "其说", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t67", + "name": "左栏正文", + "content": "通行的做法是给每一栏加一个\n圆角卡片,再用底色把两边分开。\n分是分开了,读者读到的却是\n两张卡片,而不是一篇文章的\n两个部分。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t68", + "name": "左栏续", + "content": "卡片还有一个副作用:它必须有内边距,\n于是同一块版心里,能排的字更少,\n行却没有因此变短。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f75", + "name": "右栏 · 我见", + "width": 808, + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "alignItems": "start", + "fill": [], + "x": 992, + "y": 264, + "children": [ + { + "type": "text", + "id": "t72", + "name": "栏题", + "content": "我见", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f71", + "name": "首句", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar-wash" + } + ], + "padding": [ + 24, + 24 + ], + "children": [ + { + "type": "text", + "id": "t70", + "name": "首句", + "content": "界行只标记分栏,不圈占内容。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "text", + "id": "t73", + "name": "右栏正文", + "content": "线画在版面上,卡片扣在内容上。\n界行贯穿整个版心,不随文字长短\n伸缩;它分的是版面,不是归属。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t74", + "name": "右栏续", + "content": "把分栏交给线之后,栏宽就能完全由\n行长决定:三十字一行,多出来的宽度\n留给留白,而不是留给边框。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r76", + "name": "界行", + "width": 1, + "height": 708, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ], + "x": 960, + "y": 264 + }, + { + "type": "path", + "id": "p77", + "name": "鱼尾 · 上", + "d": "M0 0 L20 0 L10.0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 996 + }, + { + "type": "path", + "id": "p78", + "name": "鱼尾 · 下", + "d": "M10.0 0 L20 9 L0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 1009 + }, + { + "type": "text", + "id": "t79", + "name": "页码", + "content": "4 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "center", + "x": 860, + "y": 1026 + } + ], + "x": 0, + "y": 1440 + }, + { + "type": "frame", + "id": "f80", + "name": "05 引文", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-xuan" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f82", + "name": "天头批注", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 56, + "children": [ + { + "type": "text", + "id": "t81", + "name": "批注", + "content": "回行的距离,是版面替眼睛付的成本", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f84", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 144, + "children": [ + { + "type": "text", + "id": "t83", + "name": "标题", + "content": "一行超过三十个汉字,眼睛就会在回行时丢位置", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f86", + "name": "引文块", + "width": 1080, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-xuan-deep" + } + ], + "padding": [ + 64, + 64 + ], + "x": 420, + "y": 372, + "children": [ + { + "type": "text", + "id": "t85", + "name": "引文", + "content": "行的长度决定读者每次回行要走多远。\n走得太远,眼睛会落到上一行或下一行,\n于是要重读;重读不是理解慢,是版面失职。", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f88", + "name": "出处", + "width": 1080, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 420, + "y": 732, + "children": [ + { + "type": "text", + "id": "t87", + "name": "出处", + "content": "——《版面与阅读》第二章 · 行长与回行", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r89", + "name": "界行", + "width": 1, + "height": 708, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ], + "x": 360, + "y": 264 + }, + { + "type": "rectangle", + "id": "r90", + "name": "界行", + "width": 1, + "height": 708, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ], + "x": 1560, + "y": 264 + }, + { + "type": "path", + "id": "p91", + "name": "鱼尾 · 上", + "d": "M0 0 L20 0 L10.0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 996 + }, + { + "type": "path", + "id": "p92", + "name": "鱼尾 · 下", + "d": "M10.0 0 L20 9 L0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 1009 + }, + { + "type": "text", + "id": "t93", + "name": "页码", + "content": "5 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "center", + "x": 860, + "y": 1026 + } + ], + "x": 2040, + "y": 1440 + }, + { + "type": "frame", + "id": "f94", + "name": "06 表列", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-xuan" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f96", + "name": "天头批注", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 56, + "children": [ + { + "type": "text", + "id": "t95", + "name": "批注", + "content": "避头尾在引擎里缺席,只能由文案补上", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f98", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 144, + "children": [ + { + "type": "text", + "id": "t97", + "name": "标题", + "content": "断行处最见功夫,而排版引擎并不替我们避头尾", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f134", + "name": "表格", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 264, + "children": [ + { + "type": "frame", + "id": "f103", + "name": "表头", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 20, + 16 + ], + "children": [ + { + "type": "text", + "id": "t99", + "name": "表头 · 格", + "content": "现象", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 280 + }, + { + "type": "text", + "id": "t100", + "name": "表头 · 格", + "content": "当前引擎行为", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 388 + }, + { + "type": "text", + "id": "t101", + "name": "表头 · 格", + "content": "后果", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 376 + }, + { + "type": "text", + "id": "t102", + "name": "表头 · 格", + "content": "我们的做法", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + } + ] + }, + { + "type": "rectangle", + "id": "r104", + "name": "表头线", + "width": "fill_container", + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ] + }, + { + "type": "frame", + "id": "f109", + "name": "表行 1", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 20, + 16 + ], + "children": [ + { + "type": "text", + "id": "t105", + "name": "表行 1 · 格", + "content": "行首标点", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 280 + }, + { + "type": "text", + "id": "t106", + "name": "表行 1 · 格", + "content": "逐字断行,不避头尾", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 388 + }, + { + "type": "text", + "id": "t107", + "name": "表行 1 · 格", + "content": "「。」被甩到行首", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 376 + }, + { + "type": "text", + "id": "t108", + "name": "表行 1 · 格", + "content": "标题写死断点,正文控字数", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + } + ] + }, + { + "type": "rectangle", + "id": "r110", + "name": "界行 · 行间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f115", + "name": "表行 2", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-xuan-deep" + } + ], + "padding": [ + 20, + 16 + ], + "children": [ + { + "type": "text", + "id": "t111", + "name": "表行 2 · 格", + "content": "孤字末行", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 280 + }, + { + "type": "text", + "id": "t112", + "name": "表行 2 · 格", + "content": "末行只剩一两个字", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 388 + }, + { + "type": "text", + "id": "t113", + "name": "表行 2 · 格", + "content": "版面出现残行", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 376 + }, + { + "type": "text", + "id": "t114", + "name": "表行 2 · 格", + "content": "收窄栏宽,或改写文案", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + } + ] + }, + { + "type": "rectangle", + "id": "r116", + "name": "界行 · 行间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f121", + "name": "表行 3", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 20, + 16 + ], + "children": [ + { + "type": "text", + "id": "t117", + "name": "表行 3 · 格", + "content": "中英混排", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 280 + }, + { + "type": "text", + "id": "t118", + "name": "表行 3 · 格", + "content": "两侧不自动加间隙", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 388 + }, + { + "type": "text", + "id": "t119", + "name": "表行 3 · 格", + "content": "数字与汉字粘连", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 376 + }, + { + "type": "text", + "id": "t120", + "name": "表行 3 · 格", + "content": "文案里补半角空格", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + } + ] + }, + { + "type": "rectangle", + "id": "r122", + "name": "界行 · 行间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f127", + "name": "表行 4", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-xuan-deep" + } + ], + "padding": [ + 20, + 16 + ], + "children": [ + { + "type": "text", + "id": "t123", + "name": "表行 4 · 格", + "content": "数值对齐", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 280 + }, + { + "type": "text", + "id": "t124", + "name": "表行 4 · 格", + "content": "没有等宽数字", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 388 + }, + { + "type": "text", + "id": "t125", + "name": "表行 4 · 格", + "content": "列与列之间发抖", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 376 + }, + { + "type": "text", + "id": "t126", + "name": "表行 4 · 格", + "content": "数字走西文族,列宽写死", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + } + ] + }, + { + "type": "rectangle", + "id": "r128", + "name": "界行 · 行间", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-jie" + } + ] + }, + { + "type": "frame", + "id": "f133", + "name": "表行 5", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 20, + 16 + ], + "children": [ + { + "type": "text", + "id": "t129", + "name": "表行 5 · 格", + "content": "省略号截断", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 280 + }, + { + "type": "text", + "id": "t130", + "name": "表行 5 · 格", + "content": "直接截去后半句", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 388 + }, + { + "type": "text", + "id": "t131", + "name": "表行 5 · 格", + "content": "读者读到半截话", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 376 + }, + { + "type": "text", + "id": "t132", + "name": "表行 5 · 格", + "content": "不截断,改写或换页型", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f136", + "name": "来源", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 848, + "children": [ + { + "type": "text", + "id": "t135", + "name": "来源", + "content": "来源:版面组对内部三十份中文文档的抽样,2026 年 7 月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "path", + "id": "p137", + "name": "鱼尾 · 上", + "d": "M0 0 L20 0 L10.0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 996 + }, + { + "type": "path", + "id": "p138", + "name": "鱼尾 · 下", + "d": "M10.0 0 L20 9 L0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 1009 + }, + { + "type": "text", + "id": "t139", + "name": "页码", + "content": "6 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "center", + "x": 860, + "y": 1026 + } + ], + "x": 4080, + "y": 1440 + }, + { + "type": "frame", + "id": "f140", + "name": "07 收束 · 函套", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-case" + } + ], + "clipContent": true, + "children": [ + { + "type": "path", + "id": "p141", + "name": "鱼尾 · 上", + "d": "M0 0 L80 0 L40.0 36 Z", + "width": 80, + "height": 36, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 920, + "y": 300 + }, + { + "type": "path", + "id": "p142", + "name": "鱼尾 · 下", + "d": "M40.0 0 L80 36 L0 36 Z", + "width": 80, + "height": 36, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 920, + "y": 352 + }, + { + "type": "frame", + "id": "f144", + "name": "收束句", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 120, + "y": 470, + "children": [ + { + "type": "text", + "id": "t143", + "name": "收束", + "content": "把四次退让逐项收回来,\n从一行三十字开始。", + "fontFamily": "Noto Sans SC", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-on" + } + ], + "lineHeight": 1.12, + "letterSpacing": -1, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f147", + "name": "落款", + "width": 1680, + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "justifyContent": "center", + "x": 120, + "y": 700, + "children": [ + { + "type": "text", + "id": "t145", + "name": "落款 · 单位", + "content": "版面组 · 内部评议", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t146", + "name": "落款 · 日期", + "content": "2026.08.09", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "path", + "id": "p148", + "name": "鱼尾 · 上", + "d": "M0 0 L20 0 L10.0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 996 + }, + { + "type": "path", + "id": "p149", + "name": "鱼尾 · 下", + "d": "M10.0 0 L20 9 L0 9 Z", + "width": 20, + "height": 9, + "fill": [ + { + "type": "solid", + "color": "$c-cinnabar" + } + ], + "x": 950, + "y": 1009 + }, + { + "type": "text", + "id": "t150", + "name": "页码", + "content": "7 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-xuan-dim" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "center", + "x": 860, + "y": 1026 + } + ], + "x": 0, + "y": 2880 + } + ] +} diff --git a/crates/op-editor-core/assets/scene_templates/dossier-linen-deck.op b/crates/op-editor-core/assets/scene_templates/dossier-linen-deck.op new file mode 100644 index 000000000..a63aa2011 --- /dev/null +++ b/crates/op-editor-core/assets/scene_templates/dossier-linen-deck.op @@ -0,0 +1,7045 @@ +{ + "version": "1.0.0", + "name": "卷宗亚麻 · 文档备忘 deck", + "variables": { + "c-linen": { + "type": "color", + "value": "#F3EEE4" + }, + "c-band": { + "type": "color", + "value": "#EFE9DE" + }, + "c-deep": { + "type": "color", + "value": "#E6DFD3" + }, + "c-ink": { + "type": "color", + "value": "#201C19" + }, + "c-ink-soft": { + "type": "color", + "value": "#56524E" + }, + "c-ink-faint": { + "type": "color", + "value": "#746F6B" + }, + "c-rule": { + "type": "color", + "value": "#C0BDB8" + }, + "c-thread": { + "type": "color", + "value": "#864737" + } + }, + "children": [ + { + "type": "frame", + "id": "f27", + "name": "01 文件首页", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f15", + "name": "01 文件首页 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 40, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f21", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f20", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t16", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f19", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t17", + "name": "页标", + "content": "p. 1 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r18", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f14", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 44, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "rectangle", + "id": "r2", + "name": "细线", + "width": 1584, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ] + }, + { + "type": "text", + "id": "t1", + "name": "文档标题", + "content": "把门店巡检从抽查\n改为全量记录", + "fontFamily": "Noto Sans SC", + "fontSize": 76, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.1, + "letterSpacing": -2, + "textGrowth": "fixed-width", + "width": 1584 + }, + { + "type": "text", + "id": "t3", + "name": "摘要", + "content": "巡检是我们唯一能在事故发生前拿到的一手信息。\n过去两年它以人工抽查的方式运行,覆盖到的门店不足四成,\n上报的问题在纸质表单与工作群之间流转,闭环时长无从统计。\n本备忘给出三个方案的取舍、所需投入,\n以及三项需要在本月内批复的事项。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + }, + { + "type": "frame", + "id": "f13", + "name": "签发信息", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 12, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f6", + "name": "元信息行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t4", + "name": "元信息标签", + "content": "收件人", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t5", + "name": "元信息值", + "content": "运营中心 · 门店运营组 · 信息技术部", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f9", + "name": "元信息行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t7", + "name": "元信息标签", + "content": "签发日期", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t8", + "name": "元信息值", + "content": "2026-08-09", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f12", + "name": "元信息行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t10", + "name": "元信息标签", + "content": "密级", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t11", + "name": "元信息值", + "content": "内部 · 限项目组", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f22", + "name": "01 文件首页 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r23", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r24", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r25", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r26", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 0, + "y": 0 + }, + { + "type": "frame", + "id": "f57", + "name": "02 背景", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f45", + "name": "02 背景 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 48, + "justifyContent": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f51", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f50", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t46", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f49", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t47", + "name": "页标", + "content": "p. 2 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r48", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f44", + "name": "节", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f42", + "name": "节标题行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t40", + "name": "节号", + "content": "§1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.115, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "text", + "id": "t41", + "name": "节标题", + "content": "背景与问题", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.25, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f43", + "name": "节内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f31", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t29", + "name": "段号", + "content": "§1.1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f30", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t28", + "name": "正文", + "content": "人工抽查按片区轮换,每家门店平均 47 天才被巡到一次。\n到店的检查项由巡检员当场手写,回办公室再录入系统,\n两个环节之间平均隔了 1.8 天,照片与表单常常对不上号。\n抽查本身没有错,错的是把抽查的结果当成了全量的结论。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f35", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t33", + "name": "段号", + "content": "§1.2", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f34", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t32", + "name": "正文", + "content": "问题上报走工作群,群里同时还有排班、报修与日常通知。\n信息一旦被后面的消息顶下去,就等于没有发生过。\n上季度共 1342 条上报,能追溯到闭环记录的只有 611 条。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f39", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t37", + "name": "段号", + "content": "§1.3", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f38", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t36", + "name": "正文", + "content": "各区域对同一个检查项的判定尺度并不一致:\n华东把冷链温度超标记为一般问题,华南记为严重问题,\n汇总到集团时,两者被加在了同一个数字里。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f52", + "name": "02 背景 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r53", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r54", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r55", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r56", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 2040, + "y": 0 + }, + { + "type": "frame", + "id": "f163", + "name": "03 现状数据", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f151", + "name": "03 现状数据 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 40, + "justifyContent": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f157", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f156", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t152", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f155", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t153", + "name": "页标", + "content": "p. 3 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r154", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f150", + "name": "节", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f148", + "name": "节标题行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t146", + "name": "节号", + "content": "§2", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.115, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "text", + "id": "t147", + "name": "节标题", + "content": "现状:五个片区的四项读数", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.25, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f149", + "name": "节内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f141", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f139", + "name": "表格", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r68", + "name": "细线", + "width": 1584, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f69", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f58", + "name": "单元格", + "width": 388, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t59", + "name": "单元格文字", + "content": "片区", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f60", + "name": "单元格", + "width": 300, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t61", + "name": "单元格文字", + "content": "月均巡检次数", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f62", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t63", + "name": "单元格文字", + "content": "上报条数", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f64", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t65", + "name": "单元格文字", + "content": "闭环率(%)", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f66", + "name": "单元格", + "width": 320, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t67", + "name": "单元格文字", + "content": "闭环时长(天)", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r70", + "name": "细线", + "width": 1584, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f81", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "frame", + "id": "f71", + "name": "单元格", + "width": 388, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t72", + "name": "单元格文字", + "content": "华东", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f73", + "name": "单元格", + "width": 300, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t74", + "name": "单元格文字", + "content": "412", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f75", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t76", + "name": "单元格文字", + "content": "386", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f77", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t78", + "name": "单元格文字", + "content": "46", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f79", + "name": "单元格", + "width": 320, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t80", + "name": "单元格文字", + "content": "5.2", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f92", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f82", + "name": "单元格", + "width": 388, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t83", + "name": "单元格文字", + "content": "华南", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f84", + "name": "单元格", + "width": 300, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t85", + "name": "单元格文字", + "content": "358", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f86", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t87", + "name": "单元格文字", + "content": "341", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f88", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t89", + "name": "单元格文字", + "content": "51", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f90", + "name": "单元格", + "width": 320, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t91", + "name": "单元格文字", + "content": "4.6", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f103", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "frame", + "id": "f93", + "name": "单元格", + "width": 388, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t94", + "name": "单元格文字", + "content": "华北", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f95", + "name": "单元格", + "width": 300, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t96", + "name": "单元格文字", + "content": "296", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f97", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t98", + "name": "单元格文字", + "content": "302", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f99", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t100", + "name": "单元格文字", + "content": "39", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f101", + "name": "单元格", + "width": 320, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t102", + "name": "单元格文字", + "content": "6.8", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f114", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f104", + "name": "单元格", + "width": 388, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t105", + "name": "单元格文字", + "content": "西南", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f106", + "name": "单元格", + "width": 300, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t107", + "name": "单元格文字", + "content": "187", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f108", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t109", + "name": "单元格文字", + "content": "154", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f110", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t111", + "name": "单元格文字", + "content": "44", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f112", + "name": "单元格", + "width": 320, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t113", + "name": "单元格文字", + "content": "5.9", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f125", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "frame", + "id": "f115", + "name": "单元格", + "width": 388, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t116", + "name": "单元格文字", + "content": "东北", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f117", + "name": "单元格", + "width": 300, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t118", + "name": "单元格文字", + "content": "121", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f119", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t120", + "name": "单元格文字", + "content": "98", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f121", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t122", + "name": "单元格文字", + "content": "33", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f123", + "name": "单元格", + "width": 320, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t124", + "name": "单元格文字", + "content": "8.1", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r126", + "name": "细线", + "width": 1584, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ] + }, + { + "type": "frame", + "id": "f137", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f127", + "name": "单元格", + "width": 388, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t128", + "name": "单元格文字", + "content": "全国", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f129", + "name": "单元格", + "width": 300, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t130", + "name": "单元格文字", + "content": "1374", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f131", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t132", + "name": "单元格文字", + "content": "1281", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f133", + "name": "单元格", + "width": 280, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t134", + "name": "单元格文字", + "content": "44", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + }, + { + "type": "frame", + "id": "f135", + "name": "单元格", + "width": 320, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t136", + "name": "单元格文字", + "content": "5.9", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r138", + "name": "细线", + "width": 1584, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + }, + { + "type": "text", + "id": "t140", + "name": "来源行", + "content": "数据来源:巡检系统 2026 年第二季度导出;判定口径见 §1.3。闭环率按「有整改记录且经复核」计,与月报一致。", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f145", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t143", + "name": "段号", + "content": "§2.1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f144", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t142", + "name": "正文", + "content": "巡检次数与上报条数几乎同步下降,闭环率却没有跟着走:\n东北片区巡到的次数最少,闭环时长反而最长 8.1 天。\n这说明瓶颈不在巡得够不够勤,而在巡完之后没人接得住。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f158", + "name": "03 现状数据 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r159", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r160", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r161", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r162", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 4080, + "y": 0 + }, + { + "type": "frame", + "id": "f193", + "name": "04 分析", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f181", + "name": "04 分析 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 40, + "justifyContent": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f187", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f186", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t182", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f185", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t183", + "name": "页标", + "content": "p. 4 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r184", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f180", + "name": "节", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 28, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f178", + "name": "节标题行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t176", + "name": "节号", + "content": "§3", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.115, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "text", + "id": "t177", + "name": "节标题", + "content": "为什么抽查救不回来", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.25, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f179", + "name": "节内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 28, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f170", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t168", + "name": "段号", + "content": "§3.1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f169", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t167", + "name": "正文", + "content": "抽查的样本由排班决定,而排班避开了最难去的那些门店。\n越是偏远、越是人手紧的门店,被巡到的间隔越长,\n于是问题最多的地方,恰好是我们了解得最少的地方。\n这不是执行不力,是抽样方法自带的偏差。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f174", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t172", + "name": "段号", + "content": "§3.2", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f173", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t171", + "name": "正文", + "content": "闭环率停在 44%,不是因为没人整改,\n而是因为整改完成后没有一个必须回填的动作。\n没有回填,就没有记录;没有记录,复算就无从谈起。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f175", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f166", + "name": "引文块", + "width": 1200, + "height": "fit_content", + "layout": "vertical", + "gap": 14, + "fill": [ + { + "type": "solid", + "color": "$c-deep" + } + ], + "padding": [ + 32, + 40 + ], + "children": [ + { + "type": "text", + "id": "t164", + "name": "引文", + "content": "我们不缺巡检,缺的是能被复算的巡检。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1100 + }, + { + "type": "text", + "id": "t165", + "name": "引文出处", + "content": "—— 华东区运营负责人,6 月复盘会记录", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1100 + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f188", + "name": "04 分析 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r189", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r190", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r191", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r192", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 0, + "y": 1440 + }, + { + "type": "frame", + "id": "f285", + "name": "05 方案对比", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f273", + "name": "05 方案对比 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 40, + "justifyContent": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f279", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f278", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t274", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f277", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t275", + "name": "页标", + "content": "p. 5 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r276", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f272", + "name": "节", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f270", + "name": "节标题行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t268", + "name": "节号", + "content": "§4", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.115, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "text", + "id": "t269", + "name": "节标题", + "content": "三个方案,按同一组维度逐行回答", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.25, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f271", + "name": "节内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f263", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f261", + "name": "表格", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r202", + "name": "细线", + "width": 1584, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f203", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f194", + "name": "单元格", + "width": 384, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t195", + "name": "单元格文字", + "content": "评估维度", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f196", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t197", + "name": "单元格文字", + "content": "甲 · 扩编巡检员", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f198", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t199", + "name": "单元格文字", + "content": "乙 · 外包第三方", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f200", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t201", + "name": "单元格文字", + "content": "丙 · 自检加抽核", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r204", + "name": "细线", + "width": 1584, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f213", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "frame", + "id": "f205", + "name": "单元格", + "width": 384, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t206", + "name": "单元格文字", + "content": "覆盖率", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f207", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t208", + "name": "单元格文字", + "content": "提升有限", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f209", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t210", + "name": "单元格文字", + "content": "可达九成", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f211", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t212", + "name": "单元格文字", + "content": "全量覆盖", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f222", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f214", + "name": "单元格", + "width": 384, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t215", + "name": "单元格文字", + "content": "单店月成本", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f216", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t217", + "name": "单元格文字", + "content": "高", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f218", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t219", + "name": "单元格文字", + "content": "中", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f220", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t221", + "name": "单元格文字", + "content": "低", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f231", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "frame", + "id": "f223", + "name": "单元格", + "width": 384, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t224", + "name": "单元格文字", + "content": "落地周期", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f225", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t226", + "name": "单元格文字", + "content": "三个月", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f227", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t228", + "name": "单元格文字", + "content": "六周", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f229", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t230", + "name": "单元格文字", + "content": "十周", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f240", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f232", + "name": "单元格", + "width": 384, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t233", + "name": "单元格文字", + "content": "数据一致性", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f234", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t235", + "name": "单元格文字", + "content": "依赖个人经验", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f236", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t237", + "name": "单元格文字", + "content": "依赖合同条款", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f238", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t239", + "name": "单元格文字", + "content": "由系统约束", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f249", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "frame", + "id": "f241", + "name": "单元格", + "width": 384, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t242", + "name": "单元格文字", + "content": "主要风险", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f243", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t244", + "name": "单元格文字", + "content": "招聘周期偏长", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f245", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t246", + "name": "单元格文字", + "content": "数据不在自己手里", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f247", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t248", + "name": "单元格文字", + "content": "需要门店配合", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r250", + "name": "细线", + "width": 1584, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ] + }, + { + "type": "frame", + "id": "f259", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 4, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f251", + "name": "单元格", + "width": 384, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t252", + "name": "单元格文字", + "content": "结论", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f253", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t254", + "name": "单元格文字", + "content": "不建议", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f255", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t256", + "name": "单元格文字", + "content": "备选", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f257", + "name": "单元格", + "width": 396, + "height": "fit_content", + "layout": "vertical", + "padding": [ + 16, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t258", + "name": "单元格文字", + "content": "推荐", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r260", + "name": "细线", + "width": 1584, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + }, + { + "type": "text", + "id": "t262", + "name": "推荐说明", + "content": "推荐方案丙。它是三者里唯一让「记录」成为流程副产品的一个,其余两个都还要靠人记得去做。", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f267", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t265", + "name": "段号", + "content": "§4.1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f266", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t264", + "name": "正文", + "content": "成本按 240 家门店试算:甲需增编 11 人,年支出约 190 万;\n乙的报价随门店数线性上涨,丙在第二年起低于两者的一半。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f280", + "name": "05 方案对比 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r281", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r282", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r283", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r284", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 2040, + "y": 1440 + }, + { + "type": "frame", + "id": "f313", + "name": "06 逆向叙述", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f301", + "name": "06 逆向叙述 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 40, + "justifyContent": "center", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f307", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f306", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t302", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f305", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t303", + "name": "页标", + "content": "p. 6 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r304", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f300", + "name": "节", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f298", + "name": "节标题行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t296", + "name": "节号", + "content": "§5", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.115, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "text", + "id": "t297", + "name": "节标题", + "content": "若此事已成", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.25, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f299", + "name": "节内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f293", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t291", + "name": "段号", + "content": "§5.1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f292", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t290", + "name": "正文", + "content": "到明年三月,每家门店在每个自然周都会留下完整的巡检记录。\n记录不再依赖谁记得拍照,而是由流程本身产生:\n检查项没有勾完,当天的巡检就不算结束。\n区域经理在周一早晨看到的不是一份汇总表,\n而是上周所有未闭环问题按门店排开的清单。\n我们不再讨论覆盖率,因为覆盖率恒等于百分之百;\n要讨论的是闭环时长,以及它为什么在某些门店偏长。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f295", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f294", + "name": "署名行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r289", + "name": "引语竖线", + "width": 2, + "height": 132, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ] + }, + { + "type": "frame", + "id": "f288", + "name": "署名引语", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 12, + "fill": [], + "padding": [ + 0, + 0, + 0, + 36 + ], + "children": [ + { + "type": "text", + "id": "t286", + "name": "引语", + "content": "把巡检做成一件不需要提醒的事,\n是这次改造真正的目标。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1100 + }, + { + "type": "text", + "id": "t287", + "name": "引语署名", + "content": "—— 项目组,2026 年 8 月", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1100 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f308", + "name": "06 逆向叙述 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r309", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r310", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r311", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r312", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 4080, + "y": 1440 + }, + { + "type": "frame", + "id": "f357", + "name": "07 疑问", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f345", + "name": "07 疑问 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 28, + "justifyContent": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f351", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f350", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t346", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f349", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t347", + "name": "页标", + "content": "p. 7 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r348", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f344", + "name": "节", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f342", + "name": "节标题行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t340", + "name": "节号", + "content": "§6", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.115, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "text", + "id": "t341", + "name": "节标题", + "content": "已经被问到的四个问题", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.25, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f343", + "name": "节内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f318", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t316", + "name": "段号", + "content": "§6.1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f317", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t314", + "name": "问", + "content": "问:全量记录会不会把巡检变成打卡?", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + }, + { + "type": "text", + "id": "t315", + "name": "答", + "content": "不会。检查项从 42 项压到 18 项,每项都要有照片或读数支撑,\n勾选式的应付会在抽核环节被直接退回。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.65, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f320", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "rectangle", + "id": "r319", + "name": "细线", + "width": 1584, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f325", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t323", + "name": "段号", + "content": "§6.2", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f324", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t321", + "name": "问", + "content": "问:门店自检的结果可信吗?", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + }, + { + "type": "text", + "id": "t322", + "name": "答", + "content": "抽核比例定在 15%,由区域经理随机指定,结果与自检并列存档。\n连续两次抽核不一致的门店,恢复为人工巡检。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.65, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f327", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "rectangle", + "id": "r326", + "name": "细线", + "width": 1584, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f332", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t330", + "name": "段号", + "content": "§6.3", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f331", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t328", + "name": "问", + "content": "问:需要门店多花多少时间?", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + }, + { + "type": "text", + "id": "t329", + "name": "答", + "content": "单次自检 12 分钟,比现行的纸质表单少 4 分钟。\n时间省在录入上,不省在检查上。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.65, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f334", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "rectangle", + "id": "r333", + "name": "细线", + "width": 1584, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f339", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t337", + "name": "段号", + "content": "§6.4", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f338", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t335", + "name": "问", + "content": "问:这套记录会被用来考核门店吗?", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + }, + { + "type": "text", + "id": "t336", + "name": "答", + "content": "前两个季度只用于发现问题,不进考核。\n考核口径需要另行讨论,不在本备忘的范围内。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.65, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f352", + "name": "07 疑问 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r353", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r354", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r355", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r356", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 0, + "y": 2880 + }, + { + "type": "frame", + "id": "f412", + "name": "08 决议", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f400", + "name": "08 决议 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 96, + 0 + ], + "gap": 36, + "justifyContent": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f406", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f405", + "name": "页眉", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t401", + "name": "文档代号", + "content": "OPS-2026-041", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f404", + "name": "骑缝页标", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "t402", + "name": "页标", + "content": "p. 8 / 8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "rectangle", + "id": "r403", + "name": "细线", + "width": 48, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f399", + "name": "节", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f397", + "name": "节标题行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t395", + "name": "节号", + "content": "§7", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.115, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "text", + "id": "t396", + "name": "节标题", + "content": "待批准事项", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.25, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "frame", + "id": "f398", + "name": "节内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f390", + "name": "正文块", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "padding": [ + 0, + 0, + 0, + 216 + ], + "children": [ + { + "type": "frame", + "id": "f384", + "name": "决策块", + "width": 1200, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "fill": [ + { + "type": "solid", + "color": "$c-deep" + } + ], + "padding": [ + 36, + 40 + ], + "children": [ + { + "type": "frame", + "id": "f365", + "name": "待批准事项", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f360", + "name": "事项行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t358", + "name": "事项序号", + "content": "1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.731, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 40 + }, + { + "type": "text", + "id": "t359", + "name": "事项", + "content": "批准方案丙,在华东与华南两区先行试点。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1000 + } + ] + }, + { + "type": "frame", + "id": "f364", + "name": "责任行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "start", + "fill": [], + "padding": [ + 0, + 0, + 0, + 56 + ], + "children": [ + { + "type": "text", + "id": "t361", + "name": "决策人", + "content": "决策人 运营中心 · 周敏", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t362", + "name": "期限标签", + "content": "期限", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t363", + "name": "期限日期", + "content": "2026-08-20", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r366", + "name": "细线", + "width": 1120, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f374", + "name": "待批准事项", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f369", + "name": "事项行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t367", + "name": "事项序号", + "content": "2", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.731, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 40 + }, + { + "type": "text", + "id": "t368", + "name": "事项", + "content": "批准巡检系统改造预算 86 万元,分两期拨付。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1000 + } + ] + }, + { + "type": "frame", + "id": "f373", + "name": "责任行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "start", + "fill": [], + "padding": [ + 0, + 0, + 0, + 56 + ], + "children": [ + { + "type": "text", + "id": "t370", + "name": "决策人", + "content": "决策人 财务部 · 陈立", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t371", + "name": "期限标签", + "content": "期限", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t372", + "name": "期限日期", + "content": "2026-08-27", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r375", + "name": "细线", + "width": 1120, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f383", + "name": "待批准事项", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f378", + "name": "事项行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t376", + "name": "事项序号", + "content": "3", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 1.731, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 40 + }, + { + "type": "text", + "id": "t377", + "name": "事项", + "content": "批准抽核比例与退回规则写入门店运营手册。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1000 + } + ] + }, + { + "type": "frame", + "id": "f382", + "name": "责任行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "start", + "fill": [], + "padding": [ + 0, + 0, + 0, + 56 + ], + "children": [ + { + "type": "text", + "id": "t379", + "name": "决策人", + "content": "决策人 门店运营组 · 李哲", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t380", + "name": "期限标签", + "content": "期限", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t381", + "name": "期限日期", + "content": "2026-09-10", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f389", + "name": "签署位", + "width": 480, + "height": "fit_content", + "layout": "vertical", + "gap": 12, + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r385", + "name": "细线", + "width": 480, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f388", + "name": "签署标签", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 280, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t386", + "name": "签署", + "content": "批准签署", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t387", + "name": "签署日期", + "content": "日期", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f394", + "name": "编号段", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 120, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t392", + "name": "段号", + "content": "§7.1", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "lineHeight": 2.077, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 96, + "textAlign": "right" + }, + { + "type": "frame", + "id": "f393", + "name": "段落", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "text", + "id": "t391", + "name": "正文", + "content": "三项批复完成后,本备忘归档为定稿并抄送三个部门;\n未获批复的部分按原流程继续执行,下一次复核安排在 11 月。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.8, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f407", + "name": "08 决议 · 装订", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r408", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 264 + }, + { + "type": "rectangle", + "id": "r409", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 534 + }, + { + "type": "rectangle", + "id": "r410", + "name": "装订孔", + "width": 12, + "height": 12, + "fill": [ + { + "type": "solid", + "color": "$c-linen" + } + ], + "stroke": { + "thickness": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + "x": 115, + "y": 804 + }, + { + "type": "rectangle", + "id": "r411", + "name": "装订线", + "width": 2, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-thread" + } + ], + "x": 120, + "y": 0 + } + ] + } + ], + "x": 2040, + "y": 2880 + } + ] +} diff --git a/crates/op-editor-core/assets/scene_templates/gridpaper-graphite-deck.op b/crates/op-editor-core/assets/scene_templates/gridpaper-graphite-deck.op new file mode 100644 index 000000000..2a777edd6 --- /dev/null +++ b/crates/op-editor-core/assets/scene_templates/gridpaper-graphite-deck.op @@ -0,0 +1,11996 @@ +{ + "version": "1.0.0", + "name": "方格石墨 · 学术答辩档", + "variables": { + "c-paper": { + "type": "color", + "value": "#F4F8F8" + }, + "c-grid": { + "type": "color", + "value": "#E0E8E9" + }, + "c-panel": { + "type": "color", + "value": "#E8EEEF" + }, + "c-hair": { + "type": "color", + "value": "#CBD0D1" + }, + "c-graphite": { + "type": "color", + "value": "#1F2329" + }, + "c-soft": { + "type": "color", + "value": "#575B60" + }, + "c-faint": { + "type": "color", + "value": "#797E83" + }, + "c-blue": { + "type": "color", + "value": "#1D6294" + }, + "c-green": { + "type": "color", + "value": "#33724C" + }, + "c-amber": { + "type": "color", + "value": "#A17221" + } + }, + "children": [ + { + "type": "frame", + "id": "f1", + "name": "01 封面", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "rectangle", + "id": "r2", + "name": "起始短线", + "width": 48, + "height": 6, + "fill": [ + { + "type": "solid", + "color": "$c-blue" + } + ], + "x": 112, + "y": 384 + }, + { + "type": "frame", + "id": "f4", + "name": "主标", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 432, + "children": [ + { + "type": "text", + "id": "t3", + "name": "主标题", + "content": "夜间照明强度与城市鸟类\n鸣唱起始时间的关系", + "fontFamily": "Noto Sans SC", + "fontSize": 84, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.1, + "letterSpacing": -2, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f6", + "name": "副标", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 672, + "children": [ + { + "type": "text", + "id": "t5", + "name": "副标题", + "content": "三座城市 24 个样点、两个繁殖季的同步声学与照度监测", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f10", + "name": "落款", + "width": 1680, + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "center", + "fill": [], + "x": 112, + "y": 816, + "children": [ + { + "type": "text", + "id": "t7", + "name": "作者", + "content": "陆停云 · 沈砚秋", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t8", + "name": "单位", + "content": "城市生态研究所 · 声景实验室", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t9", + "name": "日期", + "content": "2026.08", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "rectangle", + "id": "r11", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f13", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t12", + "name": "页码", + "content": "1 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r14", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r15", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r16", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r17", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r18", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r19", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r20", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r21", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r22", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r23", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r24", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r25", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r26", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r27", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r28", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r29", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r30", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r31", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r32", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r33", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r34", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r35", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r36", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r37", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r38", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r39", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r40", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r41", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r42", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r43", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r44", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r45", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r46", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r47", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r48", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r49", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r50", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r51", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r52", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r53", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r54", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r55", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r56", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r57", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r58", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r59", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r60", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r61", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r62", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r63", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r64", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r65", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r66", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r67", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r68", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r69", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r70", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r71", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r72", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r73", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r74", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r75", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r76", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 0, + "y": 0 + }, + { + "type": "frame", + "id": "f77", + "name": "02 问题与缺口", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f79", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 96, + "children": [ + { + "type": "text", + "id": "t78", + "name": "标题", + "content": "已有研究说明照明推迟了觅食,\n却没有回答鸣唱是否同步位移", + "fontFamily": "Noto Sans SC", + "fontSize": 60, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.18, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f83", + "name": "缺口 01", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 384, + "children": [ + { + "type": "text", + "id": "t80", + "name": "序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 528 + }, + { + "type": "text", + "id": "t81", + "name": "小标题", + "content": "夜间照明仍在扩张", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t82", + "name": "说明", + "content": "全球人工夜间照明面积每年\n增长约百分之二。三座城市的\n地面照度中位数十年间由\n5 lux 升至 12 lux。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f87", + "name": "缺口 02", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "x": 688, + "y": 384, + "children": [ + { + "type": "text", + "id": "t84", + "name": "序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 528 + }, + { + "type": "text", + "id": "t85", + "name": "小标题", + "content": "觅食有数据,鸣唱没有", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t86", + "name": "说明", + "content": "既有工作集中在觅食与迁徙\n时序;鸣唱起始时间只有零散\n记录,且多数未同步测量样\n点的实际照度。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f91", + "name": "缺口 03", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "x": 1264, + "y": 384, + "children": [ + { + "type": "text", + "id": "t88", + "name": "序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 528 + }, + { + "type": "text", + "id": "t89", + "name": "小标题", + "content": "把两者同点同时量", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t90", + "name": "说明", + "content": "本研究在同一样点同步记录\n地面照度与鸣唱起始时间,\n给出两者的剂量—反应关系,\n而不是相关系数。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r92", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f94", + "name": "引证槽", + "width": 1240, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 984, + "children": [ + { + "type": "text", + "id": "t93", + "name": "引证", + "content": "[1] 陈黎 等,2024,城市生态学报,41(3): 217–229", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f96", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t95", + "name": "页码", + "content": "2 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r97", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r98", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r99", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r100", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r101", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r102", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r103", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r104", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r105", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r106", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r107", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r108", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r109", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r110", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r111", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r112", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r113", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r114", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r115", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r116", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r117", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r118", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r119", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r120", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r121", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r122", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r123", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r124", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r125", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r126", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r127", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r128", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r129", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r130", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r131", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r132", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r133", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r134", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r135", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r136", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r137", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r138", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r139", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r140", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r141", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r142", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r143", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r144", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r145", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r146", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r147", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r148", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r149", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r150", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r151", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r152", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r153", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r154", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r155", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r156", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r157", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r158", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r159", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 2040, + "y": 0 + }, + { + "type": "frame", + "id": "f160", + "name": "03 方法", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f162", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 96, + "children": [ + { + "type": "text", + "id": "t161", + "name": "标题", + "content": "在同一样点上把照度与鸣唱起始时间同步记录", + "fontFamily": "Noto Sans SC", + "fontSize": 60, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.18, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f165", + "name": "标签舌 · 定义 · 方法", + "width": 208, + "height": 40, + "layout": "none", + "fill": [], + "x": 88, + "y": 200, + "children": [ + { + "type": "text", + "id": "t164", + "name": "标签舌 · 字", + "content": "定义 · 方法", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content", + "x": 30, + "y": 6 + }, + { + "type": "path", + "id": "p163", + "name": "标签舌 · 形", + "d": "M12 0 L208 0 L208 40 L0 40 Z", + "width": 208, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-blue" + } + ], + "x": 0, + "y": 0 + } + ] + }, + { + "type": "frame", + "id": "f167", + "name": "方法块", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-panel" + } + ], + "padding": [ + 48, + 48 + ], + "x": 112, + "y": 240, + "children": [ + { + "type": "text", + "id": "t166", + "name": "方法陈述", + "content": "本文把「鸣唱起始时间」定义为日落次日拂晓、样点上出现的第一段持续两秒以上的种内鸣唱;\n「地面照度」取记录仪水平面上一米处的照度中位数。两个量都在同一样点、同一夜内取得。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f187", + "name": "流程", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 528, + "children": [ + { + "type": "frame", + "id": "f171", + "name": "步骤 01", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "t168", + "name": "序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "text", + "id": "t169", + "name": "步骤名", + "content": "布点与配对", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 336 + }, + { + "type": "text", + "id": "t170", + "name": "步骤说明", + "content": "八个样点覆盖 0.5 至 50 lux,亮暗成对", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + } + ] + }, + { + "type": "rectangle", + "id": "r172", + "name": "步间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f176", + "name": "步骤 02", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "t173", + "name": "序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "text", + "id": "t174", + "name": "步骤名", + "content": "同步测量", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 336 + }, + { + "type": "text", + "id": "t175", + "name": "步骤说明", + "content": "声学记录仪与照度计同点同夜同步记录", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + } + ] + }, + { + "type": "rectangle", + "id": "r177", + "name": "步间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f181", + "name": "步骤 03", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "t178", + "name": "序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "text", + "id": "t179", + "name": "步骤名", + "content": "起始时间判读", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 336 + }, + { + "type": "text", + "id": "t180", + "name": "步骤说明", + "content": "两名判读者独立标注,分歧交第三人裁定", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + } + ] + }, + { + "type": "rectangle", + "id": "r182", + "name": "步间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f186", + "name": "步骤 04", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "t183", + "name": "序号", + "content": "04", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "text", + "id": "t184", + "name": "步骤名", + "content": "统计模型", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 336 + }, + { + "type": "text", + "id": "t185", + "name": "步骤说明", + "content": "混合线性模型,照度取对数,控温度与云量", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r188", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f190", + "name": "引证槽", + "width": 1240, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 984, + "children": [ + { + "type": "text", + "id": "t189", + "name": "引证", + "content": "[2] 方沐 等,2023,动物行为学报,18(2): 96–108", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f192", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t191", + "name": "页码", + "content": "3 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r193", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r194", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r195", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r196", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r197", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r198", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r199", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r200", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r201", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r202", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r203", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r204", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r205", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r206", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r207", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r208", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r209", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r210", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r211", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r212", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r213", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r214", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r215", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r216", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r217", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r218", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r219", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r220", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r221", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r222", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r223", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r224", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r225", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r226", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r227", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r228", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r229", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r230", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r231", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r232", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r233", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r234", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r235", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r236", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r237", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r238", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r239", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r240", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r241", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r242", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r243", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r244", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r245", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r246", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r247", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r248", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r249", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r250", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r251", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r252", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r253", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r254", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r255", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 4080, + "y": 0 + }, + { + "type": "frame", + "id": "f256", + "name": "04 结果 · 图", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f258", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 96, + "children": [ + { + "type": "text", + "id": "t257", + "name": "标题", + "content": "照度每上升十倍,鸣唱起始时间提前约九分钟", + "fontFamily": "Noto Sans SC", + "fontSize": 60, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.18, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r259", + "name": "柱 0.5 lux", + "width": 144, + "height": 25, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 695 + }, + { + "type": "frame", + "id": "f261", + "name": "柱值 0.5 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 639, + "children": [ + { + "type": "text", + "id": "t260", + "name": "数值", + "content": "2.1", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f263", + "name": "轴标 0.5 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 736, + "children": [ + { + "type": "text", + "id": "t262", + "name": "轴标", + "content": "0.5 lux", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "rectangle", + "id": "r264", + "name": "柱 1 lux", + "width": 144, + "height": 70, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 304, + "y": 650 + }, + { + "type": "frame", + "id": "f266", + "name": "柱值 1 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 304, + "y": 594, + "children": [ + { + "type": "text", + "id": "t265", + "name": "数值", + "content": "5.8", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f268", + "name": "轴标 1 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 304, + "y": 736, + "children": [ + { + "type": "text", + "id": "t267", + "name": "轴标", + "content": "1 lux", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "rectangle", + "id": "r269", + "name": "柱 5 lux", + "width": 144, + "height": 163, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 496, + "y": 557 + }, + { + "type": "frame", + "id": "f271", + "name": "柱值 5 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 496, + "y": 501, + "children": [ + { + "type": "text", + "id": "t270", + "name": "数值", + "content": "13.6", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f273", + "name": "轴标 5 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 496, + "y": 736, + "children": [ + { + "type": "text", + "id": "t272", + "name": "轴标", + "content": "5 lux", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "rectangle", + "id": "r274", + "name": "柱 20 lux", + "width": 144, + "height": 269, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 688, + "y": 451 + }, + { + "type": "frame", + "id": "f276", + "name": "柱值 20 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 688, + "y": 395, + "children": [ + { + "type": "text", + "id": "t275", + "name": "数值", + "content": "22.4", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f278", + "name": "轴标 20 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 688, + "y": 736, + "children": [ + { + "type": "text", + "id": "t277", + "name": "轴标", + "content": "20 lux", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "rectangle", + "id": "r279", + "name": "柱 50 lux", + "width": 144, + "height": 371, + "fill": [ + { + "type": "solid", + "color": "$c-blue" + } + ], + "x": 880, + "y": 349 + }, + { + "type": "frame", + "id": "f281", + "name": "柱值 50 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 880, + "y": 293, + "children": [ + { + "type": "text", + "id": "t280", + "name": "数值", + "content": "30.9", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-blue" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f283", + "name": "轴标 50 lux", + "width": 144, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 880, + "y": 736, + "children": [ + { + "type": "text", + "id": "t282", + "name": "轴标", + "content": "50 lux", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 144, + "textAlign": "center" + } + ] + }, + { + "type": "rectangle", + "id": "r284", + "name": "细线", + "width": 960, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-blue" + } + ], + "x": 112, + "y": 816 + }, + { + "type": "frame", + "id": "f286", + "name": "图注双联", + "width": 960, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 832, + "children": [ + { + "type": "text", + "id": "t285", + "name": "so-what", + "content": "提前量在 5 lux 之后加速,说明存在阈值而非线性响应;\n照明规划的着力点因此在低照度段,不在总量。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f288", + "name": "解读标题", + "width": 672, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1120, + "y": 288, + "children": [ + { + "type": "text", + "id": "t287", + "name": "解读标题", + "content": "阈值出现在\n城市常见照度区间内", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f290", + "name": "解读一", + "width": 672, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1120, + "y": 432, + "children": [ + { + "type": "text", + "id": "t289", + "name": "解读一", + "content": "0.5 与 1 lux 之间差异不显著;\n5 lux 起提前量增幅变陡,\n而 5 至 20 lux 正是三座城市\n住宅区道路照明的常见区间。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f292", + "name": "解读二", + "width": 672, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1120, + "y": 684, + "children": [ + { + "type": "text", + "id": "t291", + "name": "解读二", + "content": "把照度压到 5 lux 以下,提前量\n的中位数回到十分钟以内 ——\n这是本文唯一可操作的阈值。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r293", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f295", + "name": "引证槽", + "width": 1240, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 984, + "children": [ + { + "type": "text", + "id": "t294", + "name": "引证", + "content": "[3] 照度与声学原始数据,城市生态研究所声景实验室,2026", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f297", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t296", + "name": "页码", + "content": "4 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r298", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r299", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r300", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r301", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r302", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r303", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r304", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r305", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r306", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r307", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r308", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r309", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r310", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r311", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r312", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r313", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r314", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r315", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r316", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r317", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r318", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r319", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r320", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r321", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r322", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r323", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r324", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r325", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r326", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r327", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r328", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r329", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r330", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r331", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r332", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r333", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r334", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r335", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r336", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r337", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r338", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r339", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r340", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r341", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r342", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r343", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r344", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r345", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r346", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r347", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r348", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r349", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r350", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r351", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r352", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r353", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r354", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r355", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r356", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r357", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r358", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r359", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r360", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 0, + "y": 1440 + }, + { + "type": "frame", + "id": "f361", + "name": "05 结果 · 表", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f363", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 96, + "children": [ + { + "type": "text", + "id": "t362", + "name": "标题", + "content": "分档统计给出的提前量与照度呈单调关系", + "fontFamily": "Noto Sans SC", + "fontSize": 60, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.18, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f405", + "name": "表格", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 240, + "children": [ + { + "type": "frame", + "id": "f369", + "name": "表头", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 22, + 16 + ], + "children": [ + { + "type": "text", + "id": "t364", + "name": "表头 · 格", + "content": "照度档(lux)", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384, + "textAlign": "left" + }, + { + "type": "text", + "id": "t365", + "name": "表头 · 格", + "content": "样点数", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 216, + "textAlign": "right" + }, + { + "type": "text", + "id": "t366", + "name": "表头 · 格", + "content": "提前量中位数(分)", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 372, + "textAlign": "right" + }, + { + "type": "text", + "id": "t367", + "name": "表头 · 格", + "content": "四分位距", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 324, + "textAlign": "right" + }, + { + "type": "text", + "id": "t368", + "name": "表头 · 格", + "content": "p 值", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r370", + "name": "表头线", + "width": "fill_container", + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-blue" + } + ] + }, + { + "type": "frame", + "id": "f376", + "name": "表行 1", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 22, + 16 + ], + "children": [ + { + "type": "text", + "id": "t371", + "name": "表行 1 · 格", + "content": "0.5 – 1", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384, + "textAlign": "left" + }, + { + "type": "text", + "id": "t372", + "name": "表行 1 · 格", + "content": "5", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 216, + "textAlign": "right" + }, + { + "type": "text", + "id": "t373", + "name": "表行 1 · 格", + "content": "2.1", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 372, + "textAlign": "right" + }, + { + "type": "text", + "id": "t374", + "name": "表行 1 · 格", + "content": "1.4", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 324, + "textAlign": "right" + }, + { + "type": "text", + "id": "t375", + "name": "表行 1 · 格", + "content": "0.31", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r377", + "name": "行间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f383", + "name": "表行 2", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-panel" + } + ], + "padding": [ + 22, + 16 + ], + "children": [ + { + "type": "text", + "id": "t378", + "name": "表行 2 · 格", + "content": "1 – 5", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384, + "textAlign": "left" + }, + { + "type": "text", + "id": "t379", + "name": "表行 2 · 格", + "content": "5", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 216, + "textAlign": "right" + }, + { + "type": "text", + "id": "t380", + "name": "表行 2 · 格", + "content": "5.8", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 372, + "textAlign": "right" + }, + { + "type": "text", + "id": "t381", + "name": "表行 2 · 格", + "content": "2.0", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 324, + "textAlign": "right" + }, + { + "type": "text", + "id": "t382", + "name": "表行 2 · 格", + "content": "0.04", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r384", + "name": "行间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f390", + "name": "表行 3", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 22, + 16 + ], + "children": [ + { + "type": "text", + "id": "t385", + "name": "表行 3 · 格", + "content": "5 – 15", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384, + "textAlign": "left" + }, + { + "type": "text", + "id": "t386", + "name": "表行 3 · 格", + "content": "5", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 216, + "textAlign": "right" + }, + { + "type": "text", + "id": "t387", + "name": "表行 3 · 格", + "content": "13.6", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 372, + "textAlign": "right" + }, + { + "type": "text", + "id": "t388", + "name": "表行 3 · 格", + "content": "3.1", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 324, + "textAlign": "right" + }, + { + "type": "text", + "id": "t389", + "name": "表行 3 · 格", + "content": "< 0.01", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r391", + "name": "行间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f397", + "name": "表行 4", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-panel" + } + ], + "padding": [ + 22, + 16 + ], + "children": [ + { + "type": "text", + "id": "t392", + "name": "表行 4 · 格", + "content": "15 – 30", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384, + "textAlign": "left" + }, + { + "type": "text", + "id": "t393", + "name": "表行 4 · 格", + "content": "5", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 216, + "textAlign": "right" + }, + { + "type": "text", + "id": "t394", + "name": "表行 4 · 格", + "content": "22.4", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 372, + "textAlign": "right" + }, + { + "type": "text", + "id": "t395", + "name": "表行 4 · 格", + "content": "3.8", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 324, + "textAlign": "right" + }, + { + "type": "text", + "id": "t396", + "name": "表行 4 · 格", + "content": "< 0.01", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r398", + "name": "行间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f404", + "name": "表行 5", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 22, + 16 + ], + "children": [ + { + "type": "text", + "id": "t399", + "name": "表行 5 · 格", + "content": "30 – 50", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384, + "textAlign": "left" + }, + { + "type": "text", + "id": "t400", + "name": "表行 5 · 格", + "content": "4", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 216, + "textAlign": "right" + }, + { + "type": "text", + "id": "t401", + "name": "表行 5 · 格", + "content": "30.9", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 372, + "textAlign": "right" + }, + { + "type": "text", + "id": "t402", + "name": "表行 5 · 格", + "content": "4.6", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 324, + "textAlign": "right" + }, + { + "type": "text", + "id": "t403", + "name": "表行 5 · 格", + "content": "< 0.01", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312, + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r406", + "name": "细线", + "width": 1680, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-blue" + } + ], + "x": 112, + "y": 840 + }, + { + "type": "frame", + "id": "f408", + "name": "图注双联", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 856, + "children": [ + { + "type": "text", + "id": "t407", + "name": "so-what", + "content": "1 至 5 lux 之间 p 值跨过 0.05,这一档是统计上的分界,也是照明规范该写的那个数。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r409", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f411", + "name": "引证槽", + "width": 1240, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 984, + "children": [ + { + "type": "text", + "id": "t410", + "name": "引证", + "content": "[3] 照度与声学原始数据,城市生态研究所声景实验室,2026", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f413", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t412", + "name": "页码", + "content": "5 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r414", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r415", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r416", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r417", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r418", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r419", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r420", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r421", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r422", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r423", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r424", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r425", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r426", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r427", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r428", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r429", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r430", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r431", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r432", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r433", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r434", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r435", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r436", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r437", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r438", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r439", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r440", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r441", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r442", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r443", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r444", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r445", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r446", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r447", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r448", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r449", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r450", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r451", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r452", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r453", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r454", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r455", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r456", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r457", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r458", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r459", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r460", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r461", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r462", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r463", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r464", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r465", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r466", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r467", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r468", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r469", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r470", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r471", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r472", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r473", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r474", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r475", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r476", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 2040, + "y": 1440 + }, + { + "type": "frame", + "id": "f477", + "name": "06 局限", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f479", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 96, + "children": [ + { + "type": "text", + "id": "t478", + "name": "标题", + "content": "三个条件限制了这个结论能推广到多远", + "fontFamily": "Noto Sans SC", + "fontSize": 60, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.18, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f482", + "name": "标签舌 · 局限 01", + "width": 168, + "height": 40, + "layout": "none", + "fill": [], + "x": 88, + "y": 288, + "children": [ + { + "type": "text", + "id": "t481", + "name": "标签舌 · 字", + "content": "局限 01", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content", + "x": 30, + "y": 6 + }, + { + "type": "path", + "id": "p480", + "name": "标签舌 · 形", + "d": "M12 0 L168 0 L168 40 L0 40 Z", + "width": 168, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-amber" + } + ], + "x": 0, + "y": 0 + } + ] + }, + { + "type": "frame", + "id": "f485", + "name": "局限 1", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 360, + "children": [ + { + "type": "text", + "id": "t483", + "name": "局限标题", + "content": "样本偏在温带", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t484", + "name": "局限说明", + "content": "三座城市都位于北纬三十\n到四十度之间。热带与高\n纬度城市的鸣唱物候受日\n长驱动更强,不宜外推。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f488", + "name": "标签舌 · 局限 02", + "width": 168, + "height": 40, + "layout": "none", + "fill": [], + "x": 664, + "y": 288, + "children": [ + { + "type": "text", + "id": "t487", + "name": "标签舌 · 字", + "content": "局限 02", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content", + "x": 30, + "y": 6 + }, + { + "type": "path", + "id": "p486", + "name": "标签舌 · 形", + "d": "M12 0 L168 0 L168 40 L0 40 Z", + "width": 168, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-amber" + } + ], + "x": 0, + "y": 0 + } + ] + }, + { + "type": "frame", + "id": "f491", + "name": "局限 2", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "x": 688, + "y": 360, + "children": [ + { + "type": "text", + "id": "t489", + "name": "局限标题", + "content": "只覆盖六个物种", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t490", + "name": "局限说明", + "content": "六个物种约占样点内个体\n的七成,剩下三成、尤其\n是夜行性种类的响应仍是\n空白。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f494", + "name": "标签舌 · 局限 03", + "width": 168, + "height": 40, + "layout": "none", + "fill": [], + "x": 1240, + "y": 288, + "children": [ + { + "type": "text", + "id": "t493", + "name": "标签舌 · 字", + "content": "局限 03", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content", + "x": 30, + "y": 6 + }, + { + "type": "path", + "id": "p492", + "name": "标签舌 · 形", + "d": "M12 0 L168 0 L168 40 L0 40 Z", + "width": 168, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-amber" + } + ], + "x": 0, + "y": 0 + } + ] + }, + { + "type": "frame", + "id": "f497", + "name": "局限 3", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "x": 1264, + "y": 360, + "children": [ + { + "type": "text", + "id": "t495", + "name": "局限标题", + "content": "照度不等于光谱", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t496", + "name": "局限说明", + "content": "本文只记录了照度,未区\n分光谱成分。蓝光占比可\n能才是更直接的驱动量,\n这需要另一组实验。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f499", + "name": "适用范围", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 744, + "children": [ + { + "type": "text", + "id": "t498", + "name": "适用范围", + "content": "这三条都不改变结论的方向,只限定它的适用范围:温带、六个物种、以照度为自变量。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r500", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f502", + "name": "引证槽", + "width": 1240, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 984, + "children": [ + { + "type": "text", + "id": "t501", + "name": "引证", + "content": "[4] 韦知远,2025,光生物学与物候,7(1): 33–48", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f504", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t503", + "name": "页码", + "content": "6 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r505", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r506", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r507", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r508", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r509", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r510", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r511", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r512", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r513", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r514", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r515", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r516", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r517", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r518", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r519", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r520", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r521", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r522", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r523", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r524", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r525", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r526", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r527", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r528", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r529", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r530", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r531", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r532", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r533", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r534", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r535", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r536", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r537", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r538", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r539", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r540", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r541", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r542", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r543", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r544", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r545", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r546", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r547", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r548", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r549", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r550", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r551", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r552", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r553", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r554", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r555", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r556", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r557", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r558", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r559", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r560", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r561", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r562", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r563", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r564", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r565", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r566", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r567", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 4080, + "y": 1440 + }, + { + "type": "frame", + "id": "f568", + "name": "07 结论", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f571", + "name": "标签舌 · 结果 · 结论", + "width": 192, + "height": 40, + "layout": "none", + "fill": [], + "x": 88, + "y": 96, + "children": [ + { + "type": "text", + "id": "t570", + "name": "标签舌 · 字", + "content": "结果 · 结论", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content", + "x": 30, + "y": 6 + }, + { + "type": "path", + "id": "p569", + "name": "标签舌 · 形", + "d": "M12 0 L192 0 L192 40 L0 40 Z", + "width": 192, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-green" + } + ], + "x": 0, + "y": 0 + } + ] + }, + { + "type": "frame", + "id": "f573", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 168, + "children": [ + { + "type": "text", + "id": "t572", + "name": "标题", + "content": "把灯调暗两档,可以把鸣唱提前量压回十分钟以内", + "fontFamily": "Noto Sans SC", + "fontSize": 60, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.18, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f585", + "name": "结论列表", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 336, + "children": [ + { + "type": "frame", + "id": "f576", + "name": "结论 1", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 26, + 0 + ], + "children": [ + { + "type": "text", + "id": "t574", + "name": "序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "text", + "id": "t575", + "name": "结论", + "content": "照度与鸣唱提前量之间是单调的剂量—反应关系", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "rectangle", + "id": "r577", + "name": "条间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f580", + "name": "结论 2", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 26, + 0 + ], + "children": [ + { + "type": "text", + "id": "t578", + "name": "序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "text", + "id": "t579", + "name": "结论", + "content": "把地面照度压到 5 lux 以下,提前量回到十分钟以内", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + }, + { + "type": "rectangle", + "id": "r581", + "name": "条间细线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ] + }, + { + "type": "frame", + "id": "f584", + "name": "结论 3", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "padding": [ + 26, + 0 + ], + "children": [ + { + "type": "text", + "id": "t582", + "name": "序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "text", + "id": "t583", + "name": "结论", + "content": "调整灯具遮光角比压低总功率更省电,也更有效", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1584 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f587", + "name": "意义", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 720, + "children": [ + { + "type": "text", + "id": "t586", + "name": "意义", + "content": "这意味着城市照明规划可以不必在道路亮度与生态成本之间二选一:\n把同样的流明压低照射角、留在路面上,两个目标能同时达成。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r588", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f590", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t589", + "name": "页码", + "content": "7 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r591", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r592", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r593", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r594", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r595", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r596", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r597", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r598", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r599", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r600", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r601", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r602", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r603", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r604", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r605", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r606", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r607", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r608", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r609", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r610", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r611", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r612", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r613", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r614", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r615", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r616", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r617", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r618", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r619", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r620", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r621", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r622", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r623", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r624", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r625", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r626", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r627", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r628", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r629", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r630", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r631", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r632", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r633", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r634", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r635", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r636", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r637", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r638", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r639", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r640", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r641", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r642", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r643", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r644", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r645", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r646", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r647", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r648", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r649", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r650", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r651", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r652", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r653", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 0, + "y": 2880 + }, + { + "type": "frame", + "id": "f654", + "name": "08 引用", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f656", + "name": "页标题", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 96, + "children": [ + { + "type": "text", + "id": "t655", + "name": "标题", + "content": "引用文献", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f659", + "name": "引用 1", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 240, + "children": [ + { + "type": "text", + "id": "t657", + "name": "引用 · 作者", + "content": "[1] 陈黎,周砚,2024", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t658", + "name": "引用 · 出处", + "content": "城市生态学报,41(3): 217–229", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f662", + "name": "引用 2", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 360, + "children": [ + { + "type": "text", + "id": "t660", + "name": "引用 · 作者", + "content": "[2] 方沐,柯砚池,2023", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t661", + "name": "引用 · 出处", + "content": "动物行为学报,18(2): 96–108", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f665", + "name": "引用 3", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 480, + "children": [ + { + "type": "text", + "id": "t663", + "name": "引用 · 作者", + "content": "[3] 声景实验室,2026", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t664", + "name": "引用 · 出处", + "content": "内部数据集 SL-26-04", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f668", + "name": "引用 4", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 600, + "children": [ + { + "type": "text", + "id": "t666", + "name": "引用 · 作者", + "content": "[4] 韦知远,2025", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t667", + "name": "引用 · 出处", + "content": "光生物学与物候,7(1): 33–48", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f671", + "name": "引用 5", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 720, + "children": [ + { + "type": "text", + "id": "t669", + "name": "引用 · 作者", + "content": "[5] 苏槿,2022", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t670", + "name": "引用 · 出处", + "content": "声景与城市,3(4): 51–66", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f674", + "name": "引用 6", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 976, + "y": 240, + "children": [ + { + "type": "text", + "id": "t672", + "name": "引用 · 作者", + "content": "[6] 何砚舟,罗青,2021", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t673", + "name": "引用 · 出处", + "content": "鸟类学研究,12(2): 140–152", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f677", + "name": "引用 7", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 976, + "y": 360, + "children": [ + { + "type": "text", + "id": "t675", + "name": "引用 · 作者", + "content": "[7] 池屿,2024", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t676", + "name": "引用 · 出处", + "content": "照明工程学报,35(6): 88–97", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f680", + "name": "引用 8", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 976, + "y": 480, + "children": [ + { + "type": "text", + "id": "t678", + "name": "引用 · 作者", + "content": "[8] 林停舟,2023", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t679", + "name": "引用 · 出处", + "content": "生态学杂志,42(9): 2201–2213", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f683", + "name": "引用 9", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 976, + "y": 600, + "children": [ + { + "type": "text", + "id": "t681", + "name": "引用 · 作者", + "content": "[9] 邬砚,2020", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t682", + "name": "引用 · 出处", + "content": "城市环境与健康,9(3): 12–24", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f686", + "name": "引用 10", + "width": 816, + "height": "fit_content", + "layout": "vertical", + "gap": 4, + "alignItems": "start", + "fill": [], + "x": 976, + "y": 720, + "children": [ + { + "type": "text", + "id": "t684", + "name": "引用 · 作者", + "content": "[10] 谢岚溪,2025", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-graphite" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t685", + "name": "引用 · 出处", + "content": "夜间生态学评论,2(1): 5–19", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-soft" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f688", + "name": "联系", + "width": 1680, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 112, + "y": 864, + "children": [ + { + "type": "text", + "id": "t687", + "name": "联系", + "content": "通信作者:陆停云(城市生态研究所 · 声景实验室)", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "rectangle", + "id": "r689", + "name": "细线", + "width": 1680, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-hair" + } + ], + "x": 112, + "y": 960 + }, + { + "type": "frame", + "id": "f691", + "name": "页码", + "width": 200, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "x": 1592, + "y": 984, + "children": [ + { + "type": "text", + "id": "t690", + "name": "页码", + "content": "8 / 8", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-faint" + } + ], + "lineHeight": 1.45, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r692", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 16, + "y": 0 + }, + { + "type": "rectangle", + "id": "r693", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 64, + "y": 0 + }, + { + "type": "rectangle", + "id": "r694", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 112, + "y": 0 + }, + { + "type": "rectangle", + "id": "r695", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 160, + "y": 0 + }, + { + "type": "rectangle", + "id": "r696", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 208, + "y": 0 + }, + { + "type": "rectangle", + "id": "r697", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 256, + "y": 0 + }, + { + "type": "rectangle", + "id": "r698", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 304, + "y": 0 + }, + { + "type": "rectangle", + "id": "r699", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 352, + "y": 0 + }, + { + "type": "rectangle", + "id": "r700", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 400, + "y": 0 + }, + { + "type": "rectangle", + "id": "r701", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 448, + "y": 0 + }, + { + "type": "rectangle", + "id": "r702", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 496, + "y": 0 + }, + { + "type": "rectangle", + "id": "r703", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 544, + "y": 0 + }, + { + "type": "rectangle", + "id": "r704", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 592, + "y": 0 + }, + { + "type": "rectangle", + "id": "r705", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 640, + "y": 0 + }, + { + "type": "rectangle", + "id": "r706", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 688, + "y": 0 + }, + { + "type": "rectangle", + "id": "r707", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 736, + "y": 0 + }, + { + "type": "rectangle", + "id": "r708", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 784, + "y": 0 + }, + { + "type": "rectangle", + "id": "r709", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 832, + "y": 0 + }, + { + "type": "rectangle", + "id": "r710", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 880, + "y": 0 + }, + { + "type": "rectangle", + "id": "r711", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 928, + "y": 0 + }, + { + "type": "rectangle", + "id": "r712", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 976, + "y": 0 + }, + { + "type": "rectangle", + "id": "r713", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1024, + "y": 0 + }, + { + "type": "rectangle", + "id": "r714", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1072, + "y": 0 + }, + { + "type": "rectangle", + "id": "r715", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1120, + "y": 0 + }, + { + "type": "rectangle", + "id": "r716", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1168, + "y": 0 + }, + { + "type": "rectangle", + "id": "r717", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1216, + "y": 0 + }, + { + "type": "rectangle", + "id": "r718", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1264, + "y": 0 + }, + { + "type": "rectangle", + "id": "r719", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1312, + "y": 0 + }, + { + "type": "rectangle", + "id": "r720", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1360, + "y": 0 + }, + { + "type": "rectangle", + "id": "r721", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1408, + "y": 0 + }, + { + "type": "rectangle", + "id": "r722", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1456, + "y": 0 + }, + { + "type": "rectangle", + "id": "r723", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1504, + "y": 0 + }, + { + "type": "rectangle", + "id": "r724", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1552, + "y": 0 + }, + { + "type": "rectangle", + "id": "r725", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1600, + "y": 0 + }, + { + "type": "rectangle", + "id": "r726", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1648, + "y": 0 + }, + { + "type": "rectangle", + "id": "r727", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1696, + "y": 0 + }, + { + "type": "rectangle", + "id": "r728", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1744, + "y": 0 + }, + { + "type": "rectangle", + "id": "r729", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1792, + "y": 0 + }, + { + "type": "rectangle", + "id": "r730", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1840, + "y": 0 + }, + { + "type": "rectangle", + "id": "r731", + "name": "格线 · 竖", + "width": 1, + "height": 1080, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 1888, + "y": 0 + }, + { + "type": "rectangle", + "id": "r732", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r733", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 48 + }, + { + "type": "rectangle", + "id": "r734", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 96 + }, + { + "type": "rectangle", + "id": "r735", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 144 + }, + { + "type": "rectangle", + "id": "r736", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 192 + }, + { + "type": "rectangle", + "id": "r737", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 240 + }, + { + "type": "rectangle", + "id": "r738", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 288 + }, + { + "type": "rectangle", + "id": "r739", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 336 + }, + { + "type": "rectangle", + "id": "r740", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 384 + }, + { + "type": "rectangle", + "id": "r741", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 432 + }, + { + "type": "rectangle", + "id": "r742", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 480 + }, + { + "type": "rectangle", + "id": "r743", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 528 + }, + { + "type": "rectangle", + "id": "r744", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 576 + }, + { + "type": "rectangle", + "id": "r745", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 624 + }, + { + "type": "rectangle", + "id": "r746", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 672 + }, + { + "type": "rectangle", + "id": "r747", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 720 + }, + { + "type": "rectangle", + "id": "r748", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 768 + }, + { + "type": "rectangle", + "id": "r749", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 816 + }, + { + "type": "rectangle", + "id": "r750", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 864 + }, + { + "type": "rectangle", + "id": "r751", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 912 + }, + { + "type": "rectangle", + "id": "r752", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 960 + }, + { + "type": "rectangle", + "id": "r753", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1008 + }, + { + "type": "rectangle", + "id": "r754", + "name": "格线 · 横", + "width": 1920, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-grid" + } + ], + "x": 0, + "y": 1056 + } + ], + "x": 2040, + "y": 2880 + } + ] +} diff --git a/crates/op-editor-core/assets/scene_templates/ledger-tick-deck.op b/crates/op-editor-core/assets/scene_templates/ledger-tick-deck.op new file mode 100644 index 000000000..83a6d1149 --- /dev/null +++ b/crates/op-editor-core/assets/scene_templates/ledger-tick-deck.op @@ -0,0 +1,6756 @@ +{ + "version": "1.0.0", + "name": "账簿勾格 · 竞品矩阵 deck", + "variables": { + "c-paper": { + "type": "color", + "value": "#F5F2E6" + }, + "c-band": { + "type": "color", + "value": "#EBE6D8" + }, + "c-ink": { + "type": "color", + "value": "#221F1B" + }, + "c-ink-soft": { + "type": "color", + "value": "#5A5652" + }, + "c-ink-faint": { + "type": "color", + "value": "#78746F" + }, + "c-rule-blue": { + "type": "color", + "value": "#88A2B9" + }, + "c-rule-red": { + "type": "color", + "value": "#BD7670" + }, + "c-tick": { + "type": "color", + "value": "#2F7442" + }, + "c-tick-half": { + "type": "color", + "value": "#888682" + }, + "c-tick-pale": { + "type": "color", + "value": "#C6C4C1" + }, + "c-own": { + "type": "color", + "value": "#DFF3E2" + } + }, + "children": [ + { + "type": "frame", + "id": "f26", + "name": "01 封面", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f21", + "name": "01 封面 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 56, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f22", + "name": "内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f20", + "name": "封面文字", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 28, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f16", + "name": "册头", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t14", + "name": "册头中文", + "content": "竞品能力核对", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t15", + "name": "册头周期", + "content": "· 2026 Q3", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 2, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t17", + "name": "主标题", + "content": "把能做与不能做\n摊在同一张账上", + "fontFamily": "Noto Sans SC", + "fontSize": 88, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.1, + "letterSpacing": -2, + "textGrowth": "fixed-width", + "width": 1000 + }, + { + "type": "text", + "id": "t18", + "name": "副标题", + "content": "六项能力、四家产品,逐格核对。\n记号只陈述事实,不打分、不排名。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1000 + }, + { + "type": "text", + "id": "t19", + "name": "评估范围", + "content": "评估范围:面向 50–500 人团队的客服工单系统,\n依据公开文档与试用账号实测,数据截止 2026-07-31。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1000 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f25", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t23", + "name": "册名", + "content": "客服工单系统 · 能力核对表", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t24", + "name": "页码", + "content": "p. 1 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f27", + "name": "01 封面 · 账页格线", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r10", + "name": "格线", + "width": 760, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "x": 1064, + "y": 196 + }, + { + "type": "rectangle", + "id": "r1", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 268 + }, + { + "type": "rectangle", + "id": "r2", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 340 + }, + { + "type": "rectangle", + "id": "r3", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 412 + }, + { + "type": "rectangle", + "id": "r4", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 484 + }, + { + "type": "rectangle", + "id": "r5", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 556 + }, + { + "type": "rectangle", + "id": "r6", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 628 + }, + { + "type": "rectangle", + "id": "r7", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 700 + }, + { + "type": "rectangle", + "id": "r8", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 772 + }, + { + "type": "rectangle", + "id": "r9", + "name": "格线", + "width": 760, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1064, + "y": 844 + }, + { + "type": "rectangle", + "id": "r11", + "name": "账格竖线", + "width": 1, + "height": 648, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1254, + "y": 196 + }, + { + "type": "rectangle", + "id": "r12", + "name": "账格竖线", + "width": 1, + "height": 648, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1444, + "y": 196 + }, + { + "type": "rectangle", + "id": "r13", + "name": "账格竖线", + "width": 1, + "height": 648, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ], + "x": 1634, + "y": 196 + } + ] + } + ], + "x": 0, + "y": 0 + }, + { + "type": "frame", + "id": "f75", + "name": "02 评估口径", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f70", + "name": "02 评估口径 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 56, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f71", + "name": "内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 40, + "fill": [], + "children": [ + { + "type": "text", + "id": "t66", + "name": "页标题", + "content": "先说清楚每一格是怎么判的", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t67", + "name": "口径引导", + "content": "六项维度、六条口径。判定只回答「做到没做到」,不回答「做得好不好」——后者需要的证据这张表给不了。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f68", + "name": "口径两列", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 168, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f64", + "name": "口径左列", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 52, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f33", + "name": "维度定义", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f30", + "name": "维度名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t28", + "name": "序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t29", + "name": "维度术语", + "content": "工单自动分派", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f32", + "name": "口径正文", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 46 + ], + "children": [ + { + "type": "text", + "id": "t31", + "name": "判定口径", + "content": "按技能组、负载与优先级自动指派,\n无需人工转派即计满足。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 734 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f45", + "name": "维度定义", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f42", + "name": "维度名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t40", + "name": "序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t41", + "name": "维度术语", + "content": "时效承诺", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f44", + "name": "口径正文", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 46 + ], + "children": [ + { + "type": "text", + "id": "t43", + "name": "判定口径", + "content": "可按客户分级设定响应与解决时限,\n并在超时前自动触发升级。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 734 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f57", + "name": "维度定义", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f54", + "name": "维度名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t52", + "name": "序号", + "content": "05", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t53", + "name": "维度术语", + "content": "数据可导出", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f56", + "name": "口径正文", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 46 + ], + "children": [ + { + "type": "text", + "id": "t55", + "name": "判定口径", + "content": "全量工单与会话可导出为结构化文件,\n导出不限频次、不限字段。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 734 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f65", + "name": "口径右列", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 52, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f39", + "name": "维度定义", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f36", + "name": "维度名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t34", + "name": "序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t35", + "name": "维度术语", + "content": "多渠道接入", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f38", + "name": "口径正文", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 46 + ], + "children": [ + { + "type": "text", + "id": "t37", + "name": "判定口径", + "content": "邮件、网页表单、即时通讯、电话四类中,\n支持三类及以上即计满足。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 734 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f51", + "name": "维度定义", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f48", + "name": "维度名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t46", + "name": "序号", + "content": "04", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t47", + "name": "维度术语", + "content": "知识库联动", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f50", + "name": "口径正文", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 46 + ], + "children": [ + { + "type": "text", + "id": "t49", + "name": "判定口径", + "content": "坐席能在工单内检索并插入知识条目,\n且能把新写的条目回写。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 734 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f63", + "name": "维度定义", + "width": 780, + "height": "fit_content", + "layout": "vertical", + "gap": 10, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f60", + "name": "维度名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t58", + "name": "序号", + "content": "06", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t59", + "name": "维度术语", + "content": "私有化部署", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f62", + "name": "口径正文", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "padding": [ + 0, + 0, + 0, + 46 + ], + "children": [ + { + "type": "text", + "id": "t61", + "name": "判定口径", + "content": "可部署在客户自有服务器,\n且功能与云端版本一致。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 734 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "t69", + "name": "口径脚注", + "content": "口径与记号规则在评估开始前确定,评估过程中未作调整;无定义的维度不进矩阵。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f74", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t72", + "name": "册名", + "content": "客服工单系统 · 能力核对表", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t73", + "name": "页码", + "content": "p. 2 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 2040, + "y": 0 + }, + { + "type": "frame", + "id": "f262", + "name": "03 主矩阵", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f257", + "name": "03 主矩阵 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 56, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f258", + "name": "内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 28, + "fill": [], + "children": [ + { + "type": "text", + "id": "t76", + "name": "页标题", + "content": "六项能力,逐格核对", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f235", + "name": "主矩阵", + "width": 1728, + "height": 512, + "layout": "none", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f234", + "name": "自家列外框", + "width": 343, + "height": 512, + "layout": "none", + "fill": [], + "stroke": { + "thickness": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ] + }, + "x": 360, + "y": 0 + }, + { + "type": "frame", + "id": "f233", + "name": "表体", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r77", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f93", + "name": "矩阵表头", + "width": "fill_container", + "height": 72, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f78", + "name": "表头 · 维度", + "width": 360, + "height": 72, + "layout": "horizontal", + "alignItems": "center", + "padding": [ + 0, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t79", + "name": "表头文字", + "content": "评估维度", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312 + } + ] + }, + { + "type": "rectangle", + "id": "r83", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f80", + "name": "表头格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-own" + } + ], + "children": [ + { + "type": "frame", + "id": "f81", + "name": "自家标记", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "padding": [ + 8, + 18 + ], + "gap": 0, + "justifyContent": "center", + "alignItems": "center", + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "children": [ + { + "type": "text", + "id": "t82", + "name": "自家标记文字", + "content": "本产品", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "lineHeight": 1.3, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r86", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f84", + "name": "表头格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t85", + "name": "表头格文字", + "content": "竞品甲", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "rectangle", + "id": "r89", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f87", + "name": "表头格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t88", + "name": "表头格文字", + "content": "竞品乙", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "rectangle", + "id": "r92", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f90", + "name": "表头格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t91", + "name": "表头格文字", + "content": "竞品丙", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r94", + "name": "格线", + "width": 1728, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + }, + { + "type": "frame", + "id": "f116", + "name": "矩阵行", + "width": "fill_container", + "height": 72, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f95", + "name": "行标签", + "width": 360, + "height": 72, + "layout": "horizontal", + "alignItems": "center", + "padding": [ + 0, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t96", + "name": "行标签文字", + "content": "工单自动分派", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312 + } + ] + }, + { + "type": "rectangle", + "id": "r97", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f98", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-own" + } + ], + "children": [ + { + "type": "group", + "id": "g99", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r100", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r101", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r102", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f103", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g104", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r105", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r106", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r107", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f108", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g111", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r109", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r110", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r112", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f113", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g115", + "name": "记号 · 不满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r114", + "name": "短横", + "width": 20, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tick-pale" + } + ], + "x": 3, + "y": 12 + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r117", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f140", + "name": "矩阵行", + "width": "fill_container", + "height": 72, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f118", + "name": "行标签", + "width": 360, + "height": 72, + "layout": "horizontal", + "alignItems": "center", + "padding": [ + 0, + 24 + ], + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "text", + "id": "t119", + "name": "行标签文字", + "content": "多渠道接入", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312 + } + ] + }, + { + "type": "rectangle", + "id": "r120", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f121", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-own" + } + ], + "children": [ + { + "type": "group", + "id": "g122", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r123", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r124", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r125", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f126", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g127", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r128", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r129", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r130", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f131", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g132", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r133", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r134", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r135", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f136", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g139", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r137", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r138", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r141", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f163", + "name": "矩阵行", + "width": "fill_container", + "height": 72, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f142", + "name": "行标签", + "width": 360, + "height": 72, + "layout": "horizontal", + "alignItems": "center", + "padding": [ + 0, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t143", + "name": "行标签文字", + "content": "时效承诺", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312 + } + ] + }, + { + "type": "rectangle", + "id": "r144", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f145", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-own" + } + ], + "children": [ + { + "type": "group", + "id": "g146", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r147", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r148", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r149", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f150", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g153", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r151", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r152", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r154", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f155", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g157", + "name": "记号 · 不满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r156", + "name": "短横", + "width": 20, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tick-pale" + } + ], + "x": 3, + "y": 12 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r158", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f159", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g162", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r160", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r161", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r164", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f186", + "name": "矩阵行", + "width": "fill_container", + "height": 72, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f165", + "name": "行标签", + "width": 360, + "height": 72, + "layout": "horizontal", + "alignItems": "center", + "padding": [ + 0, + 24 + ], + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "text", + "id": "t166", + "name": "行标签文字", + "content": "知识库联动", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312 + } + ] + }, + { + "type": "rectangle", + "id": "r167", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f168", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-own" + } + ], + "children": [ + { + "type": "group", + "id": "g169", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r170", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r171", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r172", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f173", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g176", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r174", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r175", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r177", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f178", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g179", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r180", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r181", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r182", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f183", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g185", + "name": "记号 · 不满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r184", + "name": "短横", + "width": 20, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tick-pale" + } + ], + "x": 3, + "y": 12 + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r187", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f210", + "name": "矩阵行", + "width": "fill_container", + "height": 72, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f188", + "name": "行标签", + "width": 360, + "height": 72, + "layout": "horizontal", + "alignItems": "center", + "padding": [ + 0, + 24 + ], + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t189", + "name": "行标签文字", + "content": "数据可导出", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312 + } + ] + }, + { + "type": "rectangle", + "id": "r190", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f191", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-own" + } + ], + "children": [ + { + "type": "group", + "id": "g192", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r193", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r194", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r195", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f196", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g197", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r198", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r199", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r200", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f201", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g204", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r202", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r203", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r205", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f206", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "group", + "id": "g207", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r208", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r209", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r211", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f232", + "name": "矩阵行", + "width": "fill_container", + "height": 72, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f212", + "name": "行标签", + "width": 360, + "height": 72, + "layout": "horizontal", + "alignItems": "center", + "padding": [ + 0, + 24 + ], + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "text", + "id": "t213", + "name": "行标签文字", + "content": "私有化部署", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 312 + } + ] + }, + { + "type": "rectangle", + "id": "r214", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f215", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-own" + } + ], + "children": [ + { + "type": "group", + "id": "g218", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r216", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r217", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r219", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f220", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g222", + "name": "记号 · 不满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r221", + "name": "短横", + "width": 20, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tick-pale" + } + ], + "x": 3, + "y": 12 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r223", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f224", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g226", + "name": "记号 · 不满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r225", + "name": "短横", + "width": 20, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tick-pale" + } + ], + "x": 3, + "y": 12 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r227", + "name": "竖格线", + "width": 1, + "height": 72, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f228", + "name": "记号格", + "width": 341, + "height": 72, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ], + "children": [ + { + "type": "group", + "id": "g229", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r230", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r231", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f251", + "name": "三态图例", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 44, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f240", + "name": "图例项", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "group", + "id": "g236", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r237", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r238", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + }, + { + "type": "text", + "id": "t239", + "name": "图例文字", + "content": "满足", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f245", + "name": "图例项", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "group", + "id": "g243", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r241", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r242", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + }, + { + "type": "text", + "id": "t244", + "name": "图例文字", + "content": "部分满足", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f249", + "name": "图例项", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "group", + "id": "g247", + "name": "记号 · 不满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r246", + "name": "短横", + "width": 20, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tick-pale" + } + ], + "x": 3, + "y": 12 + } + ] + }, + { + "type": "text", + "id": "t248", + "name": "图例文字", + "content": "不满足", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t250", + "name": "图例说明", + "content": "记号形状可分辨,不依赖颜色;「不满足」不画叉。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f256", + "name": "合计", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r252", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + }, + { + "type": "frame", + "id": "f253", + "name": "双线间隙", + "width": 1728, + "height": 4, + "layout": "none", + "fill": [] + }, + { + "type": "rectangle", + "id": "r254", + "name": "格线", + "width": 1728, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + }, + { + "type": "text", + "id": "t255", + "name": "结论行", + "content": "六项里我们满足五项,唯一的缺口是私有化部署;今天必须私有部署的客户,应当选丙。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f261", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t259", + "name": "册名", + "content": "客服工单系统 · 能力核对表", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t260", + "name": "页码", + "content": "p. 3 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 4080, + "y": 0 + }, + { + "type": "frame", + "id": "f334", + "name": "04 分位刻度", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f329", + "name": "04 分位刻度 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 56, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f330", + "name": "内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "text", + "id": "t311", + "name": "页标题", + "content": "同类产品里,我们各自站在哪一段", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f327", + "name": "刻度行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f323", + "name": "刻度头", + "width": 1199, + "height": 28, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f312", + "name": "刻度名", + "width": 299, + "height": 28, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t313", + "name": "刻度文字", + "content": "Q1", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "rectangle", + "id": "r314", + "name": "竖格线", + "width": 1, + "height": 28, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ] + }, + { + "type": "frame", + "id": "f315", + "name": "刻度名", + "width": 299, + "height": 28, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t316", + "name": "刻度文字", + "content": "Q2", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "rectangle", + "id": "r317", + "name": "竖格线", + "width": 1, + "height": 28, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ] + }, + { + "type": "frame", + "id": "f318", + "name": "刻度名", + "width": 299, + "height": 28, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t319", + "name": "刻度文字", + "content": "Q3", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "rectangle", + "id": "r320", + "name": "竖格线", + "width": 1, + "height": 28, + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ] + }, + { + "type": "frame", + "id": "f321", + "name": "刻度名", + "width": 299, + "height": 28, + "layout": "horizontal", + "justifyContent": "center", + "alignItems": "center", + "gap": 0, + "fill": [], + "children": [ + { + "type": "text", + "id": "t322", + "name": "刻度文字", + "content": "Q4", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f326", + "name": "位置标说明", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r324", + "name": "说明标", + "width": 6, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ] + }, + { + "type": "text", + "id": "t325", + "name": "说明文字", + "content": "本产品所在位置", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f328", + "name": "分位组列", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 52, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f278", + "name": "分位组", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f266", + "name": "分位名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t263", + "name": "分位标题", + "content": "工单首响时长", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t264", + "name": "分位读数", + "content": "62", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t265", + "name": "分位单位", + "content": "分位", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f276", + "name": "四分位条", + "width": 1199, + "height": 56, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r275", + "name": "位置标", + "width": 6, + "height": 56, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 740, + "y": 0 + }, + { + "type": "frame", + "id": "f274", + "name": "刻度轨", + "width": 1199, + "height": 40, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r267", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r268", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r269", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r270", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r271", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r272", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r273", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + } + ], + "x": 0, + "y": 8 + } + ] + }, + { + "type": "text", + "id": "t277", + "name": "读法", + "content": "落在第三四分位:比同类的中位数快,但没有到最快的那一档。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + } + ] + }, + { + "type": "frame", + "id": "f294", + "name": "分位组", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f282", + "name": "分位名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t279", + "name": "分位标题", + "content": "单座席月成本", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t280", + "name": "分位读数", + "content": "28", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t281", + "name": "分位单位", + "content": "分位", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f292", + "name": "四分位条", + "width": 1199, + "height": 56, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r291", + "name": "位置标", + "width": 6, + "height": 56, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 333, + "y": 0 + }, + { + "type": "frame", + "id": "f290", + "name": "刻度轨", + "width": 1199, + "height": 40, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r283", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r284", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r285", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r286", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r287", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r288", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r289", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + } + ], + "x": 0, + "y": 8 + } + ] + }, + { + "type": "text", + "id": "t293", + "name": "读法", + "content": "落在第一四分位:自动分派省下的人力,直接反映在这一格上。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + } + ] + }, + { + "type": "frame", + "id": "f310", + "name": "分位组", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f298", + "name": "分位名", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t295", + "name": "分位标题", + "content": "私有化部署能力", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t296", + "name": "分位读数", + "content": "12", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t297", + "name": "分位单位", + "content": "分位", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f308", + "name": "四分位条", + "width": 1199, + "height": 56, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r307", + "name": "位置标", + "width": 6, + "height": 56, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 141, + "y": 0 + }, + { + "type": "frame", + "id": "f306", + "name": "刻度轨", + "width": 1199, + "height": 40, + "layout": "horizontal", + "gap": 0, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r299", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r300", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r301", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r302", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r303", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + }, + { + "type": "rectangle", + "id": "r304", + "name": "竖格线", + "width": 1, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "rectangle", + "id": "r305", + "name": "四分位段", + "width": 299, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-band" + } + ] + } + ], + "x": 0, + "y": 8 + } + ] + }, + { + "type": "text", + "id": "t309", + "name": "读法", + "content": "落在第一四分位的左端:这是我们承认的短板,排在明年一季度。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f333", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t331", + "name": "册名", + "content": "客服工单系统 · 能力核对表", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t332", + "name": "页码", + "content": "p. 4 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 0, + "y": 1440 + }, + { + "type": "frame", + "id": "f369", + "name": "05 差距", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f364", + "name": "05 差距 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 56, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f365", + "name": "内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 40, + "fill": [], + "children": [ + { + "type": "text", + "id": "t361", + "name": "页标题", + "content": "三处我们还没做到的", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t362", + "name": "差距引导", + "content": "差距按能被验证的方式写:现状是今天的事实,计划带月份。没有计划的差距不写进这一页,写了也只是姿态。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f363", + "name": "差距列", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 40, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f342", + "name": "差距条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 28, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "group", + "id": "g337", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r335", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r336", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + }, + { + "type": "frame", + "id": "f341", + "name": "差距文字", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "fill": [], + "children": [ + { + "type": "text", + "id": "t338", + "name": "差距标题", + "content": "私有化部署尚未开放", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t339", + "name": "现状", + "content": "现状:仅提供专属云,客户不能把数据放在自己机房。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + }, + { + "type": "text", + "id": "t340", + "name": "计划", + "content": "计划:2027 年一季度发布可交付的私有部署包,先对金融与医疗行业开放。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r343", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f351", + "name": "差距条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 28, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "group", + "id": "g346", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r344", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r345", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + }, + { + "type": "frame", + "id": "f350", + "name": "差距文字", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "fill": [], + "children": [ + { + "type": "text", + "id": "t347", + "name": "差距标题", + "content": "电话渠道依赖第三方", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t348", + "name": "现状", + "content": "现状:电话接入要另接一家服务商,工单里只能看到通话记录链接。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + }, + { + "type": "text", + "id": "t349", + "name": "计划", + "content": "计划:四季度完成自建话务网关,通话录音与转写直接落在工单里。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r352", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f360", + "name": "差距条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 28, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "group", + "id": "g355", + "name": "记号 · 部分满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r353", + "name": "半格 · 外框", + "width": 24, + "height": 24, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ] + }, + "x": 1, + "y": 1 + }, + { + "type": "rectangle", + "id": "r354", + "name": "半格 · 左半", + "width": 12, + "height": 24, + "fill": [ + { + "type": "solid", + "color": "$c-tick-half" + } + ], + "x": 1, + "y": 1 + } + ] + }, + { + "type": "frame", + "id": "f359", + "name": "差距文字", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "fill": [], + "children": [ + { + "type": "text", + "id": "t356", + "name": "差距标题", + "content": "知识库回写要管理员确认", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t357", + "name": "现状", + "content": "现状:坐席写的新条目需要管理员审核后才进知识库,平均滞后 2 天。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + }, + { + "type": "text", + "id": "t358", + "name": "计划", + "content": "计划:三季度上线分级权限,高级坐席可直接发布,审核转为抽查。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f368", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t366", + "name": "册名", + "content": "客服工单系统 · 能力核对表", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t367", + "name": "页码", + "content": "p. 5 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 2040, + "y": 1440 + }, + { + "type": "frame", + "id": "f410", + "name": "06 优势", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f405", + "name": "06 优势 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 56, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f406", + "name": "内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 40, + "fill": [], + "children": [ + { + "type": "text", + "id": "t402", + "name": "页标题", + "content": "三处我们做到了,并且能被验证", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t403", + "name": "优势引导", + "content": "每一条都配一个可复核的数字;没有数字的优势不写进这一页。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f404", + "name": "优势三列", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 32, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f379", + "name": "优势列", + "width": 532, + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "group", + "id": "g370", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r371", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r372", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + }, + { + "type": "text", + "id": "t373", + "name": "优势标题", + "content": "自动分派命中率", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + }, + { + "type": "text", + "id": "t374", + "name": "说明", + "content": "工单进队列后按技能组\n与实时负载自动指派,\n不需要人工转派。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + }, + { + "type": "rectangle", + "id": "r375", + "name": "格线", + "width": 72, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + }, + { + "type": "frame", + "id": "f378", + "name": "证据行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t376", + "name": "证据标签", + "content": "证据", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t377", + "name": "证据", + "content": "试用期 3200 单,\n人工转派 47 单,占 1.5%。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 444 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r380", + "name": "竖格线", + "width": 1, + "height": 392, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f390", + "name": "优势列", + "width": 532, + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "group", + "id": "g381", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r382", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r383", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + }, + { + "type": "text", + "id": "t384", + "name": "优势标题", + "content": "导出不设限", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + }, + { + "type": "text", + "id": "t385", + "name": "说明", + "content": "全量工单、会话与附件\n元数据可随时导出为\n结构化文件。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + }, + { + "type": "rectangle", + "id": "r386", + "name": "格线", + "width": 72, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + }, + { + "type": "frame", + "id": "f389", + "name": "证据行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t387", + "name": "证据标签", + "content": "证据", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t388", + "name": "证据", + "content": "单次导出 12 万条耗时 96 秒,\n字段与后台完全一致。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 444 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r391", + "name": "竖格线", + "width": 1, + "height": 392, + "fill": [ + { + "type": "solid", + "color": "$c-rule-blue" + } + ] + }, + { + "type": "frame", + "id": "f401", + "name": "优势列", + "width": 532, + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "fill": [], + "children": [ + { + "type": "group", + "id": "g392", + "name": "记号 · 满足", + "width": 26, + "height": 26, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r393", + "name": "勾 · 长笔", + "width": 20.55, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 5.97, + "y": 11.5, + "rotation": -48.95 + }, + { + "type": "rectangle", + "id": "r394", + "name": "勾 · 短笔", + "width": 9.9, + "height": 2.5, + "fill": [ + { + "type": "solid", + "color": "$c-tick" + } + ], + "x": 1.55, + "y": 16.25, + "rotation": 45.0 + } + ] + }, + { + "type": "text", + "id": "t395", + "name": "优势标题", + "content": "超时前先升级", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + }, + { + "type": "text", + "id": "t396", + "name": "说明", + "content": "按客户分级设定时限,\n剩余两成时长时自动\n升级到组长。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.7, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 532 + }, + { + "type": "rectangle", + "id": "r397", + "name": "格线", + "width": 72, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + }, + { + "type": "frame", + "id": "f400", + "name": "证据行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t398", + "name": "证据标签", + "content": "证据", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t399", + "name": "证据", + "content": "首响超时率从 8.4% 降到 2.1%,\n已连续两个季度。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 444 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f409", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t407", + "name": "册名", + "content": "客服工单系统 · 能力核对表", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t408", + "name": "页码", + "content": "p. 6 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 4080, + "y": 1440 + }, + { + "type": "frame", + "id": "f434", + "name": "07 结论", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f428", + "name": "07 结论 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 56, + "justifyContent": "space_between", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f433", + "name": "留白撑子", + "width": "fill_container", + "height": "fill_container", + "layout": "none", + "fill": [] + }, + { + "type": "frame", + "id": "f429", + "name": "内容", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "fill": [], + "children": [ + { + "type": "text", + "id": "t420", + "name": "页标题", + "content": "这张账读完之后", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "text", + "id": "t421", + "name": "总判断", + "content": "能力上的差距只有一处,\n而它恰好决定了一类客户能不能签。", + "fontFamily": "Noto Sans SC", + "fontSize": 44, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.3, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + }, + { + "type": "frame", + "id": "f425", + "name": "结论合计线", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r422", + "name": "格线", + "width": 1728, + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + }, + { + "type": "frame", + "id": "f423", + "name": "双线间隙", + "width": 1728, + "height": 4, + "layout": "none", + "fill": [] + }, + { + "type": "rectangle", + "id": "r424", + "name": "格线", + "width": 1728, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f426", + "name": "动作列", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "fill": [], + "children": [ + { + "type": "frame", + "id": "f413", + "name": "动作条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t411", + "name": "序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t412", + "name": "动作", + "content": "把私有化部署排进 2027 年一季度的交付计划,本月给出范围。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + } + ] + }, + { + "type": "frame", + "id": "f416", + "name": "动作条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t414", + "name": "序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t415", + "name": "动作", + "content": "在报价单里写明电话渠道当前依赖第三方,不含糊带过。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + } + ] + }, + { + "type": "frame", + "id": "f419", + "name": "动作条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t417", + "name": "序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-rule-red" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 46 + }, + { + "type": "text", + "id": "t418", + "name": "动作", + "content": "把这张核对表随合同附送,三个月更新一次,口径不变。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.55, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1400 + } + ] + } + ] + }, + { + "type": "text", + "id": "t427", + "name": "来源脚注", + "content": "来源:各产品公开文档与试用账号实测,数据截止 2026-07-31;口径见第 2 页,逐格记号见第 3 页。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + } + ] + }, + { + "type": "frame", + "id": "f432", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t430", + "name": "册名", + "content": "客服工单系统 · 能力核对表", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t431", + "name": "页码", + "content": "p. 7 / 7", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 0, + "y": 2880 + } + ] +} diff --git a/crates/op-editor-core/assets/scene_templates/sounding-navy-deck.op b/crates/op-editor-core/assets/scene_templates/sounding-navy-deck.op new file mode 100644 index 000000000..696f88133 --- /dev/null +++ b/crates/op-editor-core/assets/scene_templates/sounding-navy-deck.op @@ -0,0 +1,4292 @@ +{ + "version": "1.0.0", + "name": "测深海图 · 咨询策略档 16:9", + "variables": { + "c-paper": { + "type": "color", + "value": "#F7F4EE" + }, + "c-paper-deep": { + "type": "color", + "value": "#EBE7DF" + }, + "c-navy": { + "type": "color", + "value": "#091E32" + }, + "c-navy-low": { + "type": "color", + "value": "#031223" + }, + "c-ink": { + "type": "color", + "value": "#1D2228" + }, + "c-ink-soft": { + "type": "color", + "value": "#565B61" + }, + "c-ink-faint": { + "type": "color", + "value": "#7C8186" + }, + "c-on-navy": { + "type": "color", + "value": "#F0F4F7" + }, + "c-on-navy-dim": { + "type": "color", + "value": "#B3B8BE" + }, + "c-steel": { + "type": "color", + "value": "#266EA4" + }, + "c-steel-deep": { + "type": "color", + "value": "#044A7D" + }, + "c-steel-lift": { + "type": "color", + "value": "#83B0D7" + }, + "c-ochre": { + "type": "color", + "value": "#A46D1A" + }, + "c-rule": { + "type": "color", + "value": "#D3D1CD" + } + }, + "children": [ + { + "type": "frame", + "id": "f9", + "name": "01 封面", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-navy" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f8", + "name": "01 封面 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 120, + 120 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t1", + "name": "项目代号", + "content": "MLN · 26H1 渠道诊断", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f4", + "name": "主张", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t2", + "name": "主标题", + "content": "换渠道救不回毛利\n漏水口在安装这一段", + "fontFamily": "Noto Sans SC", + "fontSize": 104, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy" + } + ], + "lineHeight": 1.08, + "letterSpacing": -2, + "textGrowth": "fixed-width", + "width": 1680 + }, + { + "type": "rectangle", + "id": "r3", + "name": "短线", + "width": 120, + "height": 3, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f7", + "name": "落款", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t5", + "name": "委托方", + "content": "明澜家用水处理 · 战略办公室", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t6", + "name": "日期", + "content": "2026.08", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 0, + "y": 0 + }, + { + "type": "frame", + "id": "f30", + "name": "02 议题航迹", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-navy" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f29", + "name": "02 议题航迹 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 120, + 120 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t31", + "name": "页标题", + "content": "这次诊断,我们只下了五个测点", + "fontFamily": "Noto Sans SC", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy" + } + ], + "lineHeight": 1.12, + "letterSpacing": -1, + "textGrowth": "fixed-width", + "width": 1680 + }, + { + "type": "frame", + "id": "f28", + "name": "航迹目录", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f27", + "name": "航迹线", + "width": 1680, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ] + }, + { + "type": "frame", + "id": "f20", + "name": "航迹点行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f10", + "name": "航迹点位", + "width": "fill_container", + "height": 20, + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "justifyContent": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r11", + "name": "航迹点", + "width": 20, + "height": 20, + "cornerRadius": 10, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f12", + "name": "航迹点位", + "width": "fill_container", + "height": 20, + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "justifyContent": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r13", + "name": "航迹点", + "width": 20, + "height": 20, + "cornerRadius": 10, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + } + } + ] + }, + { + "type": "frame", + "id": "f14", + "name": "航迹点位", + "width": "fill_container", + "height": 20, + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "justifyContent": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r15", + "name": "航迹点", + "width": 20, + "height": 20, + "cornerRadius": 10, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + } + } + ] + }, + { + "type": "frame", + "id": "f16", + "name": "航迹点位", + "width": "fill_container", + "height": 20, + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "justifyContent": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r17", + "name": "航迹点", + "width": 20, + "height": 20, + "cornerRadius": 10, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + } + } + ] + }, + { + "type": "frame", + "id": "f18", + "name": "航迹点位", + "width": "fill_container", + "height": 20, + "layout": "horizontal", + "gap": 0, + "alignItems": "center", + "justifyContent": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r19", + "name": "航迹点", + "width": 20, + "height": 20, + "cornerRadius": 10, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + } + } + ] + } + ] + }, + { + "type": "frame", + "id": "f26", + "name": "节名行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t21", + "name": "节名", + "content": "总体结论", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t22", + "name": "节名", + "content": "毛利去向", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t23", + "name": "节名", + "content": "安装网络", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t24", + "name": "节名", + "content": "取舍判断", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t25", + "name": "节名", + "content": "行动清单", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f34", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t32", + "name": "页脚眉标", + "content": "明澜 · 渠道诊断", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t33", + "name": "页码", + "content": "02 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 2040, + "y": 0 + }, + { + "type": "frame", + "id": "f51", + "name": "03 结论", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f50", + "name": "03 结论 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 120, + 120 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f55", + "name": "论证", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t52", + "name": "页标题", + "content": "复购只发生在\n上门当天能装完的门店", + "fontFamily": "Noto Sans SC", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.12, + "letterSpacing": -1, + "textGrowth": "fixed-width", + "width": 1680 + }, + { + "type": "text", + "id": "t53", + "name": "引导句", + "content": "同一款机器、同一个价,差别不在渠道,在人。", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "frame", + "id": "f54", + "name": "论据列表", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f39", + "name": "论据 1", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t35", + "name": "论据序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 40, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.35, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "frame", + "id": "f38", + "name": "论据文案", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t36", + "name": "论据标题", + "content": "上门当天装完的门店,复购没掉过", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + }, + { + "type": "text", + "id": "t37", + "name": "论据说明", + "content": "华东 91% 的工单当天闭环,华南 88%。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 960 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f44", + "name": "论据 2", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t40", + "name": "论据序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 40, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.35, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "frame", + "id": "f43", + "name": "论据文案", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t41", + "name": "论据标题", + "content": "被改约一次,客户基本就走了", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + }, + { + "type": "text", + "id": "t42", + "name": "论据说明", + "content": "改约过的工单,年内复购只剩 9%。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 960 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f49", + "name": "论据 3", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t45", + "name": "论据序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 40, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.35, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 72 + }, + { + "type": "frame", + "id": "f48", + "name": "论据文案", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t46", + "name": "论据标题", + "content": "装不好不是缺人,是缺件", + "fontFamily": "Noto Sans SC", + "fontSize": 40, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.35, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1200 + }, + { + "type": "text", + "id": "t47", + "name": "论据说明", + "content": "西南 47% 的改约理由是配件不在车上。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 960 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f72", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f60", + "name": "读数条", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r56", + "name": "读数上边线", + "width": "fill_container", + "height": 3, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + { + "type": "frame", + "id": "f59", + "name": "读数", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t57", + "name": "读数数值", + "content": "3.1×", + "fontFamily": "Inter", + "fontSize": 48, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-steel-deep" + } + ], + "lineHeight": 1.05, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t58", + "name": "读数结论", + "content": "复购差距来自安装,不来自价格。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.6, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 960, + "textAlign": "right" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f71", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t61", + "name": "页脚眉标", + "content": "明澜 · 渠道诊断|总体结论", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f70", + "name": "航迹条", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f68", + "name": "航迹点层", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r63", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ], + "x": 0.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r64", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 48.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r65", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 96.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r66", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 144.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r67", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 192.0, + "y": 0 + } + ] + }, + { + "type": "rectangle", + "id": "r69", + "name": "航迹线", + "width": 200, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 3.0 + } + ] + }, + { + "type": "text", + "id": "t62", + "name": "页码", + "content": "03 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 4080, + "y": 0 + }, + { + "type": "frame", + "id": "f111", + "name": "04 证据", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f110", + "name": "04 证据 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 120, + 120 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f113", + "name": "论证", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t112", + "name": "页标题", + "content": "毛利不是被渠道拿走的\n是被返工吃掉的", + "fontFamily": "Noto Sans SC", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.12, + "letterSpacing": -1, + "textGrowth": "fixed-width", + "width": 1680 + }, + { + "type": "frame", + "id": "f109", + "name": "证据区", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f107", + "name": "深度剖面条", + "width": 1152, + "height": 504, + "layout": "none", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f106", + "name": "剖面内容", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r105", + "name": "剖面基线", + "width": 1152, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ] + }, + { + "type": "frame", + "id": "f104", + "name": "剖面列", + "width": 1152, + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f83", + "name": "出厂毛利 列", + "width": 172, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r80", + "name": "剖面条", + "width": 172, + "height": 420, + "fill": [ + { + "type": "solid", + "color": "$c-steel-deep" + } + ] + }, + { + "type": "text", + "id": "t81", + "name": "剖面数值", + "content": "42.0", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t82", + "name": "剖面标签", + "content": "出厂毛利", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f87", + "name": "渠道返点 列", + "width": 172, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r84", + "name": "剖面条", + "width": 172, + "height": 64, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ] + }, + { + "type": "text", + "id": "t85", + "name": "剖面数值", + "content": "6.4", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t86", + "name": "剖面标签", + "content": "渠道返点", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f91", + "name": "仓配摊销 列", + "width": 172, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r88", + "name": "剖面条", + "width": 172, + "height": 31, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ] + }, + { + "type": "text", + "id": "t89", + "name": "剖面数值", + "content": "3.1", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t90", + "name": "剖面标签", + "content": "仓配摊销", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f95", + "name": "安装返工 列", + "width": 172, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r92", + "name": "剖面条", + "width": 172, + "height": 118, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + { + "type": "text", + "id": "t93", + "name": "剖面数值", + "content": "11.8", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t94", + "name": "剖面标签", + "content": "安装返工", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f99", + "name": "退换保修 列", + "width": 172, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r96", + "name": "剖面条", + "width": 172, + "height": 27, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ] + }, + { + "type": "text", + "id": "t97", + "name": "剖面数值", + "content": "2.7", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t98", + "name": "剖面标签", + "content": "退换保修", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f103", + "name": "到手毛利 列", + "width": 172, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r100", + "name": "剖面条", + "width": 172, + "height": 180, + "fill": [ + { + "type": "solid", + "color": "$c-steel-deep" + } + ] + }, + { + "type": "text", + "id": "t101", + "name": "剖面数值", + "content": "18.0", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "text", + "id": "t102", + "name": "剖面标签", + "content": "到手毛利", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f108", + "name": "注解栏", + "width": 480, + "height": "fit_content", + "layout": "vertical", + "gap": 32, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f75", + "name": "注解组", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t73", + "name": "注解标题", + "content": "返工的钱不在财务账上", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 480 + }, + { + "type": "text", + "id": "t74", + "name": "注解说明", + "content": "它记在售后工时里,\n季度报表看不见,\n年底盘账才发现。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 480 + } + ] + }, + { + "type": "rectangle", + "id": "r76", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f79", + "name": "注解组", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t77", + "name": "注解标题", + "content": "换渠道省不下这一段", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 480 + }, + { + "type": "text", + "id": "t78", + "name": "注解说明", + "content": "经销商换一轮,\n安装还是那批人。\n返点让掉两个点,返工照旧。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 480 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f126", + "name": "页脚区", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t125", + "name": "来源脚注", + "content": "数据来源:明澜 2026 年 1–6 月工单与售后台账,单位 元/台,样本 626 家门店。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 720 + }, + { + "type": "frame", + "id": "f124", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t114", + "name": "页脚眉标", + "content": "明澜 · 渠道诊断|毛利去向", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f123", + "name": "航迹条", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f121", + "name": "航迹点层", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r116", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 0.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r117", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ], + "x": 48.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r118", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 96.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r119", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 144.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r120", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 192.0, + "y": 0 + } + ] + }, + { + "type": "rectangle", + "id": "r122", + "name": "航迹线", + "width": 200, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 3.0 + } + ] + }, + { + "type": "text", + "id": "t115", + "name": "页码", + "content": "04 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 0, + "y": 1440 + }, + { + "type": "frame", + "id": "f128", + "name": "05 数据", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f127", + "name": "05 数据 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 120, + 120 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f179", + "name": "论证", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t129", + "name": "页标题", + "content": "装得快的区域,复购就没有掉过", + "fontFamily": "Noto Sans SC", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.12, + "letterSpacing": -1, + "textGrowth": "fixed-width", + "width": 1680 + }, + { + "type": "frame", + "id": "f178", + "name": "区域表", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 18, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f135", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t130", + "name": "表头单元", + "content": "区域", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384 + }, + { + "type": "text", + "id": "t131", + "name": "表头单元", + "content": "门店数", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 240, + "textAlign": "right" + }, + { + "type": "text", + "id": "t132", + "name": "表头单元", + "content": "平均上门(天)", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t133", + "name": "表头单元", + "content": "一次装成率", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t134", + "name": "表头单元", + "content": "年内复购", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 360, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r136", + "name": "横线", + "width": "fill_container", + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + { + "type": "frame", + "id": "f142", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t137", + "name": "表格单元", + "content": "华东", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384 + }, + { + "type": "text", + "id": "t138", + "name": "表格单元", + "content": "186", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 240, + "textAlign": "right" + }, + { + "type": "text", + "id": "t139", + "name": "表格单元", + "content": "2.4", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t140", + "name": "表格单元", + "content": "91%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t141", + "name": "表格单元", + "content": "34%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 360, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r143", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f149", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t144", + "name": "表格单元", + "content": "华南", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384 + }, + { + "type": "text", + "id": "t145", + "name": "表格单元", + "content": "142", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 240, + "textAlign": "right" + }, + { + "type": "text", + "id": "t146", + "name": "表格单元", + "content": "3.1", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t147", + "name": "表格单元", + "content": "88%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t148", + "name": "表格单元", + "content": "29%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 360, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r150", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f156", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t151", + "name": "表格单元", + "content": "华北", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384 + }, + { + "type": "text", + "id": "t152", + "name": "表格单元", + "content": "128", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 240, + "textAlign": "right" + }, + { + "type": "text", + "id": "t153", + "name": "表格单元", + "content": "4.6", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t154", + "name": "表格单元", + "content": "74%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t155", + "name": "表格单元", + "content": "18%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 360, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r157", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f163", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t158", + "name": "表格单元", + "content": "华中", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384 + }, + { + "type": "text", + "id": "t159", + "name": "表格单元", + "content": "96", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 240, + "textAlign": "right" + }, + { + "type": "text", + "id": "t160", + "name": "表格单元", + "content": "5.2", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t161", + "name": "表格单元", + "content": "69%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t162", + "name": "表格单元", + "content": "15%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 360, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r164", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f170", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t165", + "name": "表格单元", + "content": "西南", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384 + }, + { + "type": "text", + "id": "t166", + "name": "表格单元", + "content": "74", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 240, + "textAlign": "right" + }, + { + "type": "text", + "id": "t167", + "name": "表格单元", + "content": "6.8", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t168", + "name": "表格单元", + "content": "61%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t169", + "name": "表格单元", + "content": "11%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 360, + "textAlign": "right" + } + ] + }, + { + "type": "rectangle", + "id": "r171", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f177", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t172", + "name": "表格单元", + "content": "合计", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 384 + }, + { + "type": "text", + "id": "t173", + "name": "表格单元", + "content": "626", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 240, + "textAlign": "right" + }, + { + "type": "text", + "id": "t174", + "name": "表格单元", + "content": "4.1", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t175", + "name": "表格单元", + "content": "78%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 300, + "textAlign": "right" + }, + { + "type": "text", + "id": "t176", + "name": "表格单元", + "content": "22%", + "fontFamily": "Inter", + "fontSize": 30, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 360, + "textAlign": "right" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f192", + "name": "页脚区", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t191", + "name": "来源脚注", + "content": "数据来源:明澜工单系统 2026 年 1–6 月,一次装成率指首次上门即完成安装并通过验收的比例。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 720 + }, + { + "type": "frame", + "id": "f190", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t180", + "name": "页脚眉标", + "content": "明澜 · 渠道诊断|安装网络", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f189", + "name": "航迹条", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f187", + "name": "航迹点层", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r182", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 0.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r183", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 48.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r184", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ], + "x": 96.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r185", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 144.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r186", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 192.0, + "y": 0 + } + ] + }, + { + "type": "rectangle", + "id": "r188", + "name": "航迹线", + "width": 200, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 3.0 + } + ] + }, + { + "type": "text", + "id": "t181", + "name": "页码", + "content": "05 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 2040, + "y": 1440 + }, + { + "type": "frame", + "id": "f212", + "name": "06 取舍", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-paper" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f211", + "name": "06 取舍 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 120, + 120 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f214", + "name": "论证", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t213", + "name": "页标题", + "content": "该换的不是经销商\n是把安装收回来自己做", + "fontFamily": "Noto Sans SC", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.12, + "letterSpacing": -1, + "textGrowth": "fixed-width", + "width": 1680 + }, + { + "type": "frame", + "id": "f210", + "name": "取舍区", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f208", + "name": "证据栏", + "width": 1140, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f195", + "name": "证据条", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t193", + "name": "证据标题", + "content": "自有师傅的一次装成率是 94%", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "text", + "id": "t194", + "name": "证据说明", + "content": "外包队伍 68%。\n同样的培训,差别在返修要不要自己扛。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + }, + { + "type": "rectangle", + "id": "r196", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f199", + "name": "证据条", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t197", + "name": "证据标题", + "content": "改约主要卡在配件不在车上", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "text", + "id": "t198", + "name": "证据说明", + "content": "不是人手不够。\n配件调度这一段本来就在我们自己手里。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + }, + { + "type": "rectangle", + "id": "r200", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f203", + "name": "证据条", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t201", + "name": "证据标题", + "content": "经销商并不反对我们自己装", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "text", + "id": "t202", + "name": "证据说明", + "content": "他们要的是卖机器那笔返点,\n安装对他们一直是成本中心。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 900 + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r209", + "name": "竖线", + "width": 1, + "height": "fill_container", + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f207", + "name": "判断栏", + "width": 491, + "height": "fill_container", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-paper-deep" + } + ], + "padding": [ + 32, + 32 + ], + "children": [ + { + "type": "rectangle", + "id": "r204", + "name": "警戒短线", + "width": 96, + "height": 4, + "fill": [ + { + "type": "solid", + "color": "$c-ochre" + } + ] + }, + { + "type": "text", + "id": "t205", + "name": "判断标题", + "content": "这一步的代价", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 427 + }, + { + "type": "text", + "id": "t206", + "name": "判断说明", + "content": "自建安装要多背\n三年四千三百万固定成本。\n换来的是复购,\n不是当期毛利。", + "fontFamily": "Noto Sans SC", + "fontSize": 30, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 427 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f225", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t215", + "name": "页脚眉标", + "content": "明澜 · 渠道诊断|取舍判断", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f224", + "name": "航迹条", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f222", + "name": "航迹点层", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r217", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 0.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r218", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 48.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r219", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 96.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r220", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ], + "x": 144.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r221", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel" + } + ] + }, + "x": 192.0, + "y": 0 + } + ] + }, + { + "type": "rectangle", + "id": "r223", + "name": "航迹线", + "width": 200, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 3.0 + } + ] + }, + { + "type": "text", + "id": "t216", + "name": "页码", + "content": "06 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 4080, + "y": 1440 + }, + { + "type": "frame", + "id": "f236", + "name": "07 行动", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-navy" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f235", + "name": "07 行动 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 96, + 120, + 120, + 120 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t237", + "name": "收束句", + "content": "先把华南的安装收回来\n再谈全国", + "fontFamily": "Noto Sans SC", + "fontSize": 72, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy" + } + ], + "lineHeight": 1.12, + "letterSpacing": -1, + "textGrowth": "fixed-width", + "width": 1680 + }, + { + "type": "frame", + "id": "f238", + "name": "行动区", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f228", + "name": "行动 1", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t226", + "name": "行动序号", + "content": "01", + "fontFamily": "Inter", + "fontSize": 40, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ], + "lineHeight": 1.35, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 528 + }, + { + "type": "text", + "id": "t227", + "name": "行动文案", + "content": "九月底前接管\n华南两个仓的配件调度", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 528 + } + ] + }, + { + "type": "frame", + "id": "f231", + "name": "行动 2", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t229", + "name": "行动序号", + "content": "02", + "fontFamily": "Inter", + "fontSize": 40, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ], + "lineHeight": 1.35, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 528 + }, + { + "type": "text", + "id": "t230", + "name": "行动文案", + "content": "十月起在广深\n自招一百二十名安装师傅", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 528 + } + ] + }, + { + "type": "frame", + "id": "f234", + "name": "行动 3", + "width": 528, + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t232", + "name": "行动序号", + "content": "03", + "fontFamily": "Inter", + "fontSize": 40, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ], + "lineHeight": 1.35, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 528 + }, + { + "type": "text", + "id": "t233", + "name": "行动文案", + "content": "年底复盘一次装成率,\n到不了九成就停", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 528 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f251", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t239", + "name": "落款", + "content": "明澜家用水处理 · 战略办公室|2026 年 8 月 12 日", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 780 + }, + { + "type": "frame", + "id": "f250", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t240", + "name": "页脚眉标", + "content": "明澜 · 渠道诊断|行动清单", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f249", + "name": "航迹条", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f247", + "name": "航迹点层", + "width": 200, + "height": 8, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r242", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + }, + "x": 0.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r243", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + }, + "x": 48.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r244", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + }, + "x": 96.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r245", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [], + "stroke": { + "thickness": 1.5, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ] + }, + "x": 144.0, + "y": 0 + }, + { + "type": "rectangle", + "id": "r246", + "name": "航迹点", + "width": 8, + "height": 8, + "cornerRadius": 4, + "fill": [ + { + "type": "solid", + "color": "$c-steel-lift" + } + ], + "x": 192.0, + "y": 0 + } + ] + }, + { + "type": "rectangle", + "id": "r248", + "name": "航迹线", + "width": 200, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "x": 0, + "y": 3.0 + } + ] + }, + { + "type": "text", + "id": "t241", + "name": "页码", + "content": "07 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-on-navy-dim" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 0, + "y": 2880 + } + ] +} diff --git a/crates/op-editor-core/assets/scene_templates/tidemark-slate-deck.op b/crates/op-editor-core/assets/scene_templates/tidemark-slate-deck.op new file mode 100644 index 000000000..87851adab --- /dev/null +++ b/crates/op-editor-core/assets/scene_templates/tidemark-slate-deck.op @@ -0,0 +1,5716 @@ +{ + "version": "1.0.0", + "name": "潮痕石板 · 数据评审档 16:9", + "variables": { + "c-wash": { + "type": "color", + "value": "#F1F4F6" + }, + "c-panel": { + "type": "color", + "value": "#E4E8EB" + }, + "c-rule": { + "type": "color", + "value": "#CED1D4" + }, + "c-ink": { + "type": "color", + "value": "#19212A" + }, + "c-ink-soft": { + "type": "color", + "value": "#515961" + }, + "c-ink-faint": { + "type": "color", + "value": "#737A81" + }, + "c-tide": { + "type": "color", + "value": "#006C9B" + }, + "c-tide-deep": { + "type": "color", + "value": "#004C77" + }, + "c-tide-wash": { + "type": "color", + "value": "#D6ECF9" + }, + "c-buoy-green": { + "type": "color", + "value": "#35824B" + }, + "c-buoy-amber": { + "type": "color", + "value": "#AF7100" + }, + "c-buoy-red": { + "type": "color", + "value": "#B24037" + } + }, + "children": [ + { + "type": "frame", + "id": "f13", + "name": "01 封面", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f12", + "name": "01 封面 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 24, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f1", + "name": "周期标记", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "padding": [ + 8, + 16 + ], + "gap": 0, + "cornerRadius": 8, + "alignItems": "center", + "justifyContent": "center", + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ], + "children": [ + { + "type": "text", + "id": "t2", + "name": "周期文字", + "content": "2026 Q2", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "lineHeight": 1.3, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f5", + "name": "主张", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t3", + "name": "主标题", + "content": "签得多了\n但签得更慢了", + "fontFamily": "Noto Sans SC", + "fontSize": 88, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.08, + "letterSpacing": -2, + "textGrowth": "fixed-width", + "width": 1728 + }, + { + "type": "text", + "id": "t4", + "name": "范围说明", + "content": "本次评审覆盖企业版四条业务线,数据截至 6 月 30 日。", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 960 + } + ] + }, + { + "type": "frame", + "id": "f14", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f8", + "name": "潮痕", + "width": 1728, + "height": 4, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r6", + "name": "潮痕刻度", + "width": 220, + "height": 4, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ], + "x": 1040, + "y": 0 + }, + { + "type": "rectangle", + "id": "r7", + "name": "潮痕底线", + "width": 1728, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 1 + } + ] + }, + { + "type": "frame", + "id": "f11", + "name": "落款", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t9", + "name": "汇报人", + "content": "增长与运营部 · 周砚", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t10", + "name": "日期", + "content": "2026.07.09", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 0, + "y": 0 + }, + { + "type": "frame", + "id": "f16", + "name": "02 全景磁贴", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f15", + "name": "02 全景磁贴 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t17", + "name": "页标题", + "content": "签署量涨了三成,签完的时间也一起涨了", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1728 + }, + { + "type": "frame", + "id": "f66", + "name": "磁贴行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "stretch", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f29", + "name": "潮位磁贴", + "width": 414, + "height": 360, + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-panel" + } + ], + "justifyContent": "space_between", + "padding": [ + 28, + 28 + ], + "cornerRadius": 8, + "children": [ + { + "type": "text", + "id": "t28", + "name": "磁贴标签", + "content": "季度签署量(万份)", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f27", + "name": "读数", + "width": 358, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t22", + "name": "磁贴数值", + "content": "18.6", + "fontFamily": "Inter", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.05, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f26", + "name": "潮位刻度", + "width": 358, + "height": 14, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r23", + "name": "目标刻痕", + "width": 3, + "height": 14, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 294.65, + "y": 0 + }, + { + "type": "rectangle", + "id": "r24", + "name": "已达段", + "width": 279.24, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ], + "x": 0, + "y": 6 + }, + { + "type": "rectangle", + "id": "r25", + "name": "刻度底线", + "width": 358, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 6 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f21", + "name": "变化 chip", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r18", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-green" + } + ] + }, + { + "type": "text", + "id": "t19", + "name": "变化数值", + "content": "+31%", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.3, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t20", + "name": "比较词", + "content": "对比上季", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.3, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f41", + "name": "潮位磁贴", + "width": 414, + "height": 360, + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-panel" + } + ], + "justifyContent": "space_between", + "padding": [ + 28, + 28 + ], + "cornerRadius": 8, + "children": [ + { + "type": "text", + "id": "t40", + "name": "磁贴标签", + "content": "平均签署时长(小时)", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f39", + "name": "读数", + "width": 358, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t34", + "name": "磁贴数值", + "content": "6.4", + "fontFamily": "Inter", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.05, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f38", + "name": "潮位刻度", + "width": 358, + "height": 14, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r35", + "name": "目标刻痕", + "width": 3, + "height": 14, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 177.5, + "y": 0 + }, + { + "type": "rectangle", + "id": "r36", + "name": "已达段", + "width": 286.4, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ], + "x": 0, + "y": 6 + }, + { + "type": "rectangle", + "id": "r37", + "name": "刻度底线", + "width": 358, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 6 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f33", + "name": "变化 chip", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r30", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-amber" + } + ] + }, + { + "type": "text", + "id": "t31", + "name": "变化数值", + "content": "+0.9", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.3, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t32", + "name": "比较词", + "content": "比上季更慢", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.3, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f53", + "name": "潮位磁贴", + "width": 414, + "height": 360, + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-panel" + } + ], + "justifyContent": "space_between", + "padding": [ + 28, + 28 + ], + "cornerRadius": 8, + "children": [ + { + "type": "text", + "id": "t52", + "name": "磁贴标签", + "content": "一次签成率", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f51", + "name": "读数", + "width": 358, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t46", + "name": "磁贴数值", + "content": "91.2%", + "fontFamily": "Inter", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.05, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f50", + "name": "潮位刻度", + "width": 358, + "height": 14, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r47", + "name": "目标刻痕", + "width": 3, + "height": 14, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 330.15, + "y": 0 + }, + { + "type": "rectangle", + "id": "r48", + "name": "已达段", + "width": 325.78, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ], + "x": 0, + "y": 6 + }, + { + "type": "rectangle", + "id": "r49", + "name": "刻度底线", + "width": 358, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 6 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f45", + "name": "变化 chip", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r42", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-green" + } + ] + }, + { + "type": "text", + "id": "t43", + "name": "变化数值", + "content": "+1.8", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.3, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t44", + "name": "比较词", + "content": "个百分点", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.3, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f65", + "name": "潮位磁贴", + "width": 414, + "height": 360, + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [ + { + "type": "solid", + "color": "$c-panel" + } + ], + "justifyContent": "space_between", + "padding": [ + 28, + 28 + ], + "cornerRadius": 8, + "children": [ + { + "type": "text", + "id": "t64", + "name": "磁贴标签", + "content": "已上线集成(个)", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f63", + "name": "读数", + "width": 358, + "height": "fit_content", + "layout": "vertical", + "gap": 20, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t58", + "name": "磁贴数值", + "content": "11", + "fontFamily": "Inter", + "fontSize": 64, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.05, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container" + }, + { + "type": "frame", + "id": "f62", + "name": "潮位刻度", + "width": 358, + "height": 14, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r59", + "name": "目标刻痕", + "width": 3, + "height": 14, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 319.5, + "y": 0 + }, + { + "type": "rectangle", + "id": "r60", + "name": "已达段", + "width": 196.9, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ], + "x": 0, + "y": 6 + }, + { + "type": "rectangle", + "id": "r61", + "name": "刻度底线", + "width": 358, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ], + "x": 0, + "y": 6 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f57", + "name": "变化 chip", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r54", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-red" + } + ] + }, + { + "type": "text", + "id": "t55", + "name": "变化数值", + "content": "-7", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.3, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t56", + "name": "比较词", + "content": "低于目标", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.3, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f71", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t67", + "name": "来源脚注", + "content": "数据来源:合章数据平台,口径为企业版付费租户,2026 年 4 月 1 日至 6 月 30 日。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 720 + }, + { + "type": "frame", + "id": "f70", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t68", + "name": "页脚眉标", + "content": "合章电子签 · 2026 Q2 业务评审", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t69", + "name": "页码", + "content": "02 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 2040, + "y": 0 + }, + { + "type": "frame", + "id": "f80", + "name": "03 趋势", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f79", + "name": "03 趋势 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f109", + "name": "论证", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t81", + "name": "页标题", + "content": "签署量每个月都在涨,涨的全是中小客户", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1728 + }, + { + "type": "frame", + "id": "f108", + "name": "趋势区", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f106", + "name": "趋势柱图", + "width": 1240, + "height": 506, + "layout": "horizontal", + "gap": 24, + "alignItems": "end", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f85", + "name": "一月 柱", + "width": 186, + "height": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "fill": [], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "t82", + "name": "柱值", + "content": "2.4", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "rectangle", + "id": "r83", + "name": "月柱", + "width": 186, + "height": 258, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ] + }, + { + "type": "text", + "id": "t84", + "name": "月份", + "content": "一月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f89", + "name": "二月 柱", + "width": 186, + "height": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "fill": [], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "t86", + "name": "柱值", + "content": "2.9", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "rectangle", + "id": "r87", + "name": "月柱", + "width": 186, + "height": 312, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ] + }, + { + "type": "text", + "id": "t88", + "name": "月份", + "content": "二月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f93", + "name": "三月 柱", + "width": 186, + "height": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "fill": [], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "t90", + "name": "柱值", + "content": "2.7", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "rectangle", + "id": "r91", + "name": "月柱", + "width": 186, + "height": 291, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ] + }, + { + "type": "text", + "id": "t92", + "name": "月份", + "content": "三月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f97", + "name": "四月 柱", + "width": 186, + "height": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "fill": [], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "t94", + "name": "柱值", + "content": "3.2", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "rectangle", + "id": "r95", + "name": "月柱", + "width": 186, + "height": 345, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ] + }, + { + "type": "text", + "id": "t96", + "name": "月份", + "content": "四月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f101", + "name": "五月 柱", + "width": 186, + "height": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "fill": [], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "t98", + "name": "柱值", + "content": "3.4", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "rectangle", + "id": "r99", + "name": "月柱", + "width": 186, + "height": 366, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + }, + { + "type": "text", + "id": "t100", + "name": "月份", + "content": "五月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + }, + { + "type": "frame", + "id": "f105", + "name": "六月 柱", + "width": 186, + "height": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "fill": [], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "t102", + "name": "柱值", + "content": "3.9", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + }, + { + "type": "rectangle", + "id": "r103", + "name": "月柱", + "width": 186, + "height": 420, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + }, + { + "type": "text", + "id": "t104", + "name": "月份", + "content": "六月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": "fill_container", + "textAlign": "center" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f107", + "name": "注解栏", + "width": 440, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f74", + "name": "注解组", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t72", + "name": "注解标题", + "content": "中小客户是自己找上门的", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 440 + }, + { + "type": "text", + "id": "t73", + "name": "注解说明", + "content": "六月新签里 71% 没有销售触达,\n来自模板市场与搜索。", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 440 + } + ] + }, + { + "type": "rectangle", + "id": "r75", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f78", + "name": "注解组", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t76", + "name": "注解标题", + "content": "大客户的量卡在集成上", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 440 + }, + { + "type": "text", + "id": "t77", + "name": "注解说明", + "content": "两家头部客户的用印审批\n还在他们自己的 OA 里。", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.5, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 440 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f114", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t110", + "name": "来源脚注", + "content": "数据来源:合章数据平台,按签署完成时间归月,单位 万份。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 720 + }, + { + "type": "frame", + "id": "f113", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t111", + "name": "页脚眉标", + "content": "合章电子签 · 2026 Q2 业务评审", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t112", + "name": "页码", + "content": "03 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 4080, + "y": 0 + }, + { + "type": "frame", + "id": "f116", + "name": "04 明细表", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f115", + "name": "04 明细表 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f188", + "name": "论证", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t117", + "name": "页标题", + "content": "十一个集成里,四个已经逾期", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1728 + }, + { + "type": "frame", + "id": "f187", + "name": "集成明细", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 12, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f123", + "name": "表头", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t118", + "name": "表头单元", + "content": "集成对象", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "text", + "id": "t119", + "name": "表头单元", + "content": "状态", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200 + }, + { + "type": "text", + "id": "t120", + "name": "表头单元", + "content": "责任人", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t121", + "name": "表头单元", + "content": "到期", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t122", + "name": "表头单元", + "content": "当前卡点", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + }, + { + "type": "rectangle", + "id": "r124", + "name": "横线", + "width": "fill_container", + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + }, + { + "type": "frame", + "id": "f132", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t128", + "name": "集成名", + "content": "钉钉待办同步", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "frame", + "id": "f127", + "name": "状态单元", + "width": 200, + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r125", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-green" + } + ] + }, + { + "type": "text", + "id": "t126", + "name": "状态文字", + "content": "正常", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t129", + "name": "责任人", + "content": "陆迎", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t130", + "name": "到期", + "content": "07-18", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t131", + "name": "卡点", + "content": "联调已过,等对方发版", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + }, + { + "type": "rectangle", + "id": "r133", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f141", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t137", + "name": "集成名", + "content": "企业微信审批", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "frame", + "id": "f136", + "name": "状态单元", + "width": 200, + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r134", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-green" + } + ] + }, + { + "type": "text", + "id": "t135", + "name": "状态文字", + "content": "正常", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t138", + "name": "责任人", + "content": "陆迎", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t139", + "name": "到期", + "content": "07-25", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t140", + "name": "卡点", + "content": "灰度中,两家客户在跑", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + }, + { + "type": "rectangle", + "id": "r142", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f150", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t146", + "name": "集成名", + "content": "金蝶云星空", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "frame", + "id": "f145", + "name": "状态单元", + "width": 200, + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r143", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-amber" + } + ] + }, + { + "type": "text", + "id": "t144", + "name": "状态文字", + "content": "风险", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t147", + "name": "责任人", + "content": "沈知白", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t148", + "name": "到期", + "content": "07-11", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t149", + "name": "卡点", + "content": "对方接口文档改了三次", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + }, + { + "type": "rectangle", + "id": "r151", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f159", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t155", + "name": "集成名", + "content": "用友 U8C", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "frame", + "id": "f154", + "name": "状态单元", + "width": 200, + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r152", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-amber" + } + ] + }, + { + "type": "text", + "id": "t153", + "name": "状态文字", + "content": "风险", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t156", + "name": "责任人", + "content": "沈知白", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t157", + "name": "到期", + "content": "07-04", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t158", + "name": "卡点", + "content": "已逾期一周,等对方排期", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + }, + { + "type": "rectangle", + "id": "r160", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f168", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t164", + "name": "集成名", + "content": "飞书多维表", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "frame", + "id": "f163", + "name": "状态单元", + "width": 200, + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r161", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-green" + } + ] + }, + { + "type": "text", + "id": "t162", + "name": "状态文字", + "content": "正常", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t165", + "name": "责任人", + "content": "高见", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t166", + "name": "到期", + "content": "08-08", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t167", + "name": "卡点", + "content": "需求已确认,尚未开工", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + }, + { + "type": "rectangle", + "id": "r169", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f177", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t173", + "name": "集成名", + "content": "泛微 OA", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "frame", + "id": "f172", + "name": "状态单元", + "width": 200, + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r170", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-red" + } + ] + }, + { + "type": "text", + "id": "t171", + "name": "状态文字", + "content": "阻塞", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t174", + "name": "责任人", + "content": "高见", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t175", + "name": "到期", + "content": "06-20", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t176", + "name": "卡点", + "content": "对方要求私有化部署", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + }, + { + "type": "rectangle", + "id": "r178", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f186", + "name": "表行", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t182", + "name": "集成名", + "content": "致远 A8", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 420 + }, + { + "type": "frame", + "id": "f181", + "name": "状态单元", + "width": 200, + "height": "fit_content", + "layout": "horizontal", + "gap": 10, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r179", + "name": "航标点", + "width": 12, + "height": 12, + "cornerRadius": 6, + "fill": [ + { + "type": "solid", + "color": "$c-buoy-red" + } + ] + }, + { + "type": "text", + "id": "t180", + "name": "状态文字", + "content": "阻塞", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "text", + "id": "t183", + "name": "责任人", + "content": "关屿", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t184", + "name": "到期", + "content": "06-27", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "fixed-width", + "width": 220 + }, + { + "type": "text", + "id": "t185", + "name": "卡点", + "content": "客户侧改了用印流程", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 572 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f193", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t189", + "name": "来源脚注", + "content": "数据来源:集成交付看板,状态截至 7 月 8 日 18:00。", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 720 + }, + { + "type": "frame", + "id": "f192", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t190", + "name": "页脚眉标", + "content": "合章电子签 · 2026 Q2 业务评审", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t191", + "name": "页码", + "content": "04 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 0, + "y": 1440 + }, + { + "type": "frame", + "id": "f233", + "name": "05 风险", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f232", + "name": "05 风险 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f236", + "name": "论证", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 48, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t234", + "name": "页标题", + "content": "三个风险,两个我们自己能解", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1728 + }, + { + "type": "frame", + "id": "f235", + "name": "风险列表", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 40, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f205", + "name": "风险条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f199", + "name": "状态列", + "width": 140, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f197", + "name": "航标药丸", + "width": "fit_content", + "height": 36, + "layout": "horizontal", + "padding": [ + 0, + 16 + ], + "gap": 0, + "cornerRadius": 18, + "alignItems": "center", + "justifyContent": "center", + "fill": [ + { + "type": "solid", + "color": "$c-buoy-red" + } + ], + "children": [ + { + "type": "text", + "id": "t198", + "name": "航标文字", + "content": "阻塞", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f203", + "name": "风险文案", + "width": 1180, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t200", + "name": "风险标题", + "content": "两家 OA 厂商要求私有化部署", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "text", + "id": "t201", + "name": "风险影响", + "content": "涉及四家年费合计两千四百万的客户,都在等这条。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 840 + }, + { + "type": "text", + "id": "t202", + "name": "风险应对", + "content": "八月前给出私有化版本的报价与交付边界。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 840 + } + ] + }, + { + "type": "frame", + "id": "f204", + "name": "归属列", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "end", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f196", + "name": "归属", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t194", + "name": "责任人", + "content": "关屿", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t195", + "name": "到期", + "content": "08-15", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r206", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f218", + "name": "风险条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f212", + "name": "状态列", + "width": 140, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f210", + "name": "航标药丸", + "width": "fit_content", + "height": 36, + "layout": "horizontal", + "padding": [ + 0, + 16 + ], + "gap": 0, + "cornerRadius": 18, + "alignItems": "center", + "justifyContent": "center", + "fill": [ + { + "type": "solid", + "color": "$c-buoy-amber" + } + ], + "children": [ + { + "type": "text", + "id": "t211", + "name": "航标文字", + "content": "风险", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f216", + "name": "风险文案", + "width": 1180, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t213", + "name": "风险标题", + "content": "平均签署时长从 4.1 小时涨到 6.4", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "text", + "id": "t214", + "name": "风险影响", + "content": "投诉集中在等对方签,不在我们这一段。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 840 + }, + { + "type": "text", + "id": "t215", + "name": "风险应对", + "content": "九月上线到期提醒与代签授权,先在华东试。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 840 + } + ] + }, + { + "type": "frame", + "id": "f217", + "name": "归属列", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "end", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f209", + "name": "归属", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t207", + "name": "责任人", + "content": "周砚", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t208", + "name": "到期", + "content": "09-30", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "r219", + "name": "横线", + "width": "fill_container", + "height": 1, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "frame", + "id": "f231", + "name": "风险条", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f225", + "name": "状态列", + "width": 140, + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f223", + "name": "航标药丸", + "width": "fit_content", + "height": 36, + "layout": "horizontal", + "padding": [ + 0, + 16 + ], + "gap": 0, + "cornerRadius": 18, + "alignItems": "center", + "justifyContent": "center", + "fill": [ + { + "type": "solid", + "color": "$c-buoy-amber" + } + ], + "children": [ + { + "type": "text", + "id": "t224", + "name": "航标文字", + "content": "风险", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f229", + "name": "风险文案", + "width": 1180, + "height": "fit_content", + "layout": "vertical", + "gap": 8, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t226", + "name": "风险标题", + "content": "模板市场的增长没有人守", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "text", + "id": "t227", + "name": "风险影响", + "content": "六月 71% 的新签来自这里,但它没有归属团队。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 840 + }, + { + "type": "text", + "id": "t228", + "name": "风险应对", + "content": "七月内定归属,先归运营,季度末重评。", + "fontFamily": "Noto Sans SC", + "fontSize": 28, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 840 + } + ] + }, + { + "type": "frame", + "id": "f230", + "name": "归属列", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 0, + "alignItems": "end", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f222", + "name": "归属", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t220", + "name": "责任人", + "content": "周砚", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t221", + "name": "到期", + "content": "07-31", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f239", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t237", + "name": "页脚眉标", + "content": "合章电子签 · 2026 Q2 业务评审", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t238", + "name": "页码", + "content": "05 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ], + "x": 2040, + "y": 1440 + }, + { + "type": "frame", + "id": "f318", + "name": "06 泳道路线", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f317", + "name": "06 泳道路线 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t319", + "name": "页标题", + "content": "三季度只做三件事,其余往后放", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1728 + }, + { + "type": "frame", + "id": "f320", + "name": "泳道区", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f245", + "name": "月份头", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f240", + "name": "月份头占位", + "width": 200, + "height": 1, + "layout": "none", + "fill": [] + }, + { + "type": "frame", + "id": "f244", + "name": "月份标签", + "width": 1504, + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t241", + "name": "月份名", + "content": "七月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 490, + "textAlign": "center" + }, + { + "type": "text", + "id": "t242", + "name": "月份名", + "content": "八月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 490, + "textAlign": "center" + }, + { + "type": "text", + "id": "t243", + "name": "月份名", + "content": "九月", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 490, + "textAlign": "center" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f261", + "name": "泳道", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t246", + "name": "泳道名", + "content": "集成交付", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200 + }, + { + "type": "frame", + "id": "f260", + "name": "泳道时间区", + "width": 1504, + "height": 56, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r249", + "name": "里程碑", + "width": 16, + "height": 16, + "rotation": 45, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 984.64, + "y": 20.0 + }, + { + "type": "frame", + "id": "f247", + "name": "泳道条", + "width": 1248.32, + "height": 40, + "layout": "horizontal", + "gap": 0, + "cornerRadius": 8, + "clipContent": true, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ], + "children": [ + { + "type": "rectangle", + "id": "r248", + "name": "起点段", + "width": 6, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + } + ], + "x": 0.0, + "y": 8.0 + }, + { + "type": "frame", + "id": "f250", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r251", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r252", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r253", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r254", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 501.33, + "y": 0 + }, + { + "type": "frame", + "id": "f255", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r256", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r257", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r258", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r259", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 1002.67, + "y": 0 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f277", + "name": "泳道", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t262", + "name": "泳道名", + "content": "私有化版本", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200 + }, + { + "type": "frame", + "id": "f276", + "name": "泳道时间区", + "width": 1504, + "height": 56, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r265", + "name": "里程碑", + "width": 16, + "height": 16, + "rotation": 45, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 1450.88, + "y": 20.0 + }, + { + "type": "frame", + "id": "f263", + "name": "泳道条", + "width": 1263.36, + "height": 40, + "layout": "horizontal", + "gap": 0, + "cornerRadius": 8, + "clipContent": true, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ], + "children": [ + { + "type": "rectangle", + "id": "r264", + "name": "起点段", + "width": 6, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + } + ], + "x": 240.64, + "y": 8.0 + }, + { + "type": "frame", + "id": "f266", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r267", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r268", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r269", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r270", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 501.33, + "y": 0 + }, + { + "type": "frame", + "id": "f271", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r272", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r273", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r274", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r275", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 1002.67, + "y": 0 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f293", + "name": "泳道", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t278", + "name": "泳道名", + "content": "签署提速", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200 + }, + { + "type": "frame", + "id": "f292", + "name": "泳道时间区", + "width": 1504, + "height": 56, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r281", + "name": "里程碑", + "width": 16, + "height": 16, + "rotation": 45, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 1074.88, + "y": 20.0 + }, + { + "type": "frame", + "id": "f279", + "name": "泳道条", + "width": 1007.68, + "height": 40, + "layout": "horizontal", + "gap": 0, + "cornerRadius": 8, + "clipContent": true, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ], + "children": [ + { + "type": "rectangle", + "id": "r280", + "name": "起点段", + "width": 6, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + } + ], + "x": 496.32, + "y": 8.0 + }, + { + "type": "frame", + "id": "f282", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r283", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r284", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r285", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r286", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 501.33, + "y": 0 + }, + { + "type": "frame", + "id": "f287", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r288", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r289", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r290", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r291", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 1002.67, + "y": 0 + } + ] + } + ] + }, + { + "type": "frame", + "id": "f309", + "name": "泳道", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t294", + "name": "泳道名", + "content": "模板市场归属", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 200 + }, + { + "type": "frame", + "id": "f308", + "name": "泳道时间区", + "width": 1504, + "height": 56, + "layout": "none", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r297", + "name": "里程碑", + "width": 16, + "height": 16, + "rotation": 45, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ], + "x": 608.64, + "y": 20.0 + }, + { + "type": "frame", + "id": "f295", + "name": "泳道条", + "width": 661.76, + "height": 40, + "layout": "horizontal", + "gap": 0, + "cornerRadius": 8, + "clipContent": true, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ], + "children": [ + { + "type": "rectangle", + "id": "r296", + "name": "起点段", + "width": 6, + "height": 40, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + } + ], + "x": 0.0, + "y": 8.0 + }, + { + "type": "frame", + "id": "f298", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r299", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r300", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r301", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r302", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 501.33, + "y": 0 + }, + { + "type": "frame", + "id": "f303", + "name": "月份分隔", + "width": "fit_content", + "height": "fit_content", + "layout": "vertical", + "gap": 6, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r304", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r305", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r306", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + }, + { + "type": "rectangle", + "id": "r307", + "name": "月份分隔 · 段", + "width": 1, + "height": 8, + "fill": [ + { + "type": "solid", + "color": "$c-rule" + } + ] + } + ], + "x": 1002.67, + "y": 0 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f324", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f316", + "name": "图例", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 12, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f311", + "name": "图例条", + "width": 48, + "height": 20, + "layout": "horizontal", + "gap": 0, + "cornerRadius": 8, + "clipContent": true, + "fill": [ + { + "type": "solid", + "color": "$c-tide-wash" + } + ], + "children": [ + { + "type": "rectangle", + "id": "r312", + "name": "图例起点段", + "width": 6, + "height": 20, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + } + ] + }, + { + "type": "text", + "id": "t313", + "name": "图例文字", + "content": "进行中", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "frame", + "id": "f314", + "name": "图例间隔", + "width": 24, + "height": 1, + "layout": "none", + "fill": [] + }, + { + "type": "rectangle", + "id": "r310", + "name": "图例里程碑", + "width": 16, + "height": 16, + "rotation": 45, + "fill": [ + { + "type": "solid", + "color": "$c-tide-deep" + } + ] + }, + { + "type": "text", + "id": "t315", + "name": "图例文字", + "content": "里程碑", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + }, + { + "type": "frame", + "id": "f323", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t321", + "name": "页脚眉标", + "content": "合章电子签 · 2026 Q2 业务评审", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t322", + "name": "页码", + "content": "06 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 4080, + "y": 1440 + }, + { + "type": "frame", + "id": "f344", + "name": "07 决议", + "width": 1920, + "height": 1080, + "layout": "none", + "fill": [ + { + "type": "solid", + "color": "$c-wash" + } + ], + "clipContent": true, + "children": [ + { + "type": "frame", + "id": "f343", + "name": "07 决议 · 正文", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 88, + 96, + 104, + 96 + ], + "gap": 48, + "justifyContent": "space_between", + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t345", + "name": "页标题", + "content": "这三件今天要定,定不了就带走", + "fontFamily": "Noto Sans SC", + "fontSize": 56, + "fontWeight": 700, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.2, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1728 + }, + { + "type": "frame", + "id": "f346", + "name": "待决区", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "frame", + "id": "f330", + "name": "待决事项", + "width": 560, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r325", + "name": "横线", + "width": 560, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + }, + { + "type": "text", + "id": "t326", + "name": "决议", + "content": "私有化版本做不做,\n做到什么边界", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 560 + }, + { + "type": "frame", + "id": "f329", + "name": "决策归属", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t327", + "name": "决策人", + "content": "关屿", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t328", + "name": "期限", + "content": "07-12", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f336", + "name": "待决事项", + "width": 560, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r331", + "name": "横线", + "width": 560, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + }, + { + "type": "text", + "id": "t332", + "name": "决议", + "content": "模板市场归运营\n还是归产品", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 560 + }, + { + "type": "frame", + "id": "f335", + "name": "决策归属", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t333", + "name": "决策人", + "content": "周砚", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t334", + "name": "期限", + "content": "07-12", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f342", + "name": "待决事项", + "width": 560, + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "rectangle", + "id": "r337", + "name": "横线", + "width": 560, + "height": 2, + "fill": [ + { + "type": "solid", + "color": "$c-tide" + } + ] + }, + { + "type": "text", + "id": "t338", + "name": "决议", + "content": "两家逾期集成\n是否换供应商", + "fontFamily": "Noto Sans SC", + "fontSize": 32, + "fontWeight": 600, + "fill": [ + { + "type": "solid", + "color": "$c-ink" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 560 + }, + { + "type": "frame", + "id": "f341", + "name": "决策归属", + "width": "fit_content", + "height": "fit_content", + "layout": "horizontal", + "gap": 16, + "alignItems": "center", + "fill": [], + "children": [ + { + "type": "text", + "id": "t339", + "name": "决策人", + "content": "沈知白", + "fontFamily": "Noto Sans SC", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t340", + "name": "期限", + "content": "07-19", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f351", + "name": "页尾", + "width": "fill_container", + "height": "fit_content", + "layout": "vertical", + "gap": 24, + "alignItems": "start", + "fill": [], + "children": [ + { + "type": "text", + "id": "t347", + "name": "收束句", + "content": "下个季度的增长在集成上,不在获客上。", + "fontFamily": "Noto Sans SC", + "fontSize": 36, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-soft" + } + ], + "lineHeight": 1.75, + "letterSpacing": 0, + "textGrowth": "fixed-width", + "width": 1080 + }, + { + "type": "frame", + "id": "f350", + "name": "页脚", + "width": "fill_container", + "height": "fit_content", + "layout": "horizontal", + "gap": 24, + "alignItems": "center", + "fill": [], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "t348", + "name": "页脚眉标", + "content": "合章电子签 · 2026 Q2 业务评审", + "fontFamily": "Noto Sans SC", + "fontSize": 24, + "fontWeight": 400, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 0, + "textGrowth": "auto", + "width": "fit_content" + }, + { + "type": "text", + "id": "t349", + "name": "页码", + "content": "07 / 07", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": 500, + "fill": [ + { + "type": "solid", + "color": "$c-ink-faint" + } + ], + "lineHeight": 1.4, + "letterSpacing": 1.0, + "textGrowth": "auto", + "width": "fit_content" + } + ] + } + ] + } + ] + } + ], + "x": 0, + "y": 2880 + } + ] +} diff --git a/templates/step0/_generators/deck_sounding_navy.py b/templates/step0/_generators/deck_sounding_navy.py new file mode 100644 index 000000000..d8b4183f3 --- /dev/null +++ b/templates/step0/_generators/deck_sounding_navy.py @@ -0,0 +1,699 @@ +#!/usr/bin/env python3 +"""sounding-navy-deck.op — 测深海图 · 咨询策略档(D7,7 页 1920×1080) + +落格:high formality × medium density × **mixed**(深浅书挡)。 +定位:把判断当水深报出来的策略交付档 —— 每页一个结论式标题、一条可追溯的 +证据、一行带来源的读数。 + +### 锚点 + +航海测深海图。海图纸的暖白、等深线的钢蓝、深水区的墨蓝、浅滩警戒的赭黄。 +锚的是**「图上每一个数字都是有人下去量过的」**这件事 —— 这正是策略档要传达 +的:结论不是观点,是读数。不锚船、锚、罗盘、舵轮等任何具象符号。 + +### 三个招牌母题 + +1. **深度剖面条**(04 页)—— 条不浮空,从顶部一条 2px 基线**向下垂**,读作 + 水深。与业界通行的浮动瀑布图的区别是刻意的:浮动条读作「位置」,下垂条 + 读作「深度」,后者与「损失/消耗」的语义同向,也让基线成为唯一的对齐锚。 +2. **航迹目录条**(02 页展开 / 03–06 页页脚缩略)—— 一条 2px 航迹线上等距 + 排 5 个圆点,当前节实心。展开态给全局,缩略态是跨页的进度锚。 +3. **读数条**(03 页)—— 页脚上方一条 3px 钢蓝上边线,线下左侧 mono 数值 + + 右侧一句结论。**每页至多一条**,它就是这一页的 takeaway 落点。放页脚不放 + 要点框,是因为要点框会和正文争视觉权重,而页脚位置天然是「读完之后」。 + +### 负约束(spec §2 D7 Strictly avoid,逐条落实) + + - 零圆角。圆角一出现,本档立刻从「海图」滑向「SaaS 落地页」。 + - 零阴影、零渐变、零玻璃拟态 —— 唯一的「深度」是剖面条表达的语义深度。 + - 内容不装卡片。分区靠 1px 线与留白;`chart.paper.deep` 面整套只出现在 + 06 页右栏(05 页表格改用真格线,连斑马都不用)。 + - **`shoal.ochre` 整套只出现一次**(06 页右栏顶部那条 96×4 短线)。警戒色 + 出现两次就不再是警戒。 + - 标题只写结论式完整句,不写话题式;标题下不画横线。 + - 图无图例、无网格线、无 y 轴;数值直接标在图形上;非 key 系列走中性灰。 + - 深页只在开头两页与结尾一页成对出现(书挡),中间内容页一律亮底。 + - 不出现按钮态 / tab / pill / badge / 导航条等任何暗示可交互的元素。 + - 出现数字的页面必须有来源行。 + - 钢蓝与赭黄之外不用第三支有彩色。 + +### 密度核对(§3.2,槽位按「一条要点计 1」) + + 01 封面 3/4 · 02 航迹 6/6 · 03 结论 6/6 · 04 证据 5/6 + 05 数据 9/10 · 06 取舍 6/6 · 07 行动 5/5 + +页码与页脚眉标是母版家具(§4.1 边距豁免名单里的 footer/page 角色),不占槽位。 + +对比度实测见文件末尾。 +""" + +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from deckkit import (CJK, H, NUM, W, assert_type_scale, audit_document, + cjk_width, latin_track, lh, place_boards, track) +from oplib import Ids, color_vars, frame, rect, solid, text, write_doc + +ids = Ids() + +# 色板全部来自 spec §2 D7 的色板表(oklch 实算,非估值)。 +# +# 两条推导必须留在这里,否则将来「顺手统一一下色相」会把这一档的身份抹掉: +# · 深底不用纯黑,用 chroma 0.048 的墨蓝。纯黑封面配白字是所有 AI deck 的 +# 默认出厂设置;带 chroma 的深底让钢蓝在其上读作「同一族颜色的深处」。 +# · 亮底的 chroma 走 H85 暖向、深底走 H250 冷向。海图纸是暖的、海水是冷的, +# 这个冷暖分裂是「纸 vs 水」的物理关系,让 mixed 的深浅两态有真实材质差 +# 别,而不是同一个色的明暗两级。 +VARS = color_vars({ + "c-paper": "#F7F4EE", # 内容页底 + "c-paper-deep": "#EBE7DF", # 分区面(整套只用于 06 页右栏) + "c-navy": "#091E32", # 封面 / 分节 / 收尾页底 + "c-navy-low": "#031223", # 深页上的更深块 + "c-ink": "#1D2228", # 亮页主文字 14.58 : paper + "c-ink-soft": "#565B61", # 亮页次级文字 6.24 + "c-ink-faint": "#7C8186", # 脚注 / 页码 3.58(仅 ≥24px) + "c-on-navy": "#F0F4F7", # 深页主文字 15.27 : navy + "c-on-navy-dim": "#B3B8BE", # 深页次级文字 8.46 + "c-steel": "#266EA4", # 主 accent 4.97 : paper + "c-steel-deep": "#044A7D", # 承载白字的钢蓝 8.39(白字) + "c-steel-lift": "#83B0D7", # 深页上的 accent 7.36 : navy + "c-ochre": "#A46D1A", # 第二色·警戒,整套一次 4.00 + "c-rule": "#D3D1CD", # 栏线 / 表格线(非文字) +}) + +# §2 D7 版式语法:下边距 > 上边距。投影下沿常被前排人头遮挡 —— 这是真实 +# 约束不是趣味,同时它顺手打破了「万物居中且四边等距」这条 AI 指纹。 +PAD_TOP, PAD_BOTTOM, PAD_X = 96, 120, 120 +INNER = W - PAD_X * 2 # 1680 +GUTTER = 24 # gap 基准,本档所有间距都是它的整数倍 + +# 线宽只有三档。多一档就要解释「为什么这里 2.5」,而海图上没有 2.5。 +HAIR, RULE, HEAVY = 1, 2, 3 + +# 字号(§2 D7)。全部过 assert_type_scale 的地板自检。 +FS_COVER = 104 # 封面主标(区间 100–116) +FS_TITLE = 64 # 结论式页标题 +FS_CLOSE = 72 # 收尾页收束句 +FS_LEDE = 36 # 引导句 +FS_ITEM = 40 # 论据标题 / 剖面注解标题 +FS_BODY = 32 # 正文 +FS_TABLE = 30 # 表格正文 +FS_NOTE = 24 # 脚注 / 来源 / 页码(本档唯一允许 24 的位置) +FS_READOUT = 48 # 读数条的 mono 数值 + +# 本档零圆角。写成常量是为了让「有没有人偷偷加了圆角」在 diff 里可数。 +RADIUS = 0 + +# 五个测点与 03–07 五张内容页一一对应:航迹缩略的「当前节」因此是 +# 页码的另一种写法,不是另一套编号。 +SECTIONS = ["总体结论", "毛利去向", "安装网络", "取舍判断", "行动清单"] + + +# ------------------------------------------------------------------ 骨架 +def slide(name, *, dark=False, gap=GUTTER * 2, justify="start"): + """一帧。外壳 layout:none + 内层 flex,与本仓既有 deck 同构。 + + 外壳退成 layout:none 的理由:正文层是一个 flex 容器,任何背景装饰挂进去 + 都会变成参与排版的兄弟把内容挤走。本档虽然装饰极少(只有几条线),但结构 + 保持一致,将来补装饰时不必回头改。 + """ + body = frame(ids, f"{name} · 正文", width="fill_container", + height="fill_container", layout="vertical", + padding=[PAD_TOP, PAD_X, PAD_BOTTOM, PAD_X], gap=gap, + justifyContent=justify, alignItems="start", fill=[]) + body["children"] = [] + shell = frame(ids, name, width=W, height=H, layout="none", + fill=solid("$c-navy" if dark else "$c-paper"), + clipContent=True) + shell["children"] = [body] + shell["content"] = body + return shell + + +def col(name, children, *, gap=GUTTER, width="fill_container", + height="fit_content", align="start", fill=None, **props): + node = frame(ids, name, width=width, height=height, layout="vertical", + gap=gap, alignItems=align, fill=fill or [], **props) + node["children"] = children + return node + + +def row(name, children, *, gap=GUTTER, width="fill_container", + height="fit_content", align="start", fill=None, **props): + node = frame(ids, name, width=width, height=height, layout="horizontal", + gap=gap, alignItems=align, fill=fill or [], **props) + node["children"] = children + return node + + +def hrule(color="$c-rule", thickness=HAIR, width="fill_container"): + """横线一律用 rectangle。 + + §6.3:`line` 在 layout:none 容器下吃的是文档绝对坐标而不是父容器局部 + 坐标,会让线出现在画布的另一个角落。本档所有线(航迹线、表格线、读数条 + 上边线、中缝)都是 rect,不要「优化」成 line。 + """ + return rect(ids, "横线", width=width, height=thickness, fill=solid(color)) + + +def vrule(height, color="$c-rule", thickness=HAIR): + return rect(ids, "竖线", width=thickness, height=height, + fill=solid(color)) + + +def title(content, *, dark=False): + """结论式页标题。≤2 行,断点在文案里显式写 \\n。 + + §3.5:允许 ≤2 行的标题必须显式指定断点,不交给自动折行 —— 当前渲染栈对 + CJK 是逐字符断行、没有标点避头尾,断在「,」前面是可能的。 + """ + return text(ids, "页标题", content, FS_TITLE, 700, + "$c-on-navy" if dark else "$c-ink", family=CJK, + line_height=lh(FS_TITLE), spacing=track(FS_TITLE), + width=INNER) + + +def note(content, *, dark=False, width=None): + return text(ids, "来源脚注", content, FS_NOTE, 400, + "$c-on-navy-dim" if dark else "$c-ink-faint", family=CJK, + line_height=lh(FS_NOTE), width=width or cjk_width(FS_NOTE, + INNER)) + + +def sounding_dot(ring, size, *, filled): + """航迹点。实心 = 当前节,空心 = 其余节。 + + 空心态靠 1.5px 描边而不是「填一个底色接近页底的圆」:换页底时描边自己 + 还在,填色版会在深浅两态之间各错一次。 + """ + props = {"width": size, "height": size, "cornerRadius": size // 2} + if filled: + props["fill"] = solid(ring) + else: + props["fill"] = [] + props["stroke"] = {"thickness": 1.5, "fill": solid(ring)} + return rect(ids, "航迹点", **props) + + +def track_dots(active, *, width=INNER, dark=True, dot=12): + """航迹目录条的**缩略态**:一条线 + 5 个点,当前节实心。 + + 放在内容页页脚,是这个母题作为「跨页进度锚」的落点。缩略态不带节名 —— + 节名在 02 页给过一次,页脚再写一遍就成了每页重复的文字噪声。 + + 叠放顺序:§6.4,`layout:none` 的 children[0] 在**最上**(与业界惯例相 + 反)。所以圆点行写在数组第一个,航迹线写在后面。 + """ + ring = "$c-steel-lift" if dark else "$c-steel" + base = "$c-on-navy-dim" if dark else "$c-rule" + lane = (width - dot) / (len(SECTIONS) - 1) + dots = [] + for index in range(len(SECTIONS)): + node = sounding_dot(ring, dot, filled=index == active) + node["x"] = round(index * lane, 2) + node["y"] = 0 + dots.append(node) + dot_layer = frame(ids, "航迹点层", width=width, height=dot, + layout="none", fill=[]) + dot_layer["children"] = dots + + line = rect(ids, "航迹线", width=width, height=RULE, fill=solid(base)) + line["x"], line["y"] = 0, (dot - RULE) / 2 + + shell = frame(ids, "航迹条", width=width, height=dot, layout="none", + fill=[]) + shell["children"] = [dot_layer, line] + return shell + + +def footer(page, *, dark=False, active=None, source=None): + """页脚家具:眉标 + 航迹缩略 + 页码。 + + §3.3 把「页码与页标位置」列进**不允许跨页变**的一栏,所以这一条在 02–07 + 页的 y 上完全相同;01 封面不带页脚(封面是陈述不是信息)。 + + 航迹缩略放在这里,是「航迹目录条」这个母题作为**跨页进度锚**的落点: + 02 页给一次全展开,之后每一页在同一个位置复现一次缩略态。观众任何时候 + 抬头都能看出现在讲到第几个测点,而不必记住议程。 + """ + faint = "$c-on-navy-dim" if dark else "$c-ink-faint" + label = "明澜 · 渠道诊断" + if active is not None: + label += f"|{SECTIONS[active]}" + left = text(ids, "页脚眉标", label, FS_NOTE, 400, faint, family=CJK, + width="fit_content", growth="auto", line_height=lh(FS_NOTE)) + folio = text(ids, "页码", f"{page:02d} / 07", FS_NOTE, 500, faint, + family=NUM, width="fit_content", growth="auto", + line_height=lh(FS_NOTE), spacing=latin_track("07")) + kids = [left] + if active is not None: + kids.append(track_dots(active, width=200, dark=dark, dot=8)) + kids.append(folio) + bar = row("页脚", kids, gap=GUTTER, align="center", + justifyContent="space_between") + if source is None: + return bar + return col("页脚区", [note(source, dark=dark), bar], gap=GUTTER) + + +# ------------------------------------------------------------------ 01 封面 +def cover(): + code = text(ids, "项目代号", "MLN · 26H1 渠道诊断", FS_NOTE, 500, + "$c-steel-lift", family=CJK, width="fit_content", + growth="auto", line_height=lh(FS_NOTE)) + + lede = col("主张", [ + text(ids, "主标题", "换渠道救不回毛利\n漏水口在安装这一段", + FS_COVER, 700, "$c-on-navy", family=CJK, + line_height=lh(FS_COVER), spacing=track(FS_COVER), width=INNER), + rect(ids, "短线", width=120, height=HEAVY, + fill=solid("$c-steel-lift")), + ], gap=GUTTER * 2) + + meta = row("落款", [ + text(ids, "委托方", "明澜家用水处理 · 战略办公室", 26, 400, + "$c-on-navy-dim", family=CJK, width="fit_content", growth="auto", + line_height=lh(26)), + text(ids, "日期", "2026.08", 26, 500, "$c-on-navy-dim", family=NUM, + width="fit_content", growth="auto", line_height=lh(26), + spacing=latin_track("2026.08")), + ], gap=GUTTER, align="center", justifyContent="space_between") + + s = slide("01 封面", dark=True, gap=GUTTER * 2, justify="space_between") + s["content"]["children"] = [code, lede, meta] + return s + + +# -------------------------------------------------------------- 02 议题航迹 +def agenda(): + """分节总览:航迹目录条**全展开**,五个节点全部带中文节名,无正文。 + + 五个节名各占一列、列宽均分。列与列之间留 GUTTER 的真间隙而不是靠居中 + 对齐挤出来 —— §6.2:相邻同族元素贴到 0px 会被几何检测器判成「读起来连成 + 一个词」的 jam,也确实读不出分栏。 + """ + # 圆点与节名走**同一套等分列**:五个 fill_container 列 + 同样的沟槽,各自 + # 在列内居中。早先的写法把点按 (INNER − dot)/4 的绝对步长摆、名字交给等分 + # 列,两套算法的中心差到 150px —— 目录条上点与名对不上,整个母题就废了。 + dot = 20 + dot_cells = [] + for index in range(len(SECTIONS)): + cell = frame(ids, "航迹点位", width="fill_container", height=dot, + layout="horizontal", gap=0, alignItems="center", + justifyContent="center", fill=[]) + cell["children"] = [sounding_dot("$c-steel-lift", dot, + filled=index == 0)] + dot_cells.append(cell) + dot_row = row("航迹点行", dot_cells, gap=GUTTER, align="center") + + names = [] + for index, label in enumerate(SECTIONS): + names.append(text(ids, "节名", label, FS_ITEM, 600, + "$c-on-navy" if index == 0 else "$c-on-navy-dim", + family=CJK, line_height=lh(FS_ITEM), + align="center")) + name_row = row("节名行", names, gap=GUTTER, align="start") + + lane = frame(ids, "航迹线", width=INNER, height=RULE, + fill=solid("$c-on-navy-dim")) + board = col("航迹目录", [lane, dot_row, name_row], gap=GUTTER) + + s = slide("02 议题航迹", dark=True, gap=GUTTER * 2, + justify="space_between") + s["content"]["children"] = [ + title("这次诊断,我们只下了五个测点", dark=True), + board, + footer(2, dark=True), + ] + return s + + +# -------------------------------------------------------------- 03 结论页 +# 说明句一律压到一行(≤30 汉字)。这是 §3.1 铁律一的正面执行:装不下时 +# 第一个动作是**砍文案**,不是缩字号、不是把行距压掉、更不是加 clipContent。 +# 被砍掉的对照数字挪进了 05 页那张表 —— 它本来就该在表里被逐行核对。 +ARGUMENTS = [ + ("上门当天装完的门店,复购没掉过", + "华东 91% 的工单当天闭环,华南 88%。"), + ("被改约一次,客户基本就走了", + "改约过的工单,年内复购只剩 9%。"), + ("装不好不是缺人,是缺件", + "西南 47% 的改约理由是配件不在车上。"), +] + + +def readout(value, conclusion): + """读数条。3px 钢蓝上边线,线下左 mono 数值、右一句结论。 + + 数值走 `c-steel-deep` 而不是 accent 本色:一页只允许 accent 出现一次, + 那一次给了这条上边线 —— 它是把「这一页的读数」从正文里分出来的那个动作。 + 数值本身跟着走深一档,读作墨重而不是第二次强调。 + """ + line = rect(ids, "读数上边线", width="fill_container", height=HEAVY, + fill=solid("$c-steel")) + body = row("读数", [ + text(ids, "读数数值", value, FS_READOUT, 700, "$c-steel-deep", + family=NUM, width="fit_content", growth="auto", + line_height=1.05, spacing=latin_track(value)), + text(ids, "读数结论", conclusion, FS_BODY, 500, "$c-ink", family=CJK, + width=cjk_width(FS_BODY, 1160), align="right"), + ], gap=GUTTER * 2, align="center", justifyContent="space_between") + return col("读数条", [line, body], gap=GUTTER) + + +def conclusion(): + items = [] + for index, (head, desc) in enumerate(ARGUMENTS, 1): + items.append(row(f"论据 {index}", [ + text(ids, "论据序号", f"{index:02d}", FS_ITEM, 500, + "$c-ink-faint", family=NUM, width=72, growth="fixed-width", + line_height=lh(FS_ITEM), spacing=latin_track("01")), + col("论据文案", [ + text(ids, "论据标题", head, FS_ITEM, 600, "$c-ink", + family=CJK, line_height=lh(FS_ITEM), + width=cjk_width(FS_ITEM, INNER - 96)), + text(ids, "论据说明", desc, FS_BODY, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_BODY, body=True), + width=cjk_width(FS_BODY, INNER - 96)), + ], gap=8), + ], gap=GUTTER, align="start")) + + s = slide("03 结论", gap=GUTTER * 2, justify="space_between") + s["content"]["children"] = [ + col("论证", [ + title("复购只发生在\n上门当天能装完的门店"), + text(ids, "引导句", "同一款机器、同一个价,差别不在渠道,在人。", + FS_LEDE, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_LEDE, body=True), + width=cjk_width(FS_LEDE, INNER)), + col("论据列表", items, gap=GUTTER), + ], gap=GUTTER * 2), + col("页尾", [ + readout("3.1×", "复购差距来自安装,不来自价格。"), + footer(3, active=0), + ], gap=GUTTER + 8), + ] + return s + + +# -------------------------------------------------------------- 04 证据页 +# (名称, 数值, 相对水深, 是否 key)。首尾总量实心钢蓝深,中间减项走中性灰, +# 唯一的 key 项走 accent —— 一页一次强调,那一次要落在页面真正的论点上。 +# +# 减项不用 `c-ochre`:赭黄整套只出现一次,那一次给了 06 页的取舍代价。 +# §2 D7 的母题描述里写的是「减项用 shoal.ochre」,与页型清单里「06 页是唯一 +# 一次」冲突;页型清单是结构契约、母题描述是表现建议,取前者。中性灰同样满足 +# 「非 key 系列走中性阶」这条更硬的规则。 +PROFILE = [ + ("出厂毛利", "42.0", 420, "anchor"), + ("渠道返点", "6.4", 64, "plain"), + ("仓配摊销", "3.1", 31, "plain"), + ("安装返工", "11.8", 118, "key"), + ("退换保修", "2.7", 27, "plain"), + ("到手毛利", "18.0", 180, "anchor"), +] + +PROFILE_COLORS = {"anchor": "$c-steel-deep", "key": "$c-steel", + "plain": "$c-ink-faint"} + +CHART_W = 1152 +ANNOTATE_W = INNER - CHART_W - GUTTER * 2 # 480 + + +def depth_profile(): + """深度剖面条。 + + 条**不浮空**:全部从顶部那条 2px 基线向下垂,读作水深。这与业界通行的 + 浮动瀑布图不同,而且是刻意的 —— 浮动条读作「位置」,下垂条读作「深度」, + 后者与「损失 / 消耗」的语义同向,也让基线成为整张图唯一的对齐锚。 + + 数值紧贴每条的下端而不是排在图外的一行:§3.6 图表去装饰要求数值直接标在 + 图形上;而「每个数字停在自己那一档水深上」正好就是测深图的读法。 + """ + bar_w = (CHART_W - GUTTER * (len(PROFILE) - 1)) // len(PROFILE) + columns = [] + for label, value, depth, kind in PROFILE: + columns.append(col(f"{label} 列", [ + rect(ids, "剖面条", width=bar_w, height=depth, + fill=solid(PROFILE_COLORS[kind])), + text(ids, "剖面数值", value, 28, 600, + "$c-ink" if kind != "plain" else "$c-ink-soft", family=NUM, + line_height=1.2, align="center", + spacing=latin_track(value)), + text(ids, "剖面标签", label, FS_NOTE, 400, "$c-ink-faint", + family=CJK, line_height=lh(FS_NOTE), align="center"), + ], gap=8, width=bar_w, align="start")) + + bars = row("剖面列", columns, gap=GUTTER, width=CHART_W, align="start") + baseline = rect(ids, "剖面基线", width=CHART_W, height=RULE, + fill=solid("$c-ink")) + content = col("剖面内容", [baseline, bars], gap=0, width="fill_container", + height="fill_container") + + # 这里曾经画过一条「到手毛利水位」的虚线横贯全图。删掉了:每条的数值与 + # 名称停在自己那一档水深上,任何一条水平参考线都必然从某一组标签中间穿 + # 过去,读起来像给文字打了删除线。**一条划过文字的参考线比没有参考线更 + # 糟** —— 水位这件事已经由「到手毛利」那根实心条自己说清楚了。 + chart_h = RULE + max(p[2] for p in PROFILE) + 8 + 34 + 8 + 32 + shell = frame(ids, "深度剖面条", width=CHART_W, height=chart_h, + layout="none", fill=[]) + shell["children"] = [content] + return shell + + +# 每一条说明的断点都写死在文案里(§3.5 / §6.11)。当前渲染栈对 CJK 是逐字符 +# 断行、**没有标点避头尾**,交给自动折行就会出现「。」独占一行这种事故;而 +# 注解栏只有 480 宽、30px 一行放得下 16 字,正是最容易踩的那一档。 +ANNOTATIONS = [ + ("返工的钱不在财务账上", + "它记在售后工时里,\n季度报表看不见,\n年底盘账才发现。"), + ("换渠道省不下这一段", + "经销商换一轮,\n安装还是那批人。\n返点让掉两个点,返工照旧。"), +] + + +def evidence(): + blocks = [] + for index, (head, desc) in enumerate(ANNOTATIONS): + if blocks: + blocks.append(hrule()) + blocks.append(col("注解组", [ + text(ids, "注解标题", head, FS_LEDE, 600, "$c-ink", family=CJK, + line_height=lh(FS_LEDE), width=ANNOTATE_W), + text(ids, "注解说明", desc, FS_TABLE, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_TABLE, body=True), + width=ANNOTATE_W), + ], gap=8)) + + band = row("证据区", [ + depth_profile(), + col("注解栏", blocks, gap=GUTTER + 8, width=ANNOTATE_W), + ], gap=GUTTER * 2, align="start") + + s = slide("04 证据", gap=GUTTER * 2, justify="space_between") + s["content"]["children"] = [ + col("论证", [title("毛利不是被渠道拿走的\n是被返工吃掉的"), band], + gap=GUTTER * 2), + footer(4, active=1, + source="数据来源:明澜 2026 年 1–6 月工单与售后台账,单位 元/台," + "样本 626 家门店。"), + ] + return s + + +# -------------------------------------------------------------- 05 数据页 +# 列宽写死并且必须加起来等于 INNER。表格没有自动列宽,写错就溢出;而 +# §6.10「渲染栈无 tabular 数字」意味着数值列也不能靠 fit_content 指望数字 +# 自己对齐 —— 定宽 + 右对齐是今天唯一能让一列数字排齐的写法。 +TABLE_COLS = [384, 240, 300, 300, 360] +assert sum(TABLE_COLS) + GUTTER * (len(TABLE_COLS) - 1) == INNER + +TABLE_HEAD = ["区域", "门店数", "平均上门(天)", "一次装成率", "年内复购"] +TABLE_ROWS = [ + ("华东", "186", "2.4", "91%", "34%", False), + ("华南", "142", "3.1", "88%", "29%", False), + ("华北", "128", "4.6", "74%", "18%", False), + ("华中", "96", "5.2", "69%", "15%", False), + ("西南", "74", "6.8", "61%", "11%", False), + ("合计", "626", "4.1", "78%", "22%", True), +] + + +def table_row(cells, *, size, weight, color, head=False): + kids = [] + for index, (value, width) in enumerate(zip(cells, TABLE_COLS)): + first = index == 0 + kids.append(text(ids, "表头单元" if head else "表格单元", value, size, + weight, color, + family=CJK if first or head else NUM, + line_height=lh(size), width=width, + align=None if first else "right", + spacing=0 if (first or head) else + latin_track(value))) + return row("表行", kids, gap=GUTTER, align="center") + + +def data_table(): + parts = [ + table_row(TABLE_HEAD, size=26, weight=600, color="$c-ink-soft", + head=True), + # 表头下边线是这一页唯一的 accent 出现。数值一律走墨色 —— 把一整列 + # 数字染成强调色,是「用了一个强调色但它出现了十一次」那种失败。 + hrule("$c-steel", RULE), + ] + for index, (*cells, total) in enumerate(TABLE_ROWS): + parts.append(table_row(cells, size=FS_TABLE, + weight=600 if total else 400, + color="$c-ink" if total else "$c-ink-soft")) + # 末行无线。表格的最后一条线画出去,表就读作一个被框住的块而不是 + # 一列还能往下续的记录。 + if index < len(TABLE_ROWS) - 1: + parts.append(hrule()) + return col("区域表", parts, gap=GUTTER - 6) + + +def data_page(): + s = slide("05 数据", gap=GUTTER * 2, justify="space_between") + s["content"]["children"] = [ + col("论证", [title("装得快的区域,复购就没有掉过"), data_table()], + gap=GUTTER * 2), + footer(5, active=2, + source="数据来源:明澜工单系统 2026 年 1–6 月,一次装成率指首次" + "上门即完成安装并通过验收的比例。"), + ] + return s + + +# -------------------------------------------------------------- 06 取舍页 +# 两栏 7:3 的不对称。§3.6:两栏页禁止 50/50 —— 50/50 稳定但静止,不对称 +# 才产生视觉方向;这一页的方向是「证据在左、判断在右」。 +LEFT_W = 1140 +# 三个孩子(左栏 / 中缝 / 右栏)之间有**两条**沟槽,右栏宽必须把两条都扣 +# 掉。少扣一条的后果不是「差一点」,是整行宽出 24px 被判成溢出。 +RIGHT_W = INNER - LEFT_W - HAIR - GUTTER * 2 # 491 ≈ 7.0 : 3.0 + +TRADEOFFS = [ + ("自有师傅的一次装成率是 94%", + "外包队伍 68%。\n同样的培训,差别在返修要不要自己扛。"), + ("改约主要卡在配件不在车上", + "不是人手不够。\n配件调度这一段本来就在我们自己手里。"), + ("经销商并不反对我们自己装", + "他们要的是卖机器那笔返点,\n安装对他们一直是成本中心。"), +] + + +def tradeoff(): + left_items = [] + for head, desc in TRADEOFFS: + if left_items: + left_items.append(hrule()) + left_items.append(col("证据条", [ + text(ids, "证据标题", head, FS_LEDE, 600, "$c-ink", family=CJK, + line_height=lh(FS_LEDE), width=cjk_width(FS_LEDE, LEFT_W)), + text(ids, "证据说明", desc, FS_TABLE, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_TABLE, body=True), + width=cjk_width(FS_TABLE, LEFT_W)), + ], gap=8)) + + # 赭黄整套唯一的一次。给的是一条 96×4 的短线而不是一段染色文字:警戒色 + # 压到 4.00 才换来可读性,把它花在文字上就必须再论证一次对比度;而一条 + # 实心短线不承担阅读,反而更像海图上那道浅滩警戒。 + right = col("判断栏", [ + rect(ids, "警戒短线", width=96, height=4, fill=solid("$c-ochre")), + text(ids, "判断标题", "这一步的代价", FS_BODY, 600, "$c-ink", + family=CJK, line_height=lh(FS_BODY), + width=cjk_width(FS_BODY, RIGHT_W - 64)), + text(ids, "判断说明", + "自建安装要多背\n三年四千三百万固定成本。\n换来的是复购,\n不是当期毛利。", + FS_TABLE, 400, "$c-ink", family=CJK, + line_height=lh(FS_TABLE, body=True), + width=cjk_width(FS_TABLE, RIGHT_W - 64)), + ], gap=GUTTER, width=RIGHT_W, height="fill_container", + padding=[32, 32], fill=solid("$c-paper-deep")) + + band = row("取舍区", [ + col("证据栏", left_items, gap=GUTTER, width=LEFT_W), + vrule("fill_container"), + right, + ], gap=GUTTER, align="stretch") + + s = slide("06 取舍", gap=GUTTER * 2, justify="space_between") + s["content"]["children"] = [ + col("论证", [title("该换的不是经销商\n是把安装收回来自己做"), band], + gap=GUTTER * 2), + footer(6, active=3), + ] + return s + + +# -------------------------------------------------------------- 07 行动页 +ACTIONS = [ + "九月底前接管\n华南两个仓的配件调度", + "十月起在广深\n自招一百二十名安装师傅", + "年底复盘一次装成率,\n到不了九成就停", +] + + +def action(): + action_w = (INNER - GUTTER * 2 * 2) // 3 + cards = [] + for index, line in enumerate(ACTIONS, 1): + cards.append(col(f"行动 {index}", [ + text(ids, "行动序号", f"{index:02d}", FS_ITEM, 500, + "$c-steel-lift", family=NUM, line_height=lh(FS_ITEM), + spacing=latin_track("01"), width=action_w), + text(ids, "行动文案", line, FS_BODY, 500, "$c-on-navy", + family=CJK, line_height=lh(FS_BODY, body=True), + width=cjk_width(FS_BODY, action_w)), + ], gap=GUTTER - 8, width=action_w)) + + s = slide("07 行动", dark=True, gap=GUTTER * 2, justify="space_between") + s["content"]["children"] = [ + text(ids, "收束句", "先把华南的安装收回来\n再谈全国", FS_CLOSE, 700, + "$c-on-navy", family=CJK, line_height=lh(FS_CLOSE), + spacing=track(FS_CLOSE), width=INNER), + row("行动区", cards, gap=GUTTER * 2, align="start"), + col("页尾", [ + text(ids, "落款", "明澜家用水处理 · 战略办公室|2026 年 8 月 12 日", + 26, 400, "$c-on-navy-dim", family=CJK, line_height=lh(26), + width=cjk_width(26, INNER)), + footer(7, dark=True, active=4), + ], gap=GUTTER), + ] + return s + + +# 字号地板自检(§3.4)。产稿时跑一遍比渲染完看检测器报告便宜得多。 +assert_type_scale([FS_COVER, FS_TITLE, FS_CLOSE, FS_LEDE, FS_ITEM, FS_BODY, + FS_TABLE, FS_NOTE, FS_READOUT, 26, 28], + where="sounding-navy-deck") + + +def build(): + boards = [cover(), agenda(), conclusion(), evidence(), data_page(), + tradeoff(), action()] + for board in boards: + board.pop("content", None) + place_boards(boards) + # 本档零圆角:`allowed_radii` 传空集,只有正圆(航迹点)能过。约束的是 + # 圆角矩形容器 —— 圆点要圆就必须写 cornerRadius,那不是同一件事。 + return audit_document(boards, where="sounding-navy-deck", + allowed_radii=frozenset()) + + +# 对比度(WCAG 相对亮度比,实算)。deck 是投影物,自设门槛远高于 +# op-design-lint 的 2.5: +# c-ink on c-paper 14.58 c-ink-soft on c-paper 6.24 +# c-ink-faint on c-paper 3.58 ← 只承载 ≥24px 的脚注/页码/图注 +# c-ink on c-paper-deep 13.34 c-ink-soft on c-paper-deep 5.71 +# c-on-navy on c-navy 15.27 c-on-navy-dim on c-navy 8.46 +# c-steel-lift on c-navy 7.36 c-steel on c-paper 4.97 +# c-steel-deep on c-paper 9.24 c-ochre on c-paper 4.00 +# `c-ochre` 的 4.00 是刻意压出来的:初版取 L0.700 时对纸只有 2.47,一个读不清 +# 的「警戒色」是自相矛盾。本档它只用在一条实心短线上,不承担阅读。 +# `c-rule` 与剖面基线是**线不是字**(§4.4 对比豁免第 2 条),不参与对比核算。 + +if __name__ == "__main__": + write_doc(sys.argv[1], VARS, build(), "测深海图 · 咨询策略档 16:9") diff --git a/templates/step0/_generators/deck_tidemark_slate.py b/templates/step0/_generators/deck_tidemark_slate.py new file mode 100644 index 000000000..708d22f94 --- /dev/null +++ b/templates/step0/_generators/deck_tidemark_slate.py @@ -0,0 +1,689 @@ +#!/usr/bin/env python3 +"""tidemark-slate-deck.op — 潮痕石板 · 数据评审档(D8,7 页 1920×1080) + +落格:medium-high formality × **high** density × light。 +定位:把「这个周期发生了什么、相对上一个周期在哪」一次说清的评审档 —— +指标带刻度、状态有语义、路线走泳道。 + +### 锚点 + +港池的潮痕石。被反复涨落染出刻痕的石板灰、刻在石上的潮位标记、航道上的三色 +浮标。锚的是**「刻痕就是上一次的位置」**这件事 —— 评审的本质不是报数,是报 +「相对上次」。不锚海浪、船只、灯塔等任何具象物。 + +### 三个招牌母题 + +1. **潮位磁贴**(02 页)—— 四层:标签 → mono 数值 → **一条贯穿磁贴宽度的刻度 + 线,目标画成刻度上的一个位置** → 变化量 chip。目标不写成「目标:X」这行 + 字,而是画成一个位置 —— 这样「离目标多远」是被**看见**的,不是被读出来 + 的。这也是本档与通行 KPI 卡的分野所在。 +2. **航标点**(04 / 05 页)—— 严格语义的三色圆点与药丸。硬规则:**任何带航标 + 点的行必须同时有「责任人」与「到期」两列**,缺任一项就把点删掉 —— 无主的 + 状态比没有状态更糟。 +3. **潮汐泳道**(06 页)—— 左侧泳道名列 + 右侧时间区;条 = 淡蓝底 + 左端一段 + 实色;里程碑 = 旋转 45° 的方块。**里程碑与状态点必须形状可辨**,不能只靠 + 颜色区分(色觉障碍与投影衰减下颜色是最先失效的那一维)。 + +### 负约束(spec §2 D8 Strictly avoid,逐条落实) + + - 航标三色**绝不作图表系列色**,只作点与药丸。图表永远单色阶。 + - 图不用网格线、图例、y 轴刻度;数值直接标在柱端。 + - 不用饼图 / 环形图 / 3D / 渐变柱 / 阴影柱。 + - 磁贴之外零阴影(本稿更进一步:**整套零阴影** —— 磁贴与页底之间的明度差 + 已经够把它托起来,再压一层投影是替可读性买不需要的保险)。 + - 有航标点的行必须有责任人与到期。 + - 页标题写结论不写栏目名。 + - 潮痕蓝之外只有中性与三支语义色,无第二支非语义有彩色。 + - 数字一律 mono,且数值列宽写死(§6.10:渲染栈不保证 tabular 数字)。 + - 不做双色柱对照;对照走灰色影子柱。 + - 磁贴固定 4 张一行 —— 3 张留尴尬空档,5 张把 mono 64 逼到换行。 + +### 与 spec 的两处落地取舍 + + - **磁贴标签不加 letterSpacing。** spec 写「24px 大写标签 letterSpacing +2」, + 那条是给大写拉丁写的;§3.8.2 同时规定「<48px 的中文一律 0」。本档文案全 + 中文,取后者 —— 中文加正字距会把词间关系拆散。 + - **药丸高 36 / 圆角 18,不是 spec 写的 28 / 14。** 24px 中文的行盒就有 34px + 高,28 的药丸会把字压到贴边。字号地板(§3.4)比装置尺寸硬,让装置。 + +### 密度核对(§3.2,槽位按「一条要点计 1」) + + 01 封面 5/5 · 02 全景磁贴 14/16 · 03 趋势 5/8 · 04 明细表 10/14 + 05 风险 5/9 · 06 泳道 9/10 · 07 决议 5/6 + +对比度实测见文件末尾。 +""" + +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from deckkit import (CJK, H, NUM, W, assert_type_scale, audit_document, + cjk_width, dash_col, latin_track, lh, place_boards, + track) +from oplib import Ids, color_vars, frame, rect, solid, text, write_doc + +ids = Ids() + +# 色板来自 spec §2 D8(oklch 实算)。两条推导必须留下: +# · 底走 H240 冷向、chroma 只有 0.004。数据页面上任何暖底都会让数字读起来 +# 「被氛围包装过」;接近中性的冷底是唯一不干扰数值判断的底。 +# · 三支航标色**不是配色,是语义**。它们不参与「一主一辅一强调」的分配, +# 只作圆点与药丸;一旦绿柱黄柱红柱同框,语义就被稀释成分类,而分类色恰 +# 恰是我们不需要的(图表只用单色阶)。 +VARS = color_vars({ + "c-wash": "#F1F4F6", # 页面底 + "c-panel": "#E4E8EB", # 磁贴 / 卡面 + "c-rule": "#CED1D4", # 分隔线 / 表格线 + "c-ink": "#19212A", # 主文字 14.71 : wash + "c-ink-soft": "#515961", # 次级文字 6.44 + "c-ink-faint": "#737A81", # 标签 / 页码 3.94(仅 ≥24px) + "c-tide": "#006C9B", # 主 accent 5.25 + "c-tide-deep": "#004C77", # 承载白字的蓝块 8.27(白字) + "c-tide-wash": "#D6ECF9", # 图表非 key 系列 13.33(ink) + "c-buoy-green": "#35824B", # 语义:正常 4.28 + "c-buoy-amber": "#AF7100", # 语义:风险 3.67 + "c-buoy-red": "#B24037", # 语义:阻塞 5.16 +}) + +# 高密度档收窄边距,但不越过 §4.1 的 72 软线。下 > 上仍然成立(投影下沿遮挡)。 +PAD_TOP, PAD_BOTTOM, PAD_X = 88, 104, 96 +INNER = W - PAD_X * 2 # 1728 +GUTTER = 16 # 高密度档的呼吸单位比其他档小一级 +COLGAP = 24 # 列与列之间的沟槽 + +# 圆角只有两档:磁贴 8、药丸 18。写成常量是为了让「又多了一个圆角值」在 diff +# 里可数 —— §3.3 把圆角值列进不允许跨页变的一栏。 +R_TILE, R_PILL = 8, 18 + +FS_COVER = 88 # 封面主标 +FS_TITLE = 56 # 页标题(比 D7 小一档:密度高,标题必须让位给内容) +FS_LEDE = 36 # 引导句 / 注解标题 / 风险条标题 +FS_VALUE = 64 # 磁贴数值(mono) +FS_BODY = 32 # 决议正文 +FS_TABLE = 28 # 表格正文 / 表头 / 风险说明 +FS_META = 26 # 磁贴副行 / 说明 +FS_NOTE = 24 # 标签 / 来源 / 页码 + +DECK_LABEL = "合章电子签 · 2026 Q2 业务评审" + + +# ------------------------------------------------------------------ 骨架 +def slide(name, *, gap=COLGAP, justify="start"): + body = frame(ids, f"{name} · 正文", width="fill_container", + height="fill_container", layout="vertical", + padding=[PAD_TOP, PAD_X, PAD_BOTTOM, PAD_X], gap=gap, + justifyContent=justify, alignItems="start", fill=[]) + body["children"] = [] + shell = frame(ids, name, width=W, height=H, layout="none", + fill=solid("$c-wash"), clipContent=True) + shell["children"] = [body] + shell["content"] = body + return shell + + +def col(name, children, *, gap=GUTTER, width="fill_container", + height="fit_content", align="start", fill=None, **props): + node = frame(ids, name, width=width, height=height, layout="vertical", + gap=gap, alignItems=align, fill=fill or [], **props) + node["children"] = children + return node + + +def row(name, children, *, gap=COLGAP, width="fill_container", + height="fit_content", align="start", fill=None, **props): + node = frame(ids, name, width=width, height=height, layout="horizontal", + gap=gap, alignItems=align, fill=fill or [], **props) + node["children"] = children + return node + + +def hrule(color="$c-rule", thickness=1, width="fill_container"): + """横线用 rectangle,不用 `line`(§6.3:line 在 layout:none 下吃绝对坐标)。""" + return rect(ids, "横线", width=width, height=thickness, fill=solid(color)) + + +def title(content): + return text(ids, "页标题", content, FS_TITLE, 700, "$c-ink", family=CJK, + line_height=lh(FS_TITLE), spacing=track(FS_TITLE), width=INNER) + + +def note(content): + return text(ids, "来源脚注", content, FS_NOTE, 400, "$c-ink-faint", + family=CJK, line_height=lh(FS_NOTE), + width=cjk_width(FS_NOTE, INNER)) + + +def footer(page): + """页脚家具。§3.3 把页码位置列进不允许跨页变的一栏,02–07 的 y 完全相同。""" + left = text(ids, "页脚眉标", DECK_LABEL, FS_NOTE, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=lh(FS_NOTE)) + folio = text(ids, "页码", f"{page:02d} / 07", FS_NOTE, 500, "$c-ink-faint", + family=NUM, width="fit_content", growth="auto", + line_height=lh(FS_NOTE), spacing=latin_track("07")) + return row("页脚", [left, folio], gap=COLGAP, align="center", + justifyContent="space_between") + + +def buoy_dot(color, size=12): + return rect(ids, "航标点", width=size, height=size, + cornerRadius=size // 2, fill=solid(color)) + + +def buoy_pill(label, color): + """航标药丸。高 36 / 圆角 18 —— 24px 中文的行盒就有 34px 高,spec 写的 + 28 会把字压到贴边。字号地板比装置尺寸硬,让装置。""" + node = frame(ids, "航标药丸", width="fit_content", height=36, + layout="horizontal", padding=[0, 16], gap=0, + cornerRadius=R_PILL, alignItems="center", + justifyContent="center", fill=solid(color)) + node["children"] = [ + text(ids, "航标文字", label, FS_NOTE, 600, "$c-wash", family=CJK, + width="fit_content", growth="auto", line_height=1.2), + ] + return node + + +# ------------------------------------------------------------------ 01 封面 +def cover(): + chip = frame(ids, "周期标记", width="fit_content", height="fit_content", + layout="horizontal", padding=[8, 16], gap=0, + cornerRadius=R_TILE, alignItems="center", + justifyContent="center", fill=solid("$c-tide-wash")) + chip["children"] = [ + text(ids, "周期文字", "2026 Q2", FS_NOTE, 600, "$c-tide-deep", + family=NUM, width="fit_content", growth="auto", line_height=1.3, + spacing=latin_track("2026 Q2")), + ] + + lede = col("主张", [ + text(ids, "主标题", "签得多了\n但签得更慢了", FS_COVER, 700, "$c-ink", + family=CJK, line_height=lh(FS_COVER), spacing=track(FS_COVER), + width=INNER), + text(ids, "范围说明", "本次评审覆盖企业版四条业务线,数据截至 6 月 30 日。", + FS_BODY, 400, "$c-ink-soft", family=CJK, + line_height=lh(FS_BODY, body=True), + width=cjk_width(FS_BODY, INNER)), + ], gap=COLGAP) + + # 一条潮痕:整幅横线 + 一段实色刻痕。封面唯一的非文字元素,也是把「刻痕 + # 就是上一次的位置」这个锚点先说一遍 —— 后面每一张磁贴都在重复它。 + tide_mark = rect(ids, "潮痕刻度", width=220, height=4, fill=solid("$c-tide")) + tide_mark["x"], tide_mark["y"] = 1040, 0 + line = rect(ids, "潮痕底线", width=INNER, height=2, fill=solid("$c-rule")) + line["x"], line["y"] = 0, 1 + tide = frame(ids, "潮痕", width=INNER, height=4, layout="none", fill=[]) + tide["children"] = [tide_mark, line] + + meta = row("落款", [ + text(ids, "汇报人", "增长与运营部 · 周砚", FS_META, 500, "$c-ink-soft", + family=CJK, width="fit_content", growth="auto", + line_height=lh(FS_META)), + text(ids, "日期", "2026.07.09", FS_META, 500, "$c-ink-faint", + family=NUM, width="fit_content", growth="auto", + line_height=lh(FS_META), spacing=latin_track("2026.07.09")), + ], gap=COLGAP, align="center", justifyContent="space_between") + + s = slide("01 封面", gap=COLGAP, justify="space_between") + s["content"]["children"] = [chip, lede, col("页尾", [tide, meta], + gap=COLGAP)] + return s + + +# -------------------------------------------------------------- 02 全景磁贴 +# (标签, 数值, 变化, 比较词, 语义, 实际占比, 目标占比) +# 占比是刻度线上的位置,不是数值本身 —— 四个指标量纲不同,能同框比较的只有 +# 「离目标多远」这一件事,所以刻度线量的是它。 +TILES = [ + ("季度签署量(万份)", "18.6", "+31%", "对比上季", "green", 0.78, 0.83), + ("平均签署时长(小时)", "6.4", "+0.9", "比上季更慢", "amber", 0.80, 0.50), + ("一次签成率", "91.2%", "+1.8", "个百分点", "green", 0.91, 0.93), + ("已上线集成(个)", "11", "-7", "低于目标", "red", 0.55, 0.90), +] + +BUOY = {"green": "$c-buoy-green", "amber": "$c-buoy-amber", + "red": "$c-buoy-red"} + +TILE_W = (INNER - COLGAP * 3) // 4 # 414 +TILE_PAD = 28 +TILE_INNER = TILE_W - TILE_PAD * 2 # 358 +TILE_H = 360 + + +def tidemark_scale(value_ratio, target_ratio): + """潮位刻度线:底线 + 已达段 + 目标竖标。 + + §6.4:`layout:none` 的 children[0] 在**最上**(与业界惯例相反)。目标竖标 + 必须压在已达段与底线之上,所以它写在数组第一个 —— 写反了目标就被自己的 + 进度条盖掉,而「离目标多远」正是这个装置存在的全部理由。 + """ + mark = rect(ids, "目标刻痕", width=3, height=14, + fill=solid("$c-tide-deep")) + mark["x"] = round(target_ratio * (TILE_INNER - 3), 2) + mark["y"] = 0 + reached = rect(ids, "已达段", width=round(value_ratio * TILE_INNER, 2), + height=2, fill=solid("$c-tide")) + reached["x"], reached["y"] = 0, 6 + base = rect(ids, "刻度底线", width=TILE_INNER, height=2, + fill=solid("$c-rule")) + base["x"], base["y"] = 0, 6 + node = frame(ids, "潮位刻度", width=TILE_INNER, height=14, layout="none", + fill=[]) + node["children"] = [mark, reached, base] + return node + + +def tidemark_tile(label, value, delta, word, semantic, value_ratio, + target_ratio): + chip = row("变化 chip", [ + buoy_dot(BUOY[semantic]), + text(ids, "变化数值", delta, FS_META, 600, "$c-ink", family=NUM, + width="fit_content", growth="auto", line_height=1.3, + spacing=latin_track(delta)), + text(ids, "比较词", word, FS_META, 400, "$c-ink-soft", family=CJK, + width="fit_content", growth="auto", line_height=1.3), + ], gap=10, width="fit_content", align="center") + + reading = col("读数", [ + text(ids, "磁贴数值", value, FS_VALUE, 700, "$c-ink", family=NUM, + line_height=1.05, spacing=latin_track(value, 0)), + tidemark_scale(value_ratio, target_ratio), + ], gap=GUTTER + 4, width=TILE_INNER) + + # 三段分布而不是顺序堆叠:标签钉在顶、读数居中、变化量钉在底。四张贴子的 + # 三条基线因此跨贴对齐,扫一行就能横着比 —— 这是把「列对齐」这条本档承诺 + # 从表格延伸到磁贴。 + return col("潮位磁贴", [ + text(ids, "磁贴标签", label, FS_NOTE, 500, "$c-ink-soft", family=CJK, + line_height=lh(FS_NOTE)), + reading, + chip, + ], gap=GUTTER, width=TILE_W, height=TILE_H, justifyContent="space_between", + padding=[TILE_PAD, TILE_PAD], cornerRadius=R_TILE, + fill=solid("$c-panel")) + + +def overview(): + s = slide("02 全景磁贴", gap=COLGAP * 2, justify="space_between") + s["content"]["children"] = [ + title("签署量涨了三成,签完的时间也一起涨了"), + row("磁贴行", [tidemark_tile(*t) for t in TILES], gap=COLGAP, + align="stretch"), + col("页尾", [ + note("数据来源:合章数据平台,口径为企业版付费租户," + "2026 年 4 月 1 日至 6 月 30 日。"), + footer(2), + ], gap=GUTTER), + ] + return s + + +# -------------------------------------------------------------- 03 趋势页 +# 单色阶:只有 key 那两根走 accent,其余走 tide.wash。**不做双色柱对照** —— +# 一旦出现第二支彩色,读者会去找「这两个颜色分别代表什么」,而这张图要说的 +# 只有一件事:最后两个月在加速。 +TREND = [("一月", "2.4", 258, False), ("二月", "2.9", 312, False), + ("三月", "2.7", 291, False), ("四月", "3.2", 345, False), + ("五月", "3.4", 366, True), ("六月", "3.9", 420, True)] + +CHART_W = 1240 +ANNOTATE_W = INNER - CHART_W - COLGAP * 2 # 440 + + +def trend_chart(): + bar_w = (CHART_W - COLGAP * (len(TREND) - 1)) // len(TREND) + bars = [] + for label, value, height, key in TREND: + bars.append(col(f"{label} 柱", [ + # 数值直接标在柱端,不做 y 轴、不做网格线、不做图例(§3.6)。 + text(ids, "柱值", value, FS_META, 600, + "$c-ink" if key else "$c-ink-soft", family=NUM, + line_height=1.2, align="center", spacing=latin_track(value)), + rect(ids, "月柱", width=bar_w, height=height, + fill=solid("$c-tide" if key else "$c-tide-wash")), + text(ids, "月份", label, FS_NOTE, 400, "$c-ink-faint", family=CJK, + line_height=lh(FS_NOTE), align="center"), + ], gap=8, width=bar_w, align="center", justifyContent="end", + height="fill_container")) + return row("趋势柱图", bars, gap=COLGAP, width=CHART_W, + height=420 + 34 + 36 + 16, align="end") + + +TREND_NOTES = [ + ("中小客户是自己找上门的", "六月新签里 71% 没有销售触达,\n来自模板市场与搜索。"), + ("大客户的量卡在集成上", "两家头部客户的用印审批\n还在他们自己的 OA 里。"), +] + + +def trend(): + blocks = [] + for head, desc in TREND_NOTES: + if blocks: + blocks.append(hrule()) + blocks.append(col("注解组", [ + text(ids, "注解标题", head, FS_LEDE, 600, "$c-ink", family=CJK, + line_height=lh(FS_LEDE), width=ANNOTATE_W), + text(ids, "注解说明", desc, FS_META, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_META, body=True), + width=ANNOTATE_W), + ], gap=8)) + + s = slide("03 趋势", gap=COLGAP * 2, justify="space_between") + s["content"]["children"] = [ + col("论证", [ + title("签署量每个月都在涨,涨的全是中小客户"), + row("趋势区", [trend_chart(), + col("注解栏", blocks, gap=COLGAP, + width=ANNOTATE_W)], + gap=COLGAP * 2, align="start"), + ], gap=COLGAP * 2), + col("页尾", [ + note("数据来源:合章数据平台,按签署完成时间归月,单位 万份。"), + footer(3), + ], gap=GUTTER), + ] + return s + + +# -------------------------------------------------------------- 04 明细表 +# 列宽写死并且必须加起来等于 INNER。§6.10:渲染栈不保证 tabular 数字,日期列 +# 与状态列都靠定宽站住,不能指望 fit_content 让它们自己对齐。 +DETAIL_COLS = [420, 200, 220, 220, 572] +assert sum(DETAIL_COLS) + COLGAP * (len(DETAIL_COLS) - 1) == INNER + +DETAIL_HEAD = ["集成对象", "状态", "责任人", "到期", "当前卡点"] +# 母题 2 的硬规则:**带航标点的行必须同时有责任人与到期**。这张表的四列结构 +# 就是那条规则的物理形态 —— 缺任一列,这一行的状态就是无主的。 +DETAIL_ROWS = [ + ("钉钉待办同步", "正常", "green", "陆迎", "07-18", "联调已过,等对方发版"), + ("企业微信审批", "正常", "green", "陆迎", "07-25", "灰度中,两家客户在跑"), + ("金蝶云星空", "风险", "amber", "沈知白", "07-11", "对方接口文档改了三次"), + ("用友 U8C", "风险", "amber", "沈知白", "07-04", "已逾期一周,等对方排期"), + ("飞书多维表", "正常", "green", "高见", "08-08", "需求已确认,尚未开工"), + ("泛微 OA", "阻塞", "red", "高见", "06-20", "对方要求私有化部署"), + ("致远 A8", "阻塞", "red", "关屿", "06-27", "客户侧改了用印流程"), +] + + +def detail_table(): + head = row("表头", [ + text(ids, "表头单元", label, FS_TABLE, 600, "$c-ink-soft", family=CJK, + line_height=lh(FS_TABLE), width=width) + for label, width in zip(DETAIL_HEAD, DETAIL_COLS) + ], gap=COLGAP, align="center") + + parts = [head, hrule("$c-tide", 2)] + for index, (name, state, semantic, owner, due, blocker) in enumerate( + DETAIL_ROWS): + status = row("状态单元", [ + buoy_dot(BUOY[semantic]), + text(ids, "状态文字", state, FS_TABLE, 500, "$c-ink", family=CJK, + width="fit_content", growth="auto", line_height=lh(FS_TABLE)), + ], gap=10, width=DETAIL_COLS[1], align="center") + parts.append(row("表行", [ + text(ids, "集成名", name, FS_TABLE, 500, "$c-ink", family=CJK, + line_height=lh(FS_TABLE), width=DETAIL_COLS[0]), + status, + text(ids, "责任人", owner, FS_TABLE, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_TABLE), width=DETAIL_COLS[2]), + text(ids, "到期", due, FS_TABLE, 500, "$c-ink-soft", family=NUM, + line_height=lh(FS_TABLE), width=DETAIL_COLS[3], + spacing=latin_track(due)), + text(ids, "卡点", blocker, FS_TABLE, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_TABLE), width=DETAIL_COLS[4]), + ], gap=COLGAP, align="center")) + # 末行无线:最后一条线画出去,表就读作一个被框住的块,而不是一列还能 + # 往下续的记录。 + if index < len(DETAIL_ROWS) - 1: + parts.append(hrule()) + return col("集成明细", parts, gap=GUTTER - 4) + + +def detail(): + s = slide("04 明细表", gap=COLGAP * 2, justify="space_between") + s["content"]["children"] = [ + col("论证", [title("十一个集成里,四个已经逾期"), detail_table()], + gap=COLGAP * 2), + col("页尾", [ + note("数据来源:集成交付看板,状态截至 7 月 8 日 18:00。"), + footer(4), + ], gap=GUTTER), + ] + return s + + +# -------------------------------------------------------------- 05 风险页 +RISK_STATE_W = 140 +RISK_TEXT_W = 1180 + +RISKS = [ + ("阻塞", "red", "两家 OA 厂商要求私有化部署", + "涉及四家年费合计两千四百万的客户,都在等这条。", + "八月前给出私有化版本的报价与交付边界。", "关屿", "08-15"), + ("风险", "amber", "平均签署时长从 4.1 小时涨到 6.4", + "投诉集中在等对方签,不在我们这一段。", + "九月上线到期提醒与代签授权,先在华东试。", "周砚", "09-30"), + ("风险", "amber", "模板市场的增长没有人守", + "六月 71% 的新签来自这里,但它没有归属团队。", + "七月内定归属,先归运营,季度末重评。", "周砚", "07-31"), +] + + +def risk(): + items = [] + for state, semantic, head, impact, plan, owner, due in RISKS: + if items: + items.append(hrule()) + # 责任人与到期紧跟航标点,同一行右端 —— 母题 2 的硬规则在这一页的形态。 + owner_line = row("归属", [ + text(ids, "责任人", owner, FS_META, 500, "$c-ink-soft", + family=CJK, width="fit_content", growth="auto", + line_height=lh(FS_META)), + text(ids, "到期", due, FS_META, 500, "$c-ink-faint", family=NUM, + width="fit_content", growth="auto", line_height=lh(FS_META), + spacing=latin_track(due)), + ], gap=GUTTER, width="fit_content", align="center") + + items.append(row("风险条", [ + col("状态列", [buoy_pill(state, BUOY[semantic])], gap=0, + width=RISK_STATE_W), + col("风险文案", [ + text(ids, "风险标题", head, FS_LEDE, 600, "$c-ink", + family=CJK, line_height=lh(FS_LEDE), + width=cjk_width(FS_LEDE, RISK_TEXT_W)), + text(ids, "风险影响", impact, FS_TABLE, 400, "$c-ink-soft", + family=CJK, line_height=lh(FS_TABLE, body=True), + width=cjk_width(FS_TABLE, RISK_TEXT_W)), + text(ids, "风险应对", plan, FS_TABLE, 400, "$c-ink", + family=CJK, line_height=lh(FS_TABLE, body=True), + width=cjk_width(FS_TABLE, RISK_TEXT_W)), + ], gap=8, width=RISK_TEXT_W), + col("归属列", [owner_line], gap=0, width="fill_container", + align="end"), + ], gap=COLGAP, align="start")) + + s = slide("05 风险", gap=COLGAP * 2, justify="space_between") + s["content"]["children"] = [ + col("论证", [title("三个风险,两个我们自己能解"), + col("风险列表", items, gap=COLGAP + 16)], gap=COLGAP * 2), + footer(5), + ] + return s + + +# -------------------------------------------------------------- 06 泳道路线 +LANE_NAME_W = 200 +LANE_TIME_W = INNER - LANE_NAME_W - COLGAP # 1504 +LANE_H = 56 +BAR_H = 40 +MONTHS = ["七月", "八月", "九月"] +# (泳道名, 起点, 终点, 里程碑) —— 比例是相对整个季度的位置。 +LANES = [ + ("集成交付", 0.00, 0.83, 0.66), + ("私有化版本", 0.16, 1.00, 0.97), + ("签署提速", 0.33, 1.00, 0.72), + ("模板市场归属", 0.00, 0.44, 0.41), +] + + +def lane_track(start, end, milestone): + """一条泳道。 + + 条用 frame 而不是 rectangle:左端那 6px 实色段是**子节点**,而 + §6.13「rectangle 是容器但不递归渲染子节点」意味着放进 rect 里的东西不会 + 显示。clipContent 让实色段跟着圆角收边。 + + 月份分隔用一串短 rectangle 拼的虚线(§6.1:`dashPattern` 是死字段)。 + 里程碑是旋转 45° 的方块而不是圆点:**里程碑与状态点必须形状可辨**,不能 + 只靠颜色 —— 颜色是投影衰减与色觉障碍下最先失效的那一维。 + """ + bar_x = round(start * LANE_TIME_W, 2) + bar_w = round((end - start) * LANE_TIME_W, 2) + bar = frame(ids, "泳道条", width=bar_w, height=BAR_H, layout="horizontal", + gap=0, cornerRadius=R_TILE, clipContent=True, + fill=solid("$c-tide-wash")) + bar["children"] = [rect(ids, "起点段", width=6, height=BAR_H, + fill=solid("$c-tide"))] + bar["x"], bar["y"] = bar_x, (LANE_H - BAR_H) / 2 + + flag = rect(ids, "里程碑", width=16, height=16, rotation=45, + fill=solid("$c-tide-deep")) + flag["x"] = round(milestone * LANE_TIME_W - 8, 2) + flag["y"] = (LANE_H - 16) / 2 + + kids = [flag, bar] + for index in (1, 2): + dash = dash_col(rect, ids, "月份分隔", "$c-rule", length=LANE_H) + dash["x"] = round(index * LANE_TIME_W / 3, 2) + dash["y"] = 0 + kids.append(dash) + + cell = frame(ids, "泳道时间区", width=LANE_TIME_W, height=LANE_H, + layout="none", fill=[]) + cell["children"] = kids + return cell + + +def roadmap(): + month_w = (LANE_TIME_W - GUTTER * 2) // 3 + months = row("月份头", [ + frame(ids, "月份头占位", width=LANE_NAME_W, height=1, layout="none", + fill=[]), + row("月份标签", [ + text(ids, "月份名", label, FS_NOTE, 500, "$c-ink-faint", + family=CJK, line_height=lh(FS_NOTE), width=month_w, + align="center") + for label in MONTHS + ], gap=GUTTER, width=LANE_TIME_W), + ], gap=COLGAP, align="center") + + lanes = [] + for name, start, end, milestone in LANES: + lanes.append(row("泳道", [ + text(ids, "泳道名", name, FS_META, 500, "$c-ink", family=CJK, + line_height=lh(FS_META), width=LANE_NAME_W), + lane_track(start, end, milestone), + ], gap=COLGAP, align="center")) + + flag = rect(ids, "图例里程碑", width=16, height=16, rotation=45, + fill=solid("$c-tide-deep")) + sample = frame(ids, "图例条", width=48, height=20, layout="horizontal", + gap=0, cornerRadius=R_TILE, clipContent=True, + fill=solid("$c-tide-wash")) + sample["children"] = [rect(ids, "图例起点段", width=6, height=20, + fill=solid("$c-tide"))] + legend = row("图例", [ + sample, + text(ids, "图例文字", "进行中", FS_NOTE, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=lh(FS_NOTE)), + frame(ids, "图例间隔", width=24, height=1, layout="none", fill=[]), + flag, + text(ids, "图例文字", "里程碑", FS_NOTE, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=lh(FS_NOTE)), + ], gap=12, width="fit_content", align="center") + + s = slide("06 泳道路线", gap=COLGAP * 2, justify="space_between") + s["content"]["children"] = [ + title("三季度只做三件事,其余往后放"), + col("泳道区", [months] + lanes, gap=COLGAP), + col("页尾", [legend, footer(6)], gap=COLGAP), + ] + return s + + +# -------------------------------------------------------------- 07 决议页 +DECISIONS = [ + ("私有化版本做不做,\n做到什么边界", "关屿", "07-12"), + ("模板市场归运营\n还是归产品", "周砚", "07-12"), + ("两家逾期集成\n是否换供应商", "沈知白", "07-19"), +] + + +def resolution(): + card_w = (INNER - COLGAP * 2) // 3 + cards = [] + for line, owner, due in DECISIONS: + cards.append(col("待决事项", [ + hrule("$c-tide", 2, width=card_w), + text(ids, "决议", line, FS_BODY, 600, "$c-ink", family=CJK, + line_height=lh(FS_BODY, body=True), + width=cjk_width(FS_BODY, card_w)), + row("决策归属", [ + text(ids, "决策人", owner, FS_META, 500, "$c-ink-soft", + family=CJK, width="fit_content", growth="auto", + line_height=lh(FS_META)), + text(ids, "期限", due, FS_META, 500, "$c-ink-faint", + family=NUM, width="fit_content", growth="auto", + line_height=lh(FS_META), spacing=latin_track(due)), + ], gap=GUTTER, width="fit_content", align="center"), + ], gap=COLGAP, width=card_w)) + + s = slide("07 决议", gap=COLGAP * 2, justify="space_between") + s["content"]["children"] = [ + title("这三件今天要定,定不了就带走"), + row("待决区", cards, gap=COLGAP, align="start"), + col("页尾", [ + text(ids, "收束句", "下个季度的增长在集成上,不在获客上。", + FS_LEDE, 500, "$c-ink-soft", family=CJK, + line_height=lh(FS_LEDE, body=True), + width=cjk_width(FS_LEDE, INNER)), + footer(7), + ], gap=COLGAP), + ] + return s + + +assert_type_scale([FS_COVER, FS_TITLE, FS_LEDE, FS_VALUE, FS_BODY, FS_TABLE, + FS_META, FS_NOTE], where="tidemark-slate-deck") + + +def build(): + boards = [cover(), overview(), trend(), detail(), risk(), roadmap(), + resolution()] + for board in boards: + board.pop("content", None) + place_boards(boards) + # 本档只批准两个圆角值:磁贴 8、药丸 18。多出第三个就说明有人又发明了一 + # 档,§3.3 把圆角值列进「不允许跨页变」的一栏,这里是那条的执行点。 + return audit_document(boards, where="tidemark-slate-deck", + allowed_radii={R_TILE, R_PILL}) + + +# 对比度(WCAG 相对亮度比,实算): +# c-ink on c-wash 14.71 c-ink on c-panel 13.19 +# c-ink-soft on c-wash 6.44 c-ink-soft on c-panel 5.77 +# c-ink-faint on c-wash 3.94 ← 只承载 ≥24px 的标签/来源/页码 +# c-tide on c-wash 5.25 c-ink on c-tide-wash 13.33 +# c-wash on c-buoy-green 4.27 c-wash on c-buoy-amber 4.05 +# c-wash on c-buoy-red 5.70 +# 琥珀从 L0.660 压到 L0.600 换来 3.67 : wash —— 一支只在色相上成立、明度上读 +# 不清的语义色,在色觉障碍与投影衰减下会整支失效。药丸上它承载的是反白文字, +# 那一对是 4.05。 +# `c-rule` 与刻度底线是**线不是字**(§4.4 对比豁免第 2 条),不参与对比核算。 + +if __name__ == "__main__": + write_doc(sys.argv[1], VARS, build(), "潮痕石板 · 数据评审档 16:9") diff --git a/templates/step0/_generators/deckkit.py b/templates/step0/_generators/deckkit.py new file mode 100644 index 000000000..523f318c0 --- /dev/null +++ b/templates/step0/_generators/deckkit.py @@ -0,0 +1,327 @@ +"""D7/D8 两套 deck 的共享度量层 —— 画幅、板位、字阶行高、CJK 行长、虚线。 + +来源是 `openpencil-docs/openpencil/generation/deck-system-0809.md` 的 §3 +(deck 通用契约)与 §6(工程约束移交)。cardlib 是卡片体系的度量层、只被 +tpl_*_card.py 引用;这一层是 **deck 体系专用**,只被 deck_*.py 引用。两者 +都建在 oplib 的节点构造层之上,互不依赖。 + +把它单独拆出来而不是各自抄一遍,是因为 §3 的三条铁律里有两条(字号地板、 +CJK 行长)是**算出来的数**而不是记住的数:抄第二遍就会有第二个版本。 + +### spec 的两处算术需要说明 + +§2 通用前提写「D7 12 列 × 128 + 11 沟槽 × 24 = 1680」与「D8 12 列 × 132 + +11 沟槽 × 24 = 1728」。两式都不自洽(12×128+264 = 1800、12×132+264 = 1848)。 +可信的是**内容宽**(由边距推出:1920−240 = 1680、1920−192 = 1728)与**沟槽 +24**,列宽是被这两个数推出来的余数:D7 col = (1680−264)/12 = 118,D8 col = +(1728−264)/12 = 122。本文件按内容宽与沟槽算列,不用 spec 写的列宽字面值。 +""" + +# ---------------------------------------------------------------- 画幅与板位 +# +# 1920×1080 固定舞台。投影比例是硬约束,任何一页 fit_content 都会让这套 deck +# 在放映时变成不同尺寸的纸。 +W, H = 1920, 1080 + +# §6.15:3 板一行,x 步长 2040、y 步长 1440。y 步长比 x 多 240 不是手滑 —— +# 画布在帧上方以**屏幕空间**固定偏移画帧名,deck 缩到能整屏看时 120 文档像素 +# 只剩十几个屏幕像素,第二行的帧名会压到上一行的板上。 +BOARDS_PER_ROW = 3 +BOARD_STRIDE_X = 2040 +BOARD_STRIDE_Y = 1440 + +CJK = "Noto Sans SC" +NUM = "Inter" + + +def place_boards(boards): + """给每页写死 x/y。 + + 顶层 frame 缺 x/y 时全部落在原点,七页会叠成一页、另外六页藏在下面。 + """ + for index, board in enumerate(boards): + board["x"] = (index % BOARDS_PER_ROW) * BOARD_STRIDE_X + board["y"] = (index // BOARDS_PER_ROW) * BOARD_STRIDE_Y + return boards + + +# ---------------------------------------------------------------- 行高 +# +# §3.5 的行高按**字号**分段,不按「标题/正文」分类 —— 这正是 §5.3 C1 要修的 +# 那处语料冲突:1.3–1.4 对 24–40px 的界面标题正确,对 88–116px 的 deck +# display 会撑出一整行的空洞。 +LH_DISPLAY_XL = 1.08 # ≥88px +LH_DISPLAY = 1.12 # 64–87px +LH_TITLE = 1.20 # 48–63px +LH_SUBTITLE = 1.35 # 40–47px +LH_BODY = 1.75 # CJK 正文(西文 1.5–1.6 → 中文 +0.2) +LH_NOTE = 1.50 # 注释 / 来源 / 页码 + + +def lh(size, *, body=False): + """按字号取行高。`body=True` 表示这块是成段中文,走 1.75 而不是标签行高。""" + if size >= 88: + return LH_DISPLAY_XL + if size >= 64: + return LH_DISPLAY + if size >= 48: + return LH_TITLE + if size >= 40: + return LH_SUBTITLE + if body: + return LH_BODY if size >= 28 else LH_NOTE + return 1.40 + + +# ---------------------------------------------------------------- 字距 +# +# §3.8.2:我们的 schema 里 letterSpacing 是 **px 绝对值不是 em**。 +# <48px 一律 0,绝不为负 —— 负字距在 CJK 正文上直接让字面相撞。 +# ≥64px 允许 round(fontSize × -0.02),且不得更负。 +# 大写拉丁小标签(不含汉字)允许 +1~+2 的正字距;含汉字的一律 0。 +DISPLAY_TRACK = -0.02 + + +def track(size): + """display 档的负字距。48–63px 落在两条规则之间,取 0(保守侧)。""" + return round(size * DISPLAY_TRACK) if size >= 64 else 0 + + +def latin_track(content, value=1.0): + """纯拉丁/数字小标签才给正字距;混了汉字就归零。""" + return value if all(ch < "⺀" for ch in content) else 0 + + +# ---------------------------------------------------------------- CJK 行长 +# +# §3.8.3:CJK 正文每行 ≤30 汉字。1680 的内容宽在 32px 字号下是 52 字/行, +# **远超舒适区** —— 所以正文块必须自己收窄,不能因为容器有那么宽就排那么宽。 +# 这是本体系里唯一一条「容器宽 ≠ 文本宽」的硬规则。 +CJK_MAX_CHARS = 30 + + +def cjk_width(size, cap=None): + """给定字号下,一行不超过 30 汉字的最大文本宽。`cap` 是容器给的上限。""" + limit = size * CJK_MAX_CHARS + return min(limit, cap) if cap else limit + + +# ---------------------------------------------------------------- 字号地板 +# +# §3.4 的硬 FAIL 线。这里只做断言用 —— 产稿时把每一个字号过一遍,比渲染完 +# 再看检测器报告便宜得多。 +FONT_HARD_FLOOR = 20 +FONT_WARN_FLOOR = 28 +DECK_MIN_MAX_FONT = 60 + + +def assert_type_scale(sizes, *, where): + """字号地板自检:任何 <20 直接抛;全 deck 最大字号 <60 也抛。 + + 「全 deck 最大字号 <60」查的不是某一个节点,是**层级缺失** —— 一份连一个 + 60px 以上标题都没有的 deck,说明它被平铺成了文档。 + """ + for size in sizes: + if size < FONT_HARD_FLOOR: + raise ValueError(f"{where}: {size}px < {FONT_HARD_FLOOR} 硬地板") + if max(sizes) < DECK_MIN_MAX_FONT: + raise ValueError(f"{where}: 最大字号 {max(sizes)} < {DECK_MIN_MAX_FONT}") + body = min(s for s in sizes if s >= FONT_WARN_FLOOR) + if max(sizes) < body * 2.5: + raise ValueError(f"{where}: 最大字号 {max(sizes)} < 2.5 × 正文 {body}") + return sizes + + +# ---------------------------------------------------------------- 虚线 +# +# §6.1:`dashPattern` 是死字段,schema 里有、渲染栈不认。写了只会得到一条实线 +# 或者什么都没有。所有虚线必须用**一串短 rectangle** 拼。 +# +# 拼法用 flex 而不是绝对坐标:一串等距短段正好是「gap 固定的一行/一列」, +# 交给布局算比自己写 N 个 x 少一个出错面。横向那一版按需再加:本批只有 +# D8 的月份分隔用得上竖虚线。 + + +def dash_col(rect_fn, ids, name, color, *, length, dash=8, gap=6, + thickness=1): + """竖直虚线:一列等距短段,交给 flex 排。""" + from oplib import frame, solid + count = max(1, (length + gap) // (dash + gap)) + node = frame(ids, name, width="fit_content", height="fit_content", + layout="vertical", gap=gap, alignItems="center", fill=[]) + node["children"] = [ + rect_fn(ids, f"{name} · 段", width=thickness, height=dash, + fill=solid(color)) + for _ in range(count) + ] + return node + + +# ---------------------------------------------------------------- 产稿期自检 +# +# 这一节是把「事后 grep 核对负约束」提前成**生成期断言**。差别不在勤快: +# grep 是一次性的,改一句文案没人会重跑;断言挂在 build() 上,任何一次改稿 +# 都必须先过它。同理,CJK 折行也不该等 cjkreal 闸来报 —— 闸要跑 MCP、要渲染, +# 一轮几十秒;同一个折行模型写进这里,改文案当场就红。 +# +# 三条判据的来源: +# · 负约束 spec §2 各档 Strictly avoid + §3.7 的 AI-slop 清单 +# · 折行模型 qa/cjkcheck.py(每行容量 = 文本宽 // 字号,同时试 per 与 per+1) +# · 字距/字族 §3.8 + +NO_LINE_START = ",。、;:?!)」』】》〉·…—" +ALLOWED_FAMILIES = {"Noto Sans SC", "Inter"} +# 「汉字占比 <0.6 就不按 1em/字 估」与 cjkcheck 同口径:拉丁半宽,混排串按 +# 全宽算会得到一堆假阳性。 +CJK_RATIO_GATE = 0.6 + + +def _flatten(node, out): + if isinstance(node, dict): + out.append(node) + for kid in node.get("children") or []: + _flatten(kid, out) + elif isinstance(node, list): + for kid in node: + _flatten(kid, out) + return out + + +def _char_em(ch): + """一个字符占几个 em。 + + cjkcheck 按「1em 一个字」估,那是**故意保守**的:它是闸的第一道,宁可多 + 报也不漏,误报再交给 cjkreal 用真实渲染高度筛掉(gate.sh 记的实测是 13 报 + → 11 真)。产稿期这道断言不能这么干 —— 它会在中英混排的句子上无差别拦 + 人,逼着为一个并不存在的折行去改文案。 + + 所以这里按真实字宽建模:CJK 全宽、拉丁与数字约半宽。U+2E80 以下走 0.55, + 以上(含 U+FF0C 这类全角标点)走 1.0。 + """ + return 0.55 if ch < "⺀" else 1.0 + + +def _wrap(content, width_em): + """按字宽贪心折行,显式 \\n 强制断行。返回 [(行, 是否引擎折的)]。 + + `soft` 这一位是关键:作者写 \\n 让某几个字独占一行是版式意图,引擎把 + 「。」甩到下一行才是事故。孤字规则只对 soft 行成立。 + """ + lines = [] + for hard in content.split("\n"): + if not hard: + lines.append(("", False)) + continue + line, used, soft = "", 0.0, False + for ch in hard: + em = _char_em(ch) + if line and used + em > width_em: + lines.append((line, soft)) + line, used, soft = ch, em, True + else: + line += ch + used += em + lines.append((line, soft)) + return lines + + +def audit_document(children, *, where, allowed_radii=frozenset()): + """产稿期终审。任何一条不过就抛,绝不产出半合格的 .op。 + + `allowed_radii` 是这一档**显式批准**的圆角值集合。正圆(cornerRadius 恰为 + 宽高之半且宽高相等)永远放行 —— 「不用圆角」约束的是圆角矩形容器,圆点 + 要圆就必须写这个字段,两者不是一回事。 + """ + nodes = _flatten(children, []) + problems = [] + + for node in nodes: + name = node.get("name", node.get("id", "?")) + + # —— 负约束:这些字段一旦出现,档位身份就变了 + for dead in ("shadow", "opacity", "dashPattern"): + if dead in node: + problems.append(f"{name}: 出现禁用字段 {dead}") + if node.get("type") == "line": + problems.append(f"{name}: 用了 line 节点(§6.3 一律走 rectangle)") + for paint in (node.get("fill") or []): + if isinstance(paint, dict): + if "gradient" in str(paint.get("type", "")): + problems.append(f"{name}: 出现渐变填充") + color = paint.get("color") + if isinstance(color, str) and color.startswith("#"): + problems.append(f"{name}: 写死 hex {color},未走设计变量") + + # —— 圆角:只放行本档批准的值与正圆 + radius = node.get("cornerRadius") + if radius: + w, h = node.get("width"), node.get("height") + round_dot = (isinstance(w, (int, float)) and w == h + and abs(radius - w / 2) < 0.51) + if not round_dot and radius not in allowed_radii: + problems.append(f"{name}: cornerRadius={radius} 不在本档批准的 " + f"{sorted(allowed_radii) or '零圆角'} 内,也不是正圆") + + if node.get("type") != "text": + continue + + size = node.get("fontSize") + content = node.get("content") + width = node.get("width") + + if node.get("fontFamily") not in ALLOWED_FAMILIES: + problems.append(f"{name}: 字族 {node.get('fontFamily')} 不在保底两支内") + if size < FONT_HARD_FLOOR: + problems.append(f"{name}: {size}px < {FONT_HARD_FLOOR} 硬地板") + + # —— fit_content 与 growth 必须成对。配成 fixed-width 时 jian 会把节点 + # 压得比内容还窄,文字折出孤字末行 —— 而且它在 audit 上是干净的, + # 只有 CJK 闸或出图才看得见。 + auto = node.get("textGrowth") == "auto" + if (width == "fit_content") != auto: + problems.append(f"{name}: width={width!r} 与 growth=" + f"{node.get('textGrowth')!r} 不成对") + + # —— 字距:<64px 一律 0 且绝不为负;≥64px 不得比 -0.02em 更负 + spacing = node.get("letterSpacing", 0) + if spacing < 0 and (size < 64 or spacing < round(size * DISPLAY_TRACK)): + problems.append(f"{name}: {size}px 的负字距 {spacing} 越界") + + if not isinstance(content, str) or not isinstance(width, (int, float)): + continue + han = sum(1 for ch in content if "一" <= ch <= "鿿") + if not content.strip() or han / len(content) < CJK_RATIO_GATE: + continue + + # —— 行长 ≤30 汉字。量的是「这个宽度最多能排几个全宽字」,与实际内容 + # 无关 —— 它约束的是版式,不是这一句文案。 + # + # 只对正文档(<48px)成立。§3.8.3 那条规则解决的是「读到行尾找不回下一 + # 行开头」,那是成段文字的问题;display 档本来就只有十几个字、一到两 + # 行,把它按 30 字卡宽只会逼出一堆无意义的定宽。 + capacity = width / size + if size < 48 and capacity > CJK_MAX_CHARS: + problems.append(f"{name}: 每行可排 {capacity:.0f} 字 > " + f"{CJK_MAX_CHARS} 上限") + + # —— 折行模型:容量本身与再紧一档都要干净。末字标点悬挂会让实际每行多 + # 塞进小半个字,只按标称容量试会漏掉正好卡在边界上的那一类。 + for room in (capacity, capacity - 0.5): + if room < 1: + continue + lines = _wrap(content, room) + if len(lines) < 2: + continue + for index, (line, soft) in enumerate(lines[1:], 1): + if soft and line and line[0] in NO_LINE_START: + problems.append(f"{name}: 第 {index + 1} 行起于 " + f"{line[0]!r}(每行 {room:.1f} 字)") + tail, tail_soft = lines[-1] + if tail_soft and 0 < len(tail) <= 4: + problems.append(f"{name}: 孤字末行 {tail!r}" + f"(每行 {room:.1f} 字)全文={content[:24]!r}") + + if problems: + raise ValueError(f"{where} 产稿自检未过({len(problems)} 条):\n " + + "\n ".join(dict.fromkeys(problems))) + return children diff --git a/templates/step0/_generators/tpl_deck_banxin.py b/templates/step0/_generators/tpl_deck_banxin.py new file mode 100644 index 000000000..2b56e4426 --- /dev/null +++ b/templates/step0/_generators/tpl_deck_banxin.py @@ -0,0 +1,573 @@ +#!/usr/bin/env python3 +"""banxin-rule-deck.op — 版心界行 · 中文原生排版档(7 页 1920×1080) + +spec: openpencil-docs/openpencil/generation/deck-system-0809.md §2 · D9 +落格:medium-high formality × medium-high density × **mixed**(深浅书挡) + +这一档跟仓里其它 deck 的分野只有一句话:**中文正文本身是主角**。所以它 +不是「中国风模板」——没有水墨、没有印章、没有回纹。身份全部来自版面几何: + + 版心 一页里可以落墨的那块地,天头 144 / 地脚 108,**上大于下** + 界行 分栏用的 1px 竖线,贯穿固定高度,不随文字长短伸缩 + 天头 批注带(注疏层),正文之外的第三层文本层级 + 鱼尾 地脚居中的页码标记,每页复现,是跨页恒定的身份锚 + +### 三条硬规则(这一档的命) + +1. **正文每行 ≤30 汉字。** 1680 的版心在 32px 下是 52 字/行,远超舒适区, + 所以正文块一律收窄到 960(=30 字)或分两栏 —— 「界行」这个母题存在的 + 功能理由就在这里,它不是装饰。 +2. **中文标题绝不用省略号截断,也绝不交给自动折行。** 所有断点在文案里写 + 死 `\\n`;`cjk_text()` 会在产稿时逐行断言字数没有越过该块的容量,越了 + 直接 AssertionError,而不是等 QA 闸去抓。 +3. **行高按字号分段,不按「标题/正文」分类**(spec §3.5 / §5.3 C1): + ≥64 → 1.02-1.15;48-63 → 1.15-1.25;40-47 → 1.3-1.4;正文 → 1.7-1.8。 + 字距同理(§5.3 C2):<48 一律 0 绝不为负;≥64 才允许 round(fs×-0.02)。 + +### 工程约束(spec §6,逐条对应过一次真实事故) + +- 6.1 `dashPattern` 是死字段 —— 本档零虚线,界行全部实线。 +- 6.2 相邻同色块之间要有真格线 —— 表格行靠斑马 + 1px 界行,且行内单元格 + 之间给 24 的真 gap(`SIBLING_JAM_GAP = 3` 的余量),不靠 padding 撑。 +- 6.3 `line` 在 layout:none 下吃文档绝对坐标 —— 界行、朱砂短线、表格线全部 + 用 `rectangle` 画,一根 `line` 都没有。 +- 6.4 layout:none 的 children[0] 在最上 —— 每页先写内容、后写装饰。 +- 6.9 字体两层,产稿一律用保底层:`Noto Sans SC` + `Inter`。首选的源流明体 + / 霞鹜文楷不在渲染字体包内,写了会静默回退并触发「量 A 画 B」的裁切。 +- 6.13 rectangle 不递归渲染子节点 —— 引文块、朱砂淡底块一律 `frame`。 +- 6.15 板位 x = (i%3)*2040、y = (i//3)*1440。 + +### 深浅书挡 + +深底只在 01/02(开头)与 07(结尾)出现,中间四页全亮底,绝不交替 +(spec §2 D9 Strictly avoid 8)。 + +对比度实测见文件末尾,最低一对 3.72(`ink.faint`,只承载 ≥24px 的批注/ +页码,属 spec §4.4 的合法例外)。 +""" + +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from oplib import Ids, color_vars, frame, path, rect, solid, text, write_doc + +ids = Ids() + +# ---------------------------------------------------------------- 色板 +# +# spec §2 D9 的 oklch 表逐条换算而来(hex 由 spec 给出,未再自行取整)。 +# 冷暖分裂是这一档的物理关系:纸(H86-88 暖)对墨(H60 暖)对函套(H60 暖) +# —— 全暖向,因为纸面反射是暖的,纯黑写在暖白纸上会「浮」起一层。 +VARS = color_vars({ + "c-xuan": "#F3F0E9", # 宣白 · 内容页底 + "c-xuan-deep": "#E5E1D7", # 引文块 / 表格斑马 + "c-case": "#1E1813", # 函套墨 · 封面/篇目/收束页底 + "c-ink": "#2A241F", # 主文字 + "c-ink-soft": "#5F5A55", # 次级文字 + "c-ink-faint": "#807A76", # 批注 / 页码(仅 ≥24px) + "c-xuan-on": "#F0ECE7", # 深页主文字 + "c-xuan-dim": "#B4B0AA", # 深页次级文字 + "c-jie": "#D0CBC5", # 界行线(非文字) + "c-cinnabar": "#AA4331", # 唯一强调:鱼尾 / 页码标记 / 单页一处 + "c-cinnabar-wash": "#F9D7CE", # 朱砂淡版(承载墨字) +}) + +W, H = 1920, 1080 + +# 天头 144 / 地脚 108,比例 1.33:1。古籍如此是为了留批注;我们保留它有两个 +# 当代理由 —— 投影下沿常被人头遮挡,且上下不对称当场打破「万物居中且四边 +# 等距」这条 AI 指纹(spec §3.7 第 8 条)。 +HEAD, FOOT, SIDE = 144, 108, 120 +BANXIN_TOP, BANXIN_BOTTOM = HEAD, H - FOOT # 144 .. 972 +INNER = W - SIDE * 2 # 1680 + +# 界行的固定跨度。**不随文字长短伸缩**是这个母题的定义性质,所以它是常量 +# 而不是算出来的:从页标题下方一格起,到地脚上沿止,每一页同一段。 +RULE_TOP, RULE_BOTTOM = 264, BANXIN_BOTTOM +RULE_H = RULE_BOTTOM - RULE_TOP # 708 + +# 正文行长闸:30 汉字。所有正文块宽度由它反推,不由容器宽度决定。 +MAX_HAN_PER_LINE = 30 +BODY_FS = 32 +BODY_W = MAX_HAN_PER_LINE * BODY_FS # 960 + +CJK = "Noto Sans SC" +NUM = "Inter" + + +# ---------------------------------------------------------------- 字阶 +# +# (fontSize, lineHeight, letterSpacing)。分段规则见模块 docstring 第 3 条。 +COVER = (96, 1.08, -2) # round(96 × -0.02) = -2,不得更负 +CLOSE = (64, 1.12, -1) # round(64 × -0.02) = -1 +TITLE = (56, 1.20, 0) # 48-63 档,字距 0 +LEAD = (40, 1.35, 0) # 篇名 / 栏题 +BODY = (BODY_FS, 1.75, 0) # 正文,CJK 1.7-1.8 +QUOTE = (36, 1.80, 0) # 引文 +CELL = (28, 1.70, 0) # 表格正文 +NOTE = (26, 1.70, 0) # 批注 / 旁注 / 出处 +FOLIO = (24, 1.20, 0) # 页码 / 落款 mono + + +def th(step, lines=1): + """一个字阶排 n 行的渲染高度。jian 量文字高度就是 fs × lh × 行数, + 绝对定位的每一块都靠它反推 y —— 这一档没有一处靠「试出来」的坐标。""" + size, line_height, _ = step + return round(size * line_height * lines) + + +# ---------------------------------------------------------------- 文本 +def cjk_text(name, content, step, weight, color, *, inner, family=CJK, + align=None, width="fill_container"): + """一个中文文本节点,**产稿时就把行长闸执行掉**。 + + `inner` 是这个节点真正能占的像素宽(父块宽减 padding)。断言按 QA 闸 + `qa/cjkcheck.py` 的同一个模型来算:每字 1em、逐字符断行、每行容量 + `inner // fontSize`。只要每一条硬换行都不越容量,引擎就不会再产生任何 + 「软折行」,行首标点与孤字末行两类事故因此在源头就不可能发生 —— + QA 闸是复核,不是防线。 + + 注意 cjkcheck 只检查汉字占比 ≥0.6 的内容(拉丁半宽,按 1em 算是假阳 + 性),所以断言也照同一个门控走。 + """ + size, line_height, spacing = step + per = int(inner // size) + han = sum(1 for ch in content if "一" <= ch <= "鿿") + body = content.replace("\n", "") + if body and han / len(body) >= 0.6: + for line in content.split("\n"): + assert len(line) <= per, ( + f"{name}: 「{line}」{len(line)} 字 > 该块容量 {per} 字" + f"(inner={inner} fs={size})—— 改文案或收窄行长,不许缩字号" + ) + # `fit_content` 的节点是收缩包裹的,必须配 `auto` —— 配 fixed-width 会 + # 让 jian 把它压到比内容还窄(实测 9 字 24px 的落款被压到 188px),文字 + # 于是折出一个「评议」这样的孤字末行。 + return text(ids, name, content, size, weight, color, family=family, + line_height=line_height, spacing=spacing, width=width, + growth="auto" if width == "fit_content" else "fixed-width", + align=align) + + +def mono(name, content, step, weight, color, *, width="fit_content", + align=None, spacing=None): + """数字与拉丁一律走西文族(spec §3.8 第 5 条):让中文字体去渲染数字, + 字宽不齐,跨行跨列的列就会抖。""" + size, line_height, default_spacing = step + return text(ids, name, content, size, weight, color, family=NUM, + line_height=line_height, + spacing=default_spacing if spacing is None else spacing, + width=width, growth="auto" if width == "fit_content" else "fixed-width", + align=align) + + +# ---------------------------------------------------------------- 结构 +def page(name, bg): + """一页。固定 1920×1080、layout:none —— 版心档的每一块都要落在算得出 + 的坐标上,交给 flex 排就等于把版心交出去了。""" + node = frame(ids, name, width=W, height=H, layout="none", + fill=solid(bg), clipContent=True) + node["children"] = [] + return node + + +def block(name, x, y, width, children, *, gap=24, padding=None, fill=None, + align="start"): + """版心里的一块。height 恒为 fit_content —— 写死高度会在文案改一个字时 + 悄悄裁切。""" + node = frame(ids, name, width=width, height="fit_content", + layout="vertical", gap=gap, alignItems=align, + fill=fill or []) + if padding: + node["padding"] = padding + node["x"], node["y"] = x, y + node["children"] = children + return node + + +def row(name, x, y, width, children, *, gap=24, padding=None, fill=None, + align="center", justify=None): + node = frame(ids, name, width=width, height="fit_content", + layout="horizontal", gap=gap, alignItems=align, + fill=fill or []) + if padding: + node["padding"] = padding + if justify: + node["justifyContent"] = justify + if x is not None: + node["x"], node["y"] = x, y + node["children"] = children + return node + + +def jie_rule(x, *, y=RULE_TOP, height=RULE_H, color="$c-jie"): + """界行。1px 竖线,**贯穿固定高度**。 + + 这是与「卡片分栏」的根本区别:卡片框住内容(框随内容长短变形),界行 + 标记版面(线的位置与长度是版面的属性,与内容无关)。 + """ + node = rect(ids, "界行", width=1, height=height, fill=solid(color)) + node["x"], node["y"] = x, y + return node + + +def hair(x, y, width, *, thickness=1, color="$c-jie"): + """横向界行 / 表格线。用 rectangle 不用 line —— `line` 在 layout:none 下 + 吃的是文档绝对坐标,会跑到画布另一个角落去(spec §6.3)。""" + node = rect(ids, "界行 · 横", width=width, height=thickness, + fill=solid(color)) + node["x"], node["y"] = x, y + return node + + +# ---------------------------------------------------------------- 鱼尾 +# +# 古籍版心中缝的页码标记。两个等腰三角尖端相对、留一道缝 —— 原创造型, +# 不画鱼、不画任何具象物(spec §2 D9 Strictly avoid 1)。 +# 每页复现且位置零漂移,它是这一档跨页恒定的身份锚。 +FOLIO_W, FOLIO_TRI_H, FOLIO_GAP = 20, 9, 4 + + +def fish_tail(x, y, *, scale=1): + """鱼尾本体。`path` 的 d 会被拉伸到节点框,所以坐标写 1:1 即可。""" + w = round(FOLIO_W * scale) + tri = round(FOLIO_TRI_H * scale) + gap = round(FOLIO_GAP * scale) + upper = path(ids, "鱼尾 · 上", f"M0 0 L{w} 0 L{w / 2} {tri} Z", + width=w, height=tri, fill=solid("$c-cinnabar")) + upper["x"], upper["y"] = x, y + lower = path(ids, "鱼尾 · 下", f"M{w / 2} 0 L{w} {tri} L0 {tri} Z", + width=w, height=tri, fill=solid("$c-cinnabar")) + lower["x"], lower["y"] = x, y + tri + gap + return [upper, lower] + + +def folio_mark(index, total, *, dark=False): + """地脚居中的鱼尾 + 页码。深页换字色,位置一格不动。""" + color = "$c-xuan-dim" if dark else "$c-ink-faint" + nodes = fish_tail(round((W - FOLIO_W) / 2), 996) + number = mono("页码", f"{index} / {total}", FOLIO, 400, color, + width=200, align="center") + number["x"], number["y"] = round((W - 200) / 2), 1026 + nodes.append(number) + return nodes + + +# ================================================================ 01 封面 +def cover(): + """函套。深底、左下重心 —— 整套七页里唯一一个「左下」重心, + 与 07 的居中、03 的左偏、05 的居中收束共同构成跨页的重心变化。""" + p = page("01 封面 · 函套", "$c-case") + title = cjk_text("主标题", "汉字排版\n在屏幕上的四次退让", COVER, 700, + "$c-xuan-on", inner=INNER) + p["children"].append(block("主标", SIDE, 430, INNER, [title])) + + # 整套封面唯一的朱砂。96×2,短到不可能被读成分隔线,实到不可能被读成 + # 4% 不透明度的「假装在设计」(spec §3.7 第 5 条)。 + mark = rect(ids, "朱砂短线", width=96, height=2, + fill=solid("$c-cinnabar")) + mark["x"], mark["y"] = SIDE, 685 + p["children"].append(mark) + + p["children"].append(block("副标", SIDE, 725, INNER, [ + cjk_text("副标题", "写给编辑与界面设计者的一份版面评议", BODY, 400, + "$c-xuan-dim", inner=INNER), + ])) + p["children"].append(row("落款", SIDE, 880, INNER, [ + cjk_text("落款 · 单位", "版面组 · 内部评议", FOLIO, 400, + "$c-xuan-dim", inner=400, width="fit_content"), + mono("落款 · 日期", "2026.08.09", FOLIO, 400, "$c-xuan-dim"), + ], gap=32)) + p["children"] += folio_mark(1, 7, dark=True) + return p + + +# ================================================================ 02 篇目 +CHAPTERS = [ + ("01", "版心:先给一页定出可以落墨的地方"), + ("02", "界行:分栏是为了缩短行,不是分盒子"), + ("03", "行长:三十个字是一道生理线"), + ("04", "标点:断行处最见功夫"), + ("05", "收束:把四次退让逐项收回"), +] + + +def contents(): + """篇目。条与条之间只有一根 1px 界行,没有卡片、没有底色块 —— + 目录如果需要一张卡片来分组,说明这份材料的结构本身没想清楚。""" + p = page("02 篇目 · 函套", "$c-case") + p["children"].append(block("眉题", SIDE, HEAD, INNER, [ + cjk_text("眉题", "篇目", BODY, 500, "$c-xuan-dim", inner=INNER), + ])) + + items = [] + for index, (no, name) in enumerate(CHAPTERS): + if index: + items.append(rect(ids, "界行 · 条间", width="fill_container", + height=1, fill=solid("$c-jie"))) + items.append(row(f"篇目 {no}", None, None, "fill_container", [ + mono("序号", no, FOLIO, 400, "$c-xuan-dim", width=96), + cjk_text("篇名", name, LEAD, 600, "$c-xuan-on", + inner=INNER - 96 - 32), + ], gap=32, padding=[36, 0])) + # 行高 36+54+36 = 126,五条加四根界行 = 634,从 264 起正好收在 898 —— + # 篇目页的高度是算出来的:加一条就会顶出版心,那正是「该拆页」的信号。 + p["children"].append(block("篇目列表", SIDE, RULE_TOP, INNER, items, gap=0)) + p["children"] += folio_mark(2, 7, dark=True) + return p + + +# ============================================================ 03 论述页 +def discourse(): + """单栏正文 + 界行右侧旁注。62:38 的不对称分栏 —— 50/50 稳定但静止 + (spec §3.6)。正文块 960 = 30 字,是行长闸算出来的,不是版心宽度。""" + p = page("03 论述 · 版心", "$c-xuan") + p["children"].append(block("天头批注", SIDE, 56, INNER, [ + cjk_text("批注", "版心先于版式;边界不定,谈不上呼吸", NOTE, 400, + "$c-ink-faint", inner=INNER), + ])) + p["children"].append(block("页标题", SIDE, HEAD, INNER, [ + cjk_text("标题", "版心不是边距,是一页里可以落墨的那块地", TITLE, + 700, "$c-ink", inner=INNER), + ])) + p["children"].append(block("正文", SIDE, RULE_TOP, BODY_W, [ + cjk_text("正文", "\n".join([ + "屏幕上的版面把版心简化成了四边等距的内边距,", + "于是每一页都从同一个位置开始,也在同一处结束。", + "古籍的做法相反:天头留给批注,地脚留给页码,", + "两者从来不等高,页面因此有了上下方向。", + "这一档把天头定为 144、地脚定为 108,", + "多出来的那一截,是给投影时被人头遮住的下沿的。", + ]), BODY, 400, "$c-ink", inner=BODY_W), + ])) + # 正文之下的三条做法。用横向界行与正文隔开,而不是另起一张卡片 —— + # 同一页里的两层内容,靠线与留白分层就够了。 + p["children"].append(hair(SIDE, 648, BODY_W)) + clauses = [] + for index, clause in enumerate([ + "天头留给批注,地脚留给页码与鱼尾", + "正文块收窄到三十字,宁可分栏也不放宽", + "界行的长度由版面定,与文字多少无关", + ]): + clauses.append(row(f"做法 {index + 1}", None, None, "fill_container", [ + mono("序号", f"0{index + 1}", FOLIO, 400, "$c-ink-faint", width=56), + cjk_text("做法", clause, BODY, 400, "$c-ink", + inner=BODY_W - 56 - 24), + ], gap=24, padding=[14, 0])) + p["children"].append(block("三条做法", SIDE, 672, BODY_W, clauses, gap=0)) + + p["children"].append(block("旁注", 1200, RULE_TOP, 600, [ + cjk_text("旁注", "\n".join([ + "版心之外的留白不是废纸。", + "天头承批注,地脚承页码,", + "两者各有职务在身,", + "所以不必、也不该等高。", + ]), NOTE, 400, "$c-ink-soft", inner=600), + ])) + p["children"].append(jie_rule(1140)) + p["children"] += folio_mark(3, 7) + return p + + +# ============================================================ 04 双栏对读 +def dialogue(): + """其说 / 我见。两栏等宽、中缝一根界行 —— 这一页是「界行」这个母题的 + 正面论证:把同一件事的两种说法并排,靠线分,不靠卡片分。""" + p = page("04 双栏对读", "$c-xuan") + p["children"].append(block("页标题", SIDE, HEAD, INNER, [ + cjk_text("标题", "分栏是为了把行缩短,不是把内容装进两个盒子", + TITLE, 700, "$c-ink", inner=INNER), + ])) + + col_w = 808 + p["children"].append(block("左栏 · 其说", SIDE, RULE_TOP, col_w, [ + cjk_text("栏题", "其说", LEAD, 600, "$c-ink-soft", inner=col_w), + cjk_text("左栏正文", "\n".join([ + "通行的做法是给每一栏加一个", + "圆角卡片,再用底色把两边分开。", + "分是分开了,读者读到的却是", + "两张卡片,而不是一篇文章的", + "两个部分。", + ]), BODY, 400, "$c-ink", inner=col_w), + cjk_text("左栏续", "\n".join([ + "卡片还有一个副作用:它必须有内边距,", + "于是同一块版心里,能排的字更少,", + "行却没有因此变短。", + ]), BODY, 400, "$c-ink-soft", inner=col_w), + ], gap=32)) + + # 右栏首句压朱砂淡底 —— 本页唯一一次强调。第二次出现就不再是强调 + # (spec §3.6),所以整页别处一点朱砂都没有。 + wash = block("首句", 0, 0, "fill_container", [ + cjk_text("首句", "界行只标记分栏,不圈占内容。", BODY, 500, + "$c-ink", inner=col_w - 48), + ], padding=[24, 24], fill=solid("$c-cinnabar-wash")) + wash.pop("x"), wash.pop("y") + p["children"].append(block("右栏 · 我见", SIDE + col_w + 64, RULE_TOP, + col_w, [ + cjk_text("栏题", "我见", LEAD, 600, "$c-ink-soft", inner=col_w), + wash, + cjk_text("右栏正文", "\n".join([ + "线画在版面上,卡片扣在内容上。", + "界行贯穿整个版心,不随文字长短", + "伸缩;它分的是版面,不是归属。", + ]), BODY, 400, "$c-ink", inner=col_w), + cjk_text("右栏续", "\n".join([ + "把分栏交给线之后,栏宽就能完全由", + "行长决定:三十字一行,多出来的宽度", + "留给留白,而不是留给边框。", + ]), BODY, 400, "$c-ink-soft", inner=col_w), + ], gap=32)) + p["children"].append(jie_rule(960)) + p["children"] += folio_mark(4, 7) + return p + + +# ============================================================== 05 引文页 +def quotation(): + """引文居中,左右各一根界行框住。整套唯一一页居中重心的亮页 —— + 「不许页页居中」的另一面是「也不许一页都不居中」,节奏靠对比产生。""" + p = page("05 引文", "$c-xuan") + p["children"].append(block("天头批注", SIDE, 56, INNER, [ + cjk_text("批注", "回行的距离,是版面替眼睛付的成本", NOTE, 400, + "$c-ink-faint", inner=INNER), + ])) + p["children"].append(block("页标题", SIDE, HEAD, INNER, [ + cjk_text("标题", "一行超过三十个汉字,眼睛就会在回行时丢位置", + TITLE, 700, "$c-ink", inner=INNER), + ])) + + # 引文块落在版心的下二分之一而不是紧贴标题:这一页只有一个读点, + # 上下留白大致相等时它才读作「被托住」,而不是「掉在标题下面」。 + quote_w, quote_pad = 1080, 64 + p["children"].append(block("引文块", round((W - quote_w) / 2), 372, + quote_w, [ + cjk_text("引文", "\n".join([ + "行的长度决定读者每次回行要走多远。", + "走得太远,眼睛会落到上一行或下一行,", + "于是要重读;重读不是理解慢,是版面失职。", + ]), QUOTE, 400, "$c-ink", inner=quote_w - quote_pad * 2), + ], padding=[quote_pad, quote_pad], fill=solid("$c-xuan-deep"))) + + p["children"].append(block("出处", round((W - quote_w) / 2), 732, + quote_w, [ + cjk_text("出处", "——《版面与阅读》第二章 · 行长与回行", NOTE, 400, + "$c-ink-soft", inner=quote_w, align="right"), + ])) + p["children"].append(jie_rule(360)) + p["children"].append(jie_rule(1560)) + p["children"] += folio_mark(5, 7) + return p + + +# ============================================================== 06 表列页 +# 列宽写死(spec §6.10):渲染栈没有 tabular 数字,靠 fit_content 指望列 +# 自己对齐,一行长一点整张表就抖。 +TABLE_COLS = (280, 388, 376, 532) +TABLE_PAD = 16 +TABLE_GAP = 24 # ≥ SIBLING_JAM_GAP(3) 的真 gap,不靠 padding 撑 +TABLE_HEAD = ("现象", "当前引擎行为", "后果", "我们的做法") +TABLE_ROWS = [ + ("行首标点", "逐字断行,不避头尾", "「。」被甩到行首", "标题写死断点,正文控字数"), + ("孤字末行", "末行只剩一两个字", "版面出现残行", "收窄栏宽,或改写文案"), + ("中英混排", "两侧不自动加间隙", "数字与汉字粘连", "文案里补半角空格"), + ("数值对齐", "没有等宽数字", "列与列之间发抖", "数字走西文族,列宽写死"), + ("省略号截断", "直接截去后半句", "读者读到半截话", "不截断,改写或换页型"), +] + + +def table_row(name, cells, *, weight, color, fill=None): + kids = [] + for width, content in zip(TABLE_COLS, cells): + kids.append(cjk_text(f"{name} · 格", content, CELL, weight, color, + inner=width, width=width)) + return row(name, None, None, "fill_container", kids, gap=TABLE_GAP, + padding=[20, TABLE_PAD], fill=fill, align="start") + + +def table_page(): + """表格。表头 2px 墨线、行间 1px 界行、**末行无线**、斑马走宣深。 + 整框边线一根没有 —— 表格的结构应该由横线与留白给出,不由一个框给出。""" + p = page("06 表列", "$c-xuan") + p["children"].append(block("天头批注", SIDE, 56, INNER, [ + cjk_text("批注", "避头尾在引擎里缺席,只能由文案补上", NOTE, 400, + "$c-ink-faint", inner=INNER), + ])) + p["children"].append(block("页标题", SIDE, HEAD, INNER, [ + cjk_text("标题", "断行处最见功夫,而排版引擎并不替我们避头尾", + TITLE, 700, "$c-ink", inner=INNER), + ])) + + rows = [table_row("表头", TABLE_HEAD, weight=600, color="$c-ink"), + rect(ids, "表头线", width="fill_container", height=2, + fill=solid("$c-ink"))] + for index, cells in enumerate(TABLE_ROWS): + if index: + rows.append(rect(ids, "界行 · 行间", width="fill_container", + height=1, fill=solid("$c-jie"))) + rows.append(table_row(f"表行 {index + 1}", cells, weight=400, + color="$c-ink", + fill=solid("$c-xuan-deep") if index % 2 else None)) + p["children"].append(block("表格", SIDE, RULE_TOP, INNER, rows, gap=0)) + + p["children"].append(block("来源", SIDE, 848, INNER, [ + cjk_text("来源", "来源:版面组对内部三十份中文文档的抽样," + "2026 年 7 月", FOLIO, 400, "$c-ink-faint", inner=INNER), + ])) + p["children"] += folio_mark(6, 7) + return p + + +# ============================================================== 07 收束 +def closing(): + """函套收尾。放大的鱼尾在收束句之上 —— 页尾那枚小鱼尾照旧在地脚, + 位置零漂移;放大的这一枚是构图,不是页码。""" + p = page("07 收束 · 函套", "$c-case") + p["children"] += fish_tail(round((W - FOLIO_W * 4) / 2), 300, scale=4) + p["children"].append(block("收束句", SIDE, 470, INNER, [ + cjk_text("收束", "把四次退让逐项收回来,\n从一行三十字开始。", + CLOSE, 700, "$c-xuan-on", inner=INNER, align="center"), + ])) + p["children"].append(row("落款", SIDE, 700, INNER, [ + cjk_text("落款 · 单位", "版面组 · 内部评议", FOLIO, 400, + "$c-xuan-dim", inner=400, width="fit_content"), + mono("落款 · 日期", "2026.08.09", FOLIO, 400, "$c-xuan-dim"), + ], gap=32, justify="center")) + p["children"] += folio_mark(7, 7, dark=True) + return p + + +# ---------------------------------------------------------------- 板位 +# spec §6.15:3 板一行;行距 1440 而不是 1200 —— 画布在帧上方以固定屏幕 +# 偏移画帧名,行距不够时第二行的帧名会压到上一行的板上。 +BOARD_X, BOARD_Y, PER_ROW = 2040, 1440, 3 + + +def build(): + boards = [cover(), contents(), discourse(), dialogue(), quotation(), + table_page(), closing()] + for index, board in enumerate(boards): + board["x"] = (index % PER_ROW) * BOARD_X + board["y"] = (index // PER_ROW) * BOARD_Y + return boards + + +# 对比度(WCAG 相对亮度比,spec §2 D9 色板表实算值): +# c-ink on c-xuan 13.46 +# c-ink-soft on c-xuan 5.99 +# c-ink-faint on c-xuan 3.72 ← 仅承载 ≥24px 的批注/页码/来源 +# c-ink on c-xuan-deep 11.73(引文块、斑马行) +# c-ink on c-cinnabar-wash 11.41(04 页首句) +# c-xuan-on on c-case 14.94 +# c-xuan-dim on c-case 8.14 ← 深页次级文字与页码 +# c-cinnabar on c-xuan 5.19(本档朱砂只作图形与短线,不承载正文) +# c-jie 只画线不承载文字,按 spec §4.4 第 2 条豁免(非文字装饰线)。 +# +# 字号地板(spec §3.4):最小 24(批注/页码/来源,全部 ≥24 的合法例外区), +# 最大 96 ≥ 60 的层级线,且 96 / 32 = 3.0 ≥ 2.5 倍的层级下限。 +# 单页字阶档数:01=3 / 02=3 / 03=4 / 04=4 / 05=4 / 06=4 / 07=2,均 ≤4。 + +if __name__ == "__main__": + write_doc(sys.argv[1], VARS, build(), "版心界行 · 中文原生排版档") diff --git a/templates/step0/_generators/tpl_deck_dossier.py b/templates/step0/_generators/tpl_deck_dossier.py new file mode 100644 index 000000000..7ce4531c0 --- /dev/null +++ b/templates/step0/_generators/tpl_deck_dossier.py @@ -0,0 +1,640 @@ +#!/usr/bin/env python3 +"""dossier-linen-deck.op — 卷宗亚麻 · 高密度文档备忘档(1920×1080 · 8 页) + +deck 体系 D11。落格 high formality × **high** density × light。 +定位:每一页都是一张可独立抽出来读的备忘录纸,不是幻灯片 —— 零 bullet、 +编号段落、纯表格、异步阅读优先。 + +### 这一档要示范的那件事 + +**高密度 ≠ 缩字号。** 整套的正文密度是 deck 体系里最高的,而字号地板与其 +他档完全相同(正文 30 是绝对下限)。密度来自三处,一处都不来自把字缩小: + + 1. **行长**:正文块收窄到 900px(30px 字号下正好 30 汉字/行),一页能排 + 下的段落数因此上去了,而每一行仍然好读。 + 2. **段落结构**:层级只由段号深度表达(§1 / §1.1),零 bullet 符号 —— + 符号本身是要占位的,编号不占。 + 3. **留白分配**:左边距 216 全给装订线,右边距只有 120。不对称让出的那 + 96px 不是浪费,它是段号的悬挂缩进。 + +### 锚点与色彩推导(采样 → 收敛 → 论证) + + - **采样**:亚麻纹公文封的暖白、档案墨的近黑暖调、装订线绳的锈色。 + - **收敛**:底 = 亚麻 oklch(0.950 0.014 82);**唯一有彩色 = 锈色 H35 + C0.090**,且只走线与页码;中性走暖灰序列(H60,与底同暖向)。 + - **论证一**:这是体系里唯一的单色档。备忘录的说服力来自结构不来自视 + 觉;任何第二支颜色都会诱导读者去找「重点色」,而这一档的重点应该在句 + 子里。 + - **论证二**:锈色 chroma 只到 0.090。拉到 0.13+ 装订线就从「绳」变成 + 「红线标注」,语义完全改变。 + - **论证三**:底色 chroma 0.014 是亚麻纸的黄 —— 比奶油纸更灰、比新闻纸 + 更暖,要读作「公文用纸」而不是「手账内页」。 + +### 招牌母题(识别度载体,每页复现且位置零漂移) + + 1. **装订线 binding-rail** —— 距左缘 120px 一条贯穿全高的 2px 锈色竖 + 线,线上等距三处 12×12 的方孔(亚麻底 + 1px 细线描边)。 + 2. **编号段落 numbered-clause** —— mono 段号挂在装订线**左侧**的悬挂缩 + 进里(右对齐至装订线 −24px),段落正文从装订线 +96px 起。 + 3. **骑缝页标 folio-tab** —— 右上角 `p. N / 8` + 其下一条 48×1 细线;左 + 上角对称位置放文档代号(letterSpacing +2)。 + +### 负约束(Strictly avoid,逐条对应 spec §2 D11) + + - **全篇零 bullet 符号**。只有编号段落、完整段落与带线表格。 + - **数据只走表格,绝不出图表** —— 图表在这一档是「演示」,而这一档不是 + 演示。 + - 不用第二支有彩色;锈色之外一律中性。 + - 不用圆角、阴影、渐变、图标、照片、卡片。 + - 装订线与正文起点每页同一个 x,零漂移。 + - 段号最多三级。 + - 高密度不许触碰字号地板:正文 30 是绝对下限,装不下就删段落或加页。 + - 页标写实际总页数(`p. 3 / 8`),不写单侧页码。 + - 不写「如上页所述」这类依赖顺序的表述 —— 每页能被单独抽出来读。 + - 表格不用彩色表头、不用整框边线;只用上下横线与斑马行。 + +### 工程约束(spec §6,逐条踩过的坑) + + - **字体走保底层**:模板里只写 `Noto Sans SC`(中文)与 `Inter`(数字与 + 拉丁)。spec 的首选字体(思源宋体 / 霞鹜文楷 / IBM Plex Mono)不在渲 + 染字体包内,写了会静默回退到 Roboto,并触发「量 A 字体画 B 字体」的裁 + 切与偏心。 + - **数值列宽写死**:Inter 在当前栈里不保证等宽数字,表格列宽一律固定 + px,不靠 fit_content 指望数字自己对齐。 + - **不用 line 节点、不用 dashPattern**:所有线(装订线、表格横线、签署 + 位)都是 rectangle。 + - **相邻单元格留 4px 真格线**(`SIBLING_JAM_GAP = 3`):行底色从缝隙透 + 出来,既是几何合规也是这一档「不画竖格线」的实现方式。 + - **顶层一次性给出整棵 8 帧树**,每帧显式写 x/y(板位 2040 × 1440)。 + +字号与行高(§3.4/§3.5 硬地板:任意文本 ≥20,注释 ≥22,全 deck 最大 ≥60, +最大字号 ≥ 2.5 × 正文): + 文档标题 76 / 1.10 / −2 · 节标题 44 / 1.25 · 正文 30 / 1.80 + 表格 28 / 1.45 · 段号 mono 26 · 页标与脚注 mono 24 / 1.5 + 76 = 2.53 × 30,正好过 §3.4 的层级比;spec §2 的 72 只到 2.40 倍,这里取 + 76 是为了同时满足两条契约(差额写在这里,不是随手改的)。 + +对比度(WCAG 相对亮度比,实测见文件末尾):承载正文的最低一对是 4.29。 +""" + +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from oplib import Ids, color_vars, frame, rect, solid, text, write_doc + +ids = Ids() + +VARS = color_vars({ + "c-linen": "#F3EEE4", # 页面底 · 亚麻纸 + "c-band": "#EFE9DE", # 表格斑马行 + "c-deep": "#E6DFD3", # 引文块 / 决策块 + "c-ink": "#201C19", # 主文字 14.63 : linen + "c-ink-soft": "#56524E", # 次级文字 6.70 + "c-ink-faint": "#746F6B", # 页标 / 段号 4.29 + "c-rule": "#C0BDB8", # 细线(非文字) + "c-thread": "#864737", # 唯一有彩:装订线 / 页码 / 段号 6.11 +}) + +CJK = "Noto Sans SC" +NUM = "Inter" + +W, H = 1920, 1080 +PAGES = 8 +DOC_CODE = "OPS-2026-041" + +# 版式语法。左边距 216 = 装订线 120 + 正文让出的 96,右边距只有 120 —— +# 这个不对称是本档最强的身份信号。 +PAD_TOP, PAD_BOTTOM, PAD_RIGHT = 96, 96, 120 +RAIL_X = 120 # 装订线的 x,每页零漂移 +NUM_W = 96 # 悬挂段号列:右缘正好落在装订线左侧 24px +NUM_GAP = 120 # 段号列右缘 → 正文起点(= RAIL_X + 96 = 216) +BODY_W = W - PAD_RIGHT - NUM_W - NUM_GAP # 1584 +BODY_X = NUM_W + NUM_GAP # 216 + +# 正文块的行长闸。CJK 正文 ≤30 汉字/行(§3.8-3):30px 字号下就是 900px。 +# 内容宽有 1584,但「容器有多宽就排多宽」正是长段落最常见的失败。 +TEXT_W = 900 + +FS_DOC, FS_SEC, FS_BODY = 76, 44, 30 +# 段号、表头、页标、脚注**共用 26 这一档**。它们本来可以分成 26 / 24 两 +# 档,但表格页上已经有 44 / 30 / 28 三档,再分就是单页 5 档,越过 §3.4 的 +# 「单页字阶档数 ≤4」。26 仍落在注释档 24–26 的目标区间里。 +FS_TABLE, FS_CLAUSE, FS_META = 28, 26, 26 +LH_DISPLAY, LH_SEC, LH_BODY, LH_TABLE, LH_META = 1.10, 1.25, 1.80, 1.45, 1.50 + +GRID = 4 # 单元格之间的真格线;≥ SIBLING_JAM_GAP(3) + + +# ------------------------------------------------------------------ 骨架 +def col(name, children, *, gap=0, width="fill_container", fill=None, **props): + node = frame(ids, name, width=width, height="fit_content", + layout="vertical", gap=gap, fill=fill or [], **props) + node["children"] = children + return node + + +def row(name, children, *, gap=0, align="start", width="fill_container", + fill=None, **props): + node = frame(ids, name, width=width, height="fit_content", + layout="horizontal", gap=gap, alignItems=align, + fill=fill or [], **props) + node["children"] = children + return node + + +def rule(width, thickness=1, color="$c-rule"): + """一条横线。**只用 rectangle**:`line` 在 layout:none 下吃的是文档绝对 + 坐标,会跑到画布的另一个角落去。""" + return rect(ids, "细线", width=width, height=thickness, fill=solid(color)) + + +# 拉丁与数字在 CJK 字体里约占半个字身。取 0.6 而不是 0.5 是留一档余量: +# 这个系数只决定断言的松紧,宁可早报一行也不要漏一行。 +LATIN_EM = 0.6 + + +def line_em(line): + """一行文字的宽度,单位是「字」。CJK 记 1,其余记 LATIN_EM。""" + return sum(1.0 if ch > "⿿" else LATIN_EM for ch in line) + + +def fits(content, size, width): + """产稿期的折行断言:改文案当场报错,不必跑完闸再回来猜哪一行折了。 + + 量的是**渲染真实宽度**(拉丁半宽),不是 cjkcheck 的 1em 保守模型 —— + 后者会把「上季度共 1342 条上报……」这种混排句判成折行,而它实际排得 + 下。两者是互补的:这里守「不许发生自动折行」,闸守「万一折了会不会出 + 孤字末行 / 行首标点」。 + + 断点一律写死在文案里,所以每一硬行都要自己排得下。 + """ + if not isinstance(width, (int, float)) or not isinstance(content, str): + return + if not content.strip(): + return + per = width / size + for line in content.split("\n"): + if line_em(line) > per: + raise ValueError( + f"断行超容量:{line!r} 折合 {line_em(line):.1f} 字 > 每行 " + f"{per:.1f} 字(宽 {width} · 字号 {size})。按 §3.1 缩短文" + f"案、换页型或拆页,不缩字号。") + + +def body(content, *, size=FS_BODY, weight=400, color="$c-ink", + width=TEXT_W, lh=LH_BODY, family=CJK, spacing=0, align=None, + name="正文"): + """一段正文。断点一律写死在文案里 —— 当前 wrap_text 对 CJK 是逐字符断 + 行、没有标点避头尾,交给自动折行会在「。」前面断开。""" + fits(content, size, width) + return text(ids, name, content, size, weight, color, family=family, + line_height=lh, width=width, growth="fixed-width", + align=align, spacing=spacing) + + +def clause(number, children): + """一个编号段:mono 段号悬挂在装订线左侧,正文从装订线 +96 起。 + + 段号的行盒高度对齐正文首行(26 × lh = 30 × 1.8),否则段号会比它领的 + 那一行高出几个像素,八页看下来是可见的抖动。 + """ + num = text(ids, "段号", number, FS_CLAUSE, 500, "$c-thread", family=NUM, + line_height=round(FS_BODY * LH_BODY / FS_CLAUSE, 3), + width=NUM_W, growth="fixed-width", align="right") + return row("编号段", [num, col("段落", children, gap=18)], gap=NUM_GAP) + + +def section(number, title, children, *, gap=28): + """节标题 + 其下的内容。节号同样走悬挂缩进,层级只由段号深度表达。 + + `children` 里的编号段自己带悬挂列,**这里不再统一缩进** —— 缩两次的结 + 果是段号被推进正文里,悬挂缩进就没有了。不带段号的块(表格、引文块、 + 决策块)由调用方用 `indent()` 显式让出 216。 + """ + num = text(ids, "节号", number, FS_CLAUSE, 500, "$c-thread", family=NUM, + line_height=round(FS_SEC * LH_SEC / FS_CLAUSE, 3), + width=NUM_W, growth="fixed-width", align="right") + fits(title, FS_SEC, BODY_W) + head = text(ids, "节标题", title, FS_SEC, 600, "$c-ink", family=CJK, + line_height=LH_SEC, width=BODY_W, growth="fixed-width") + return col("节", [ + row("节标题行", [num, head], gap=NUM_GAP), + col("节内容", children, gap=gap), + ], gap=gap) + + +def indent(children, *, gap=0, **props): + """没有段号的块。用 padding 让出 216,不塞一个空的占位节点进来。""" + return col("正文块", children, gap=gap, padding=[0, 0, 0, BODY_X], **props) + + +def meta_line(label, value, *, value_family=NUM): + """收件人 / 日期 / 密级这类元信息行。中文标签走 CJK、值走西文族 —— + 让中文字体去渲染数字会字宽不齐,列就抖了。""" + return row("元信息行", [ + text(ids, "元信息标签", label, FS_META, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + text(ids, "元信息值", value, FS_META, 500, "$c-ink-soft", + family=value_family, width="fit_content", growth="auto", + line_height=LH_META), + ], gap=16, align="start") + + +# ------------------------------------------------------------------ 骑缝页标 +def folio(index): + """右上角页标 + 左上角文档代号。两者共同构成「这是一份文件的第 N 页」。""" + code = text(ids, "文档代号", DOC_CODE, FS_META, 500, "$c-ink-faint", + family=NUM, width="fit_content", growth="auto", + line_height=LH_META, spacing=2) + page_no = text(ids, "页标", f"p. {index} / {PAGES}", FS_META, 500, + "$c-thread", family=NUM, width="fit_content", + growth="auto", line_height=LH_META) + tab = col("骑缝页标", [page_no, rule(48)], gap=10, width="fit_content", + alignItems="end") + # 页眉与正文同起点(装订线 +96),否则文档代号会一路顶到画布左缘去。 + return indent([ + row("页眉", [code, tab], gap=48, width="fill_container", + justifyContent="space_between"), + ]) + + +# ------------------------------------------------------------------ 装订线 +def binding_rail(): + """装订线 + 三处装订孔。孔写在数组前面 —— layout:none 的 z-order 是 + children[0] 在最上,写反了孔就被线盖住。""" + holes = [] + for y in (270, 540, 810): + hole = rect(ids, "装订孔", width=12, height=12, + fill=solid("$c-linen"), + stroke={"thickness": 1, "fill": solid("$c-rule")}) + hole["x"], hole["y"] = RAIL_X - 5, y - 6 + holes.append(hole) + thread = rect(ids, "装订线", width=2, height=H, fill=solid("$c-thread")) + thread["x"], thread["y"] = RAIL_X, 0 + return [*holes, thread] + + +def page(name, index, children, *, gap=40, justify="start"): + """一页备忘录纸。固定 1920×1080,绝不 fit_content。""" + content = frame(ids, f"{name} · 正文", width="fill_container", + height="fill_container", layout="vertical", + padding=[PAD_TOP, PAD_RIGHT, PAD_BOTTOM, 0], gap=gap, + justifyContent=justify, fill=[]) + content["children"] = [folio(index), *children] + ornament = frame(ids, f"{name} · 装订", width="fill_container", + height="fill_container", layout="none", fill=[]) + ornament["children"] = binding_rail() + shell = frame(ids, name, width=W, height=H, layout="none", + fill=solid("$c-linen"), clipContent=True) + shell["children"] = [content, ornament] + return shell + + +# ------------------------------------------------------------------ 带线表格 +def cell(content, width_px, *, weight=400, color="$c-ink", family=CJK, + size=FS_TABLE, align=None): + """一个单元格。底色留给行,单元格自己透明 —— 这一档不画竖格线,格与 + 格之间靠 4px 的真缝隙分开。 + + 那 4px 只负责**分格**;两列文字之间真正的呼吸量是两侧各 24 的内边距 + (文字到文字 52px),不是靠 4px 贴着 SIBLING_JAM_GAP 的下限过关。 + """ + fits(content, size, width_px - 48) + box = frame(ids, "单元格", width=width_px, height="fit_content", + layout="vertical", padding=[16, 24], gap=0, fill=[]) + box["children"] = [ + text(ids, "单元格文字", content, size, weight, color, family=family, + line_height=LH_TABLE, width="fill_container", + growth="fixed-width", align=align), + ] + return box + + +def table(columns, header, rows, *, emphasis=None): + """带线表格:只有上下横线与斑马行,没有彩色表头、没有整框边线。 + + `columns` 是 (宽度, 对齐, 字族) 三元组,宽度**写死** —— 渲染栈没有 + tabular 数字,指望 fit_content 让数字自己对齐必然抖。 + `emphasis` 给最后一行(推荐行 / 合计行)加粗并在其上加一条 2px 锈线。 + """ + assert sum(w for w, _, _ in columns) + GRID * (len(columns) - 1) == BODY_W + + def line_row(cells, fill=None): + return row("表行", cells, gap=GRID, align="stretch", fill=fill) + + head_cells = [ + cell(label, w, weight=600, color="$c-ink-soft", family=CJK, + size=FS_CLAUSE, align=align) + for label, (w, align, _) in zip(header, columns) + ] + out = [rule(BODY_W, 2), line_row(head_cells), rule(BODY_W, 1)] + for index, values in enumerate(rows): + last = emphasis and index == len(rows) - 1 + if last: + out.append(rule(BODY_W, 2, "$c-thread")) + cells = [ + cell(value, w, weight=600 if last else 400, family=family, + align=align) + for value, (w, align, family) in zip(values, columns) + ] + band = None if last else (solid("$c-band") if index % 2 == 0 else None) + out.append(line_row(cells, fill=band)) + out.append(rule(BODY_W, 1)) + return col("表格", out, gap=0) + + +# ------------------------------------------------------------------ 01 首页 +SUMMARY = ("巡检是我们唯一能在事故发生前拿到的一手信息。\n" + "过去两年它以人工抽查的方式运行,覆盖到的门店不足四成,\n" + "上报的问题在纸质表单与工作群之间流转,闭环时长无从统计。\n" + "本备忘给出三个方案的取舍、所需投入,\n" + "以及三项需要在本月内批复的事项。") + + +def cover(): + title = body("把门店巡检从抽查\n改为全量记录", size=FS_DOC, weight=600, + lh=LH_DISPLAY, spacing=-2, width=BODY_W, name="文档标题") + return page("01 文件首页", 1, [ + indent([ + # 起首线在标题**上方**:它是信笺抬头与正文的分界,不是「每个标 + # 题下面一条横线」那条 AI 指纹。 + rule(BODY_W, 2, "$c-thread"), + title, + body(SUMMARY, name="摘要"), + col("签发信息", [ + meta_line("收件人", "运营中心 · 门店运营组 · 信息技术部", + value_family=CJK), + meta_line("签发日期", "2026-08-09"), + meta_line("密级", "内部 · 限项目组", value_family=CJK), + ], gap=12), + ], gap=44), + ], gap=40, justify="space_between") + + +# ------------------------------------------------------------------ 02 背景 +def background(): + return page("02 背景", 2, [ + section("§1", "背景与问题", [ + clause("§1.1", [body( + "人工抽查按片区轮换,每家门店平均 47 天才被巡到一次。\n" + "到店的检查项由巡检员当场手写,回办公室再录入系统,\n" + "两个环节之间平均隔了 1.8 天,照片与表单常常对不上号。\n" + "抽查本身没有错,错的是把抽查的结果当成了全量的结论。")]), + clause("§1.2", [body( + "问题上报走工作群,群里同时还有排班、报修与日常通知。\n" + "信息一旦被后面的消息顶下去,就等于没有发生过。\n" + "上季度共 1342 条上报,能追溯到闭环记录的只有 611 条。")]), + clause("§1.3", [body( + "各区域对同一个检查项的判定尺度并不一致:\n" + "华东把冷链温度超标记为一般问题,华南记为严重问题,\n" + "汇总到集团时,两者被加在了同一个数字里。")]), + ], gap=32), + ], gap=48) + + +# ------------------------------------------------------------------ 03 数据 +REGION_COLS = [ + (388, None, CJK), # 片区 + (300, "right", NUM), # 月均巡检次数 + (280, "right", NUM), # 问题上报条数 + (280, "right", NUM), # 整改闭环率 + (320, "right", NUM), # 平均闭环时长 +] +REGION_HEAD = ["片区", "月均巡检次数", "上报条数", "闭环率(%)", + "闭环时长(天)"] +REGION_ROWS = [ + ["华东", "412", "386", "46", "5.2"], + ["华南", "358", "341", "51", "4.6"], + ["华北", "296", "302", "39", "6.8"], + ["西南", "187", "154", "44", "5.9"], + ["东北", "121", "98", "33", "8.1"], + ["全国", "1374", "1281", "44", "5.9"], +] + + +def facts(): + return page("03 现状数据", 3, [ + section("§2", "现状:五个片区的四项读数", [ + indent([ + table(REGION_COLS, REGION_HEAD, REGION_ROWS, emphasis=True), + body("数据来源:巡检系统 2026 年第二季度导出;判定口径见 " + "§1.3。闭环率按「有整改记录且经复核」计,与月报一致。", + size=FS_META, color="$c-ink-faint", lh=LH_META, + width=BODY_W, name="来源行"), + ], gap=24), + clause("§2.1", [body( + "巡检次数与上报条数几乎同步下降,闭环率却没有跟着走:\n" + "东北片区巡到的次数最少,闭环时长反而最长 8.1 天。\n" + "这说明瓶颈不在巡得够不够勤,而在巡完之后没人接得住。")]), + ], gap=32), + ], gap=40) + + +# ------------------------------------------------------------------ 04 分析 +def analysis(): + quote = col("引文块", [ + body("我们不缺巡检,缺的是能被复算的巡检。", + size=FS_BODY, weight=600, width=1100, lh=1.5, name="引文"), + body("—— 华东区运营负责人,6 月复盘会记录", size=FS_META, + color="$c-ink-soft", lh=LH_META, width=1100, name="引文出处"), + ], gap=14, fill=solid("$c-deep"), padding=[32, 40], width=1200) + return page("04 分析", 4, [ + section("§3", "为什么抽查救不回来", [ + clause("§3.1", [body( + "抽查的样本由排班决定,而排班避开了最难去的那些门店。\n" + "越是偏远、越是人手紧的门店,被巡到的间隔越长,\n" + "于是问题最多的地方,恰好是我们了解得最少的地方。\n" + "这不是执行不力,是抽样方法自带的偏差。")]), + clause("§3.2", [body( + "闭环率停在 44%,不是因为没人整改,\n" + "而是因为整改完成后没有一个必须回填的动作。\n" + "没有回填,就没有记录;没有记录,复算就无从谈起。")]), + indent([quote]), + ], gap=28), + ], gap=40) + + +# ------------------------------------------------------------------ 05 方案 +PLAN_COLS = [ + (384, None, CJK), + (396, None, CJK), + (396, None, CJK), + (396, None, CJK), +] +PLAN_HEAD = ["评估维度", "甲 · 扩编巡检员", "乙 · 外包第三方", "丙 · 自检加抽核"] +PLAN_ROWS = [ + ["覆盖率", "提升有限", "可达九成", "全量覆盖"], + ["单店月成本", "高", "中", "低"], + ["落地周期", "三个月", "六周", "十周"], + ["数据一致性", "依赖个人经验", "依赖合同条款", "由系统约束"], + ["主要风险", "招聘周期偏长", "数据不在自己手里", "需要门店配合"], + ["结论", "不建议", "备选", "推荐"], +] + + +def options(): + return page("05 方案对比", 5, [ + section("§4", "三个方案,按同一组维度逐行回答", [ + indent([ + table(PLAN_COLS, PLAN_HEAD, PLAN_ROWS, emphasis=True), + body("推荐方案丙。它是三者里唯一让「记录」成为流程副产品的" + "一个,其余两个都还要靠人记得去做。", + size=FS_META, color="$c-ink-soft", lh=LH_META, + width=BODY_W, name="推荐说明"), + ], gap=24), + clause("§4.1", [body( + "成本按 240 家门店试算:甲需增编 11 人,年支出约 190 万;\n" + "乙的报价随门店数线性上涨,丙在第二年起低于两者的一半。")]), + ], gap=32), + ], gap=40) + + +# ------------------------------------------------------------------ 06 叙述 +def prospect(): + signature = col("署名引语", [ + body("把巡检做成一件不需要提醒的事,\n是这次改造真正的目标。", + size=FS_BODY, weight=500, color="$c-ink-soft", width=1100, + lh=1.6, name="引语"), + body("—— 项目组,2026 年 8 月", size=FS_META, color="$c-ink-faint", + lh=LH_META, width=1100, name="引语署名"), + ], gap=12, padding=[0, 0, 0, 36]) + bar = rect(ids, "引语竖线", width=2, height=132, fill=solid("$c-thread")) + return page("06 逆向叙述", 6, [ + section("§5", "若此事已成", [ + clause("§5.1", [body( + "到明年三月,每家门店在每个自然周都会留下完整的巡检记录。\n" + "记录不再依赖谁记得拍照,而是由流程本身产生:\n" + "检查项没有勾完,当天的巡检就不算结束。\n" + "区域经理在周一早晨看到的不是一份汇总表,\n" + "而是上周所有未闭环问题按门店排开的清单。\n" + "我们不再讨论覆盖率,因为覆盖率恒等于百分之百;\n" + "要讨论的是闭环时长,以及它为什么在某些门店偏长。")]), + indent([row("署名行", [bar, signature], gap=0, align="start")]), + ], gap=32), + ], gap=40, justify="center") + + +# ------------------------------------------------------------------ 07 疑问 +QA = [ + ("问:全量记录会不会把巡检变成打卡?", + "不会。检查项从 42 项压到 18 项,每项都要有照片或读数支撑,\n" + "勾选式的应付会在抽核环节被直接退回。"), + ("问:门店自检的结果可信吗?", + "抽核比例定在 15%,由区域经理随机指定,结果与自检并列存档。\n" + "连续两次抽核不一致的门店,恢复为人工巡检。"), + ("问:需要门店多花多少时间?", + "单次自检 12 分钟,比现行的纸质表单少 4 分钟。\n" + "时间省在录入上,不省在检查上。"), + ("问:这套记录会被用来考核门店吗?", + "前两个季度只用于发现问题,不进考核。\n" + "考核口径需要另行讨论,不在本备忘的范围内。"), +] + + +def questions(): + blocks = [] + for index, (question, answer) in enumerate(QA): + if index: + blocks.append(indent([rule(BODY_W, 1)])) + blocks.append(clause(f"§6.{index + 1}", [ + body(question, weight=600, lh=1.4, name="问"), + body(answer, color="$c-ink-soft", lh=1.65, name="答"), + ])) + return page("07 疑问", 7, [ + section("§6", "已经被问到的四个问题", blocks, gap=18), + ], gap=28) + + +# ------------------------------------------------------------------ 08 决议 +DECISIONS = [ + ("批准方案丙,在华东与华南两区先行试点。", + "运营中心 · 周敏", "2026-08-20"), + ("批准巡检系统改造预算 86 万元,分两期拨付。", + "财务部 · 陈立", "2026-08-27"), + ("批准抽核比例与退回规则写入门店运营手册。", + "门店运营组 · 李哲", "2026-09-10"), +] + + +def resolution(): + items = [] + for index, (what, who, due) in enumerate(DECISIONS): + if index: + items.append(rule(1200 - 80, 1)) + items.append(col("待批准事项", [ + row("事项行", [ + text(ids, "事项序号", f"{index + 1}", FS_CLAUSE, 500, + "$c-thread", family=NUM, width=40, growth="fixed-width", + line_height=round(FS_BODY * 1.5 / FS_CLAUSE, 3)), + body(what, width=1000, lh=1.5, name="事项"), + ], gap=16), + # 中文标签走 CJK、日期走西文族,各自一个节点:把 + # 「期限 2026-08-20」写成一个 Inter 节点,中文会掉进回退字体, + # 同一行里出现两种字面(实测可见)。 + row("责任行", [ + text(ids, "决策人", f"决策人 {who}", FS_META, 400, + "$c-ink-soft", family=CJK, width="fit_content", + growth="auto", line_height=LH_META), + text(ids, "期限标签", "期限", FS_META, 400, "$c-ink-soft", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + text(ids, "期限日期", due, FS_META, 500, "$c-ink-soft", + family=NUM, width="fit_content", growth="auto", + line_height=LH_META), + ], gap=12, padding=[0, 0, 0, 56]), + ], gap=10)) + block = col("决策块", items, gap=20, fill=solid("$c-deep"), + padding=[36, 40], width=1200) + sign = col("签署位", [ + rule(480, 1), + row("签署标签", [ + text(ids, "签署", "批准签署", FS_META, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + text(ids, "签署日期", "日期", FS_META, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + ], gap=280), + ], gap=12, width=480) + return page("08 决议", 8, [ + section("§7", "待批准事项", [ + indent([block, sign], gap=32), + # 末页是**陈述**不是信息:把开头立起来的那件事在这里收掉,而不 + # 是停在一张待办清单上。 + clause("§7.1", [body( + "三项批复完成后,本备忘归档为定稿并抄送三个部门;\n" + "未获批复的部分按原流程继续执行,下一次复核安排在 11 月。")]), + ], gap=32), + ], gap=36) + + +# ------------------------------------------------------------------ 板位 +# 3 板一行。行距 1440(而不是 1200):画布在帧上方以固定屏幕偏移画帧名, +# 在 3 宽 deck 铺满屏幕的缩放下,120 文档 px 的行距只合约 16 屏幕 px,第二 +# 行的帧名会压到上一行的板上。 +BOARD_STEP_X, BOARD_STEP_Y, PER_ROW = 2040, 1440, 3 + + +def build(): + boards = [cover(), background(), facts(), analysis(), + options(), prospect(), questions(), resolution()] + for index, board in enumerate(boards): + board["x"] = (index % PER_ROW) * BOARD_STEP_X + board["y"] = (index // PER_ROW) * BOARD_STEP_Y + return boards + + +# 对比度(WCAG 相对亮度比;投影场景正文自设门槛 4.5): +# c-ink on c-linen / c-band / c-deep 14.63 / 14.00 / 12.77 +# c-ink-soft on c-linen / c-band / c-deep 6.70 / 6.41 / 5.85 +# c-ink-faint on c-linen / c-band 4.29 / 4.11 ← 最低一对 +# c-thread on c-linen / c-deep 6.11 / 5.34 +# c-ink-faint 只承载页标、脚注与元信息标签(≥24px 的注释档),4.29 高于大 +# 字 3.0 的地板;正文一律走 c-ink 或 c-ink-soft。 +# c-rule 不参与:它是非文字装饰线(高 ≤2px),按 §4.4 的豁免规则排除。 + +if __name__ == "__main__": + write_doc(sys.argv[1], VARS, build(), "卷宗亚麻 · 文档备忘 deck") diff --git a/templates/step0/_generators/tpl_deck_gridpaper.py b/templates/step0/_generators/tpl_deck_gridpaper.py new file mode 100644 index 000000000..b0fed0624 --- /dev/null +++ b/templates/step0/_generators/tpl_deck_gridpaper.py @@ -0,0 +1,674 @@ +#!/usr/bin/env python3 +"""gridpaper-graphite-deck.op — 方格石墨 · 学术答辩档(8 页 1920×1080) + +spec: openpencil-docs/openpencil/generation/deck-system-0809.md §2 · D10 +落格:high formality × medium-high density × light + +锚点是实验记录本,锚的是**「过程被记录下来因此可被复核」**这件事 —— +不锚烧杯、分子式、齿轮这类学科符号。三个母题: + + 方格纸 48px 见方的极淡格线,所有元素落在格上;对齐是**可被看见的** + 标签舌 贴在内容块左上角、向左出血 24px 的一枚斜切标签,语义固定 + 蓝=定义/方法 · 绿=结果/示例 · 琥珀=局限/存疑 + 图注双联 展品与它的 so-what 强制成对:**没有 so-what 的展品不许上页**; + 反过来,遮住展品后那句话仍然成立,说明展品冗余,删图 + 引证槽 页底一条 1px 细线之下的引证带。**任何出现数据、图、他人结论 + 的页面必须有引证槽**,空槽即缺陷 + +### 网格与版心的对账(这一档唯一需要算的地方) + +spec 给的边距是「上 96 / 下 112 / 左右 112」,但 1920−112×2 = 1696 不是 48 +的整数倍 —— 若照抄,「所有元素落在 48 的整数倍上」这条就在第一页破功。 +本档的取法:**左 112 起排、内容宽取 35 格 = 1680,右边距因此是 128**。 +上下同理:上 96(2 格)+ 内容 864(18 格)+ 下 120。左右不等本身还顺手 +破掉了「万物居中且四边等距」这条 AI 指纹(spec §3.7 第 8 条)。 + +格线画成满幅而不是只画版心:记录本的格是纸的属性,不是版面的属性。 +y=720 那一根格线同时充当 04 页柱图的基线 —— 图不另画轴,**基线就是纸上 +本来就有的那条线**,这是「方格纸」这个母题少数几个能同时省掉装饰又增加 +可信度的地方。 + +### 密度槽位的计数口径 + +spec §3.2 把「一个数值 / 一条要点」各计 1 槽。柱图的 5 个数值标 + 5 个轴标 +若逐个计数,任何带图的页都会当场超载 —— 本档按**一个展品计 1 槽**、 +**一个编号条目计 1 槽**来数(与「一条要点计 1」同构)。逐页槽数写在各页 +函数的注释里,全部落在 spec 给的上限之内。 + +### 工程约束(spec §6) + +- 6.3 线一律 `rectangle`,不用 `line`(layout:none 下 `line` 吃文档绝对坐标)。 +- 6.4 layout:none 的 children[0] 在最上 —— 每页先内容、后页脚家具、 + **最后才是格线**,否则格线会盖在正文上。 +- 6.9 字体两层,产稿用保底层 `Noto Sans SC` + `Inter`。 +- 6.10 渲染栈没有 tabular 数字:05 页表格的数值列宽全部写死。 +- 6.13 rectangle 不递归渲染子节点 —— 标签舌、展品底一律 `frame`。 +- 6.15 板位 x = (i%3)*2040、y = (i//3)*1440。 + +对比度实测见文件末尾,最低一对 3.83(`graphite.faint`,只承载 ≥24px 的 +引证 / 页码,属 spec §4.4 的合法例外)。 +""" + +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from oplib import Ids, color_vars, frame, path, rect, solid, text, write_doc + +ids = Ids() + +# ---------------------------------------------------------------- 色板 +# +# spec §2 D10 的 oklch 表。两处推导值得在代码里留一句: +# grid.line 只比底低 0.05 —— 格子必须「在那里但不参与竞争」,一旦能被 +# 主动读到就从可信度变成了噪声; +# graphite 用带 chroma 的冷灰而不是纯黑 —— 模拟石墨反光,这是与「白底 +# 黑字学术 PPT」唯一但足够的分野。 +VARS = color_vars({ + "c-paper": "#F4F8F8", # 页面底 + "c-grid": "#E0E8E9", # 方格线(间距 48) + "c-panel": "#E8EEEF", # 展品底 / 方法块 + "c-hair": "#CBD0D1", # 分隔线 / 表格线 + "c-graphite": "#1F2329", # 主文字 + "c-soft": "#575B60", # 次级文字 + "c-faint": "#797E83", # 引证 / 页码(仅 ≥24px) + "c-blue": "#1D6294", # 索引:定义 / 方法(主 accent) + "c-green": "#33724C", # 索引:结果 / 示例 + "c-amber": "#A17221", # 索引:局限 / 存疑 +}) + +W, H = 1920, 1080 +GRID = 48 + +# 版心:左 112 起、35 格宽、上 96 起、18 格高。右 128 / 下 120 是余数, +# 不是随手写的 —— 见模块 docstring 的对账。 +LEFT, TOP = 112, 96 +CONTENT_W, CONTENT_H = GRID * 35, GRID * 18 # 1680 × 864 +RIGHT, BOTTOM = LEFT + CONTENT_W, TOP + CONTENT_H # 1792 / 960 + +CJK = "Noto Sans SC" +NUM = "Inter" + +# ---------------------------------------------------------------- 字阶 +COVER = (84, 1.10, -2) # round(84 × -0.02) = -2 +TITLE = (60, 1.18, 0) # 论断句页标题,≤2 行 +EXHIBIT = (36, 1.35, 0) # 展品标题 / 条目标题 +BODY = (30, 1.70, 0) # 正文,**30 是地板不是目标**(spec §2 D10 第 6 条) +CITE = (24, 1.45, 0) # 引证 / 页码 / 轴标 / 引用列表 + + +def th(step, lines=1): + size, line_height, _ = step + return round(size * line_height * lines) + + +# ---------------------------------------------------------------- 文本 +def txt(name, content, step, weight, color, *, inner, family=CJK, + align=None, width="fill_container"): + """文本节点,产稿时执行行长闸。 + + 这里的断言比 `qa/cjkcheck.py` 更严:**不看汉字占比,每一条硬换行都要 + 落在容量内**。cjkcheck 会跳过拉丁占比高的串(按 1em 一个字算它们是假 + 阳性),但拉丁比汉字窄,用汉字容量去卡它只会更保守 —— 保守的断言不会 + 放过真问题,只会多改几句文案。 + """ + size, line_height, spacing = step + per = int(inner // size) + # `fit_content` 的节点是收缩包裹的,永远不会折行 —— cjkcheck 也正是按 + # `growth: auto` 跳过它们的。对它断言只会得到假阳性。 + for line in ([] if width == "fit_content" else content.split("\n")): + assert len(line) <= per, ( + f"{name}: 「{line}」{len(line)} 字 > 该块容量 {per} 字" + f"(inner={inner} fs={size})—— 改文案或换页型,不许缩字号" + ) + return text(ids, name, content, size, weight, color, family=family, + line_height=line_height, spacing=spacing, width=width, + growth="auto" if width == "fit_content" else "fixed-width", + align=align) + + +def num(name, content, step, weight, color, *, width="fit_content", + align=None): + """数字与拉丁走西文族。跨行跨列要对齐的数值列宽一律写死(spec §6.10)。""" + size, line_height, spacing = step + return text(ids, name, content, size, weight, color, family=NUM, + line_height=line_height, spacing=spacing, width=width, + growth="auto" if width == "fit_content" else "fixed-width", + align=align) + + +# ---------------------------------------------------------------- 结构 +def block(name, x, y, width, children, *, gap=24, padding=None, fill=None, + align="start"): + node = frame(ids, name, width=width, height="fit_content", + layout="vertical", gap=gap, alignItems=align, + fill=fill or []) + if padding: + node["padding"] = padding + node["x"], node["y"] = x, y + node["children"] = children + return node + + +def row(name, x, y, width, children, *, gap=24, padding=None, fill=None, + align="start"): + node = frame(ids, name, width=width, height="fit_content", + layout="horizontal", gap=gap, alignItems=align, + fill=fill or []) + if padding: + node["padding"] = padding + if x is not None: + node["x"], node["y"] = x, y + node["children"] = children + return node + + +def hline(x, y, width, *, thickness=1, color="$c-hair"): + node = rect(ids, "细线", width=width, height=thickness, + fill=solid(color)) + node["x"], node["y"] = x, y + return node + + +# ---------------------------------------------------------------- 方格纸 +def grid_field(): + """满幅方格。**必须是每页 children 的最后一批** —— jian 的 index 0 在最上, + 写在前面格线就会横穿正文,看起来像被划掉了。 + + 格子锚在版心原点 (112, 96) 而不是画布原点:内容的左基线因此正好落在 + 一根格线上,「元素落在格上」这句话在第一眼就能被验证。 + """ + lines = [] + for k in range(-2, 38): + x = LEFT + k * GRID + if 0 <= x <= W: + node = rect(ids, "格线 · 竖", width=1, height=H, + fill=solid("$c-grid")) + node["x"], node["y"] = x, 0 + lines.append(node) + for k in range(-2, 21): + y = TOP + k * GRID + if 0 <= y <= H: + node = rect(ids, "格线 · 横", width=W, height=1, + fill=solid("$c-grid")) + node["x"], node["y"] = 0, y + lines.append(node) + return lines + + +def page(name): + node = frame(ids, name, width=W, height=H, layout="none", + fill=solid("$c-paper"), clipContent=True) + node["children"] = [] + return node + + +def finish(p, index, citation=None): + """页脚家具 + 格线,每页最后一步。 + + 引证槽的细线**每页都画**(含没有引证的封面与结论页):页码与页标位置 + 属于「不允许跨页变」的一栏(spec §3.3),线是那条基线的一部分;变的 + 只是线下写不写引证。 + """ + p["children"].append(hline(LEFT, BOTTOM, CONTENT_W)) + if citation: + p["children"].append(block("引证槽", LEFT, BOTTOM + 24, 1240, [ + txt("引证", citation, CITE, 400, "$c-faint", inner=1240), + ])) + p["children"].append(block("页码", RIGHT - 200, BOTTOM + 24, 200, [ + num("页码", f"{index} / 8", CITE, 400, "$c-faint", width=200, + align="right"), + ])) + p["children"] += grid_field() + return p + + +# ---------------------------------------------------------------- 标签舌 +TAB_H = 40 +TAB_BLEED = 24 + + +def index_tab(x, y, label, color, *, width=208): + """索引标签舌。左端 12px 斜切(非圆角),语义由颜色固定。 + + **向左出血 24px 是关键**:它让标签读作「贴上去的」而不是「排进去的」, + 同时天然破坏了统一左边距 —— 每页的左基线因此不是一条死线。 + + 高度取 40 而不是 spec 写的 32:标签内的文字要站在 24px 的字号地板之上 + (spec §3.4 <20 直接 FAIL、20–28 是 WARN 带),32 的舌高塞不下 24 的字 + 还留呼吸。这是往上调,不是往下让。 + """ + shape = path(ids, "标签舌 · 形", f"M12 0 L{width} 0 L{width} {TAB_H} L0 {TAB_H} Z", + width=width, height=TAB_H, fill=solid(color)) + shape["x"], shape["y"] = 0, 0 + caption = txt("标签舌 · 字", label, CITE, 600, "$c-paper", inner=width - 44, + width="fit_content") + caption["x"], caption["y"] = 30, 6 + node = frame(ids, f"标签舌 · {label}", width=width, height=TAB_H, + layout="none", fill=[]) + node["x"], node["y"] = x - TAB_BLEED, y + # children[0] 最上:字压在形上。 + node["children"] = [caption, shape] + return node + + +# ================================================================ 01 封面 +def cover(): + """槽位 5:短线不计(非文本)+ 主标 / 副标 / 作者 / 单位日期 / 页码。 + 重心压在版心下半 —— 整套八页里唯一一页把主体放在下三分之一。""" + p = page("01 封面") + mark = rect(ids, "起始短线", width=GRID, height=6, fill=solid("$c-blue")) + mark["x"], mark["y"] = LEFT, 384 + p["children"].append(mark) + + p["children"].append(block("主标", LEFT, 432, CONTENT_W, [ + txt("主标题", "夜间照明强度与城市鸟类\n鸣唱起始时间的关系", COVER, + 700, "$c-graphite", inner=CONTENT_W), + ])) + p["children"].append(block("副标", LEFT, 672, CONTENT_W, [ + txt("副标题", "三座城市 24 个样点、两个繁殖季的同步声学与照度监测", + BODY, 400, "$c-soft", inner=CONTENT_W), + ])) + p["children"].append(row("落款", LEFT, 816, CONTENT_W, [ + txt("作者", "陆停云 · 沈砚秋", CITE, 500, "$c-graphite", + inner=400, width="fit_content"), + txt("单位", "城市生态研究所 · 声景实验室", CITE, 400, "$c-faint", + inner=520, width="fit_content"), + num("日期", "2026.08", CITE, 400, "$c-faint"), + ], gap=32, align="center")) + return finish(p, 1) + + +# =========================================================== 02 问题与缺口 +GAP_COLS = [ + ("01", "夜间照明仍在扩张", [ + "全球人工夜间照明面积每年", + "增长约百分之二。三座城市的", + "地面照度中位数十年间由", + "5 lux 升至 12 lux。", + ]), + ("02", "觅食有数据,鸣唱没有", [ + "既有工作集中在觅食与迁徙", + "时序;鸣唱起始时间只有零散", + "记录,且多数未同步测量样", + "点的实际照度。", + ]), + ("03", "把两者同点同时量", [ + "本研究在同一样点同步记录", + "地面照度与鸣唱起始时间,", + "给出两者的剂量—反应关系,", + "而不是相关系数。", + ]), +] + + +def problem(): + """三段编号:现状 / 缺口 / 本文回答。槽位 6(标题 + 3 段 + 引证 + 页码), + 上限 6 —— 这一页正好用满,再加一句就该拆页。""" + p = page("02 问题与缺口") + p["children"].append(block("页标题", LEFT, TOP, CONTENT_W, [ + txt("标题", "已有研究说明照明推迟了觅食,\n却没有回答鸣唱是否同步位移", + TITLE, 700, "$c-graphite", inner=CONTENT_W), + ])) + + col_w = 528 + for index, (no, head, lines) in enumerate(GAP_COLS): + x = LEFT + index * (col_w + GRID) + p["children"].append(block(f"缺口 {no}", x, 384, col_w, [ + num("序号", no, CITE, 500, "$c-faint", width=col_w), + txt("小标题", head, EXHIBIT, 600, "$c-graphite", inner=col_w), + txt("说明", "\n".join(lines), BODY, 400, "$c-soft", inner=col_w), + ], gap=20)) + return finish(p, 2, + "[1] 陈黎 等,2024,城市生态学报,41(3): 217–229") + + +# ================================================================ 03 方法 +# 每步的说明压成**一行**:四步的说明各占两行时,流程块会从 528 一路排到 +# 1083,正好压进页底的引证槽(第一版实测被 audit 抓到四条 TEXT OVERLAP)。 +# 按 spec §3.1 的顺序,第一动作是缩短文案 —— 不是缩字号、也不是删引证槽。 +METHOD_STEPS = [ + ("01", "布点与配对", "八个样点覆盖 0.5 至 50 lux,亮暗成对"), + ("02", "同步测量", "声学记录仪与照度计同点同夜同步记录"), + ("03", "起始时间判读", "两名判读者独立标注,分歧交第三人裁定"), + ("04", "统计模型", "混合线性模型,照度取对数,控温度与云量"), +] + + +def method(): + """方法块(蓝标签舌)+ 四步编号行。槽位 8(标题 + 方法块 + 4 步 + 引证 + + 页码 = 8,上限 9)。编号行是横排三段式,与 02 的三栏不同型。""" + p = page("03 方法") + p["children"].append(block("页标题", LEFT, TOP, CONTENT_W, [ + txt("标题", "在同一样点上把照度与鸣唱起始时间同步记录", + TITLE, 700, "$c-graphite", inner=CONTENT_W), + ])) + + p["children"].append(index_tab(LEFT, 200, "定义 · 方法", "$c-blue")) + p["children"].append(block("方法块", LEFT, 240, CONTENT_W, [ + txt("方法陈述", + "本文把「鸣唱起始时间」定义为日落次日拂晓、样点上出现的第一段" + "持续两秒以上的种内鸣唱;\n「地面照度」取记录仪水平面上一米处的" + "照度中位数。两个量都在同一样点、同一夜内取得。", + BODY, 400, "$c-graphite", inner=CONTENT_W - 96), + ], padding=[48, 48], fill=solid("$c-panel"))) + + steps = [] + for index, (no, head, note) in enumerate(METHOD_STEPS): + if index: + steps.append(rect(ids, "步间细线", width="fill_container", + height=1, fill=solid("$c-hair"))) + steps.append(row(f"步骤 {no}", None, None, "fill_container", [ + num("序号", no, CITE, 500, "$c-faint", width=72), + txt("步骤名", head, EXHIBIT, 600, "$c-graphite", inner=336, + width=336), + txt("步骤说明", note, BODY, 400, "$c-soft", inner=1200, + width=1200), + ], gap=24, padding=[18, 0], align="start")) + p["children"].append(block("流程", LEFT, 528, CONTENT_W, steps, gap=0)) + return finish(p, 3, + "[2] 方沐 等,2023,动物行为学报,18(2): 96–108") + + +# =========================================================== 04 结果 · 图 +# 五个照度档的鸣唱提前量(分钟)。12 px / 分钟,柱顶因此都落在整数像素上。 +BARS = [("0.5 lux", 2.1), ("1 lux", 5.8), ("5 lux", 13.6), + ("20 lux", 22.4), ("50 lux", 30.9)] +BAR_W, BAR_GAP, BASELINE, PX_PER_MIN = 144, GRID, 720, 12 + + +def result_chart(): + """图左文右。展品占 20 格、解读占 14 格(58:42,不做 50/50)。 + + 图上没有 y 轴、没有网格线、没有图例 —— 数值直接标在柱顶,而基线用的 + 就是纸上那根 y=720 的格线。只有末档走 accent 蓝,其余四档走中性: + 结论在「最高一档」,着色即立场,立场只表达一次。 + + 槽位 8(标题 + 展品 + 图注双联 + 右标题 + 右说明×2 + 引证 + 页码)。 + 展品按一个单位计 1 槽,口径见模块 docstring。 + """ + p = page("04 结果 · 图") + p["children"].append(block("页标题", LEFT, TOP, CONTENT_W, [ + txt("标题", "照度每上升十倍,鸣唱起始时间提前约九分钟", + TITLE, 700, "$c-graphite", inner=CONTENT_W), + ])) + + for index, (label, minutes) in enumerate(BARS): + x = LEFT + index * (BAR_W + BAR_GAP) + height = round(minutes * PX_PER_MIN) + top = BASELINE - height + is_key = index == len(BARS) - 1 + bar = rect(ids, f"柱 {label}", width=BAR_W, height=height, + fill=solid("$c-blue" if is_key else "$c-hair")) + bar["x"], bar["y"] = x, top + p["children"].append(bar) + value = block(f"柱值 {label}", x, top - 56, BAR_W, [ + num("数值", f"{minutes:.1f}", BODY, 600, + "$c-blue" if is_key else "$c-graphite", width=BAR_W, + align="center"), + ]) + p["children"].append(value) + p["children"].append(block(f"轴标 {label}", x, 736, BAR_W, [ + num("轴标", label, CITE, 400, "$c-soft", width=BAR_W, + align="center"), + ])) + + # 图注双联:展品下一条 2px 蓝顶线,线下**一句结论**(不是图题)。 + # 判据:遮住上面这张图,这句话就不成立 —— 成立的话说明图是冗余的。 + p["children"].append(hline(LEFT, 816, 960, thickness=2, color="$c-blue")) + p["children"].append(block("图注双联", LEFT, 832, 960, [ + txt("so-what", "提前量在 5 lux 之后加速,说明存在阈值而非线性响应;" + "\n照明规划的着力点因此在低照度段,不在总量。", + BODY, 400, "$c-graphite", inner=960), + ])) + + read_x, read_w = 1120, 672 + p["children"].append(block("解读标题", read_x, 288, read_w, [ + txt("解读标题", "阈值出现在\n城市常见照度区间内", EXHIBIT, 600, + "$c-graphite", inner=read_w), + ])) + p["children"].append(block("解读一", read_x, 432, read_w, [ + txt("解读一", "0.5 与 1 lux 之间差异不显著;\n" + "5 lux 起提前量增幅变陡,\n" + "而 5 至 20 lux 正是三座城市\n住宅区道路照明的常见区间。", + BODY, 400, "$c-soft", inner=read_w), + ])) + p["children"].append(block("解读二", read_x, 684, read_w, [ + txt("解读二", "把照度压到 5 lux 以下,提前量\n" + "的中位数回到十分钟以内 ——\n这是本文唯一可操作的阈值。", + BODY, 400, "$c-soft", inner=read_w), + ])) + return finish(p, 4, + "[3] 照度与声学原始数据,城市生态研究所声景实验室,2026") + + +# =========================================================== 05 结果 · 表 +TABLE_COLS = (384, 216, 372, 324, 312) +TABLE_HEAD = ("照度档(lux)", "样点数", "提前量中位数(分)", "四分位距", "p 值") +TABLE_ROWS = [ + ("0.5 – 1", "5", "2.1", "1.4", "0.31"), + ("1 – 5", "5", "5.8", "2.0", "0.04"), + ("5 – 15", "5", "13.6", "3.1", "< 0.01"), + ("15 – 30", "5", "22.4", "3.8", "< 0.01"), + ("30 – 50", "4", "30.9", "4.6", "< 0.01"), +] + + +def table_row(name, cells, *, weight, color, fill=None, head=False): + kids = [] + for index, (width, content) in enumerate(zip(TABLE_COLS, cells)): + # 表头与数据用**同一条对齐规则**(首列左、数值列右)。第一版表头 + # 一律左对齐,结果「样点数」贴在列首、「5」贴在列尾,读起来像两张 + # 表叠在一起 —— 数值列的表头必须跟着数值走。 + align = "left" if index == 0 else "right" + if head: + kids.append(txt(f"{name} · 格", content, BODY, weight, color, + inner=width, width=width, align=align)) + else: + # 数值列全部走西文族 + 写死列宽:渲染栈没有 tabular 数字, + # 靠 fit_content 指望它们自己对齐,一行长一点整张表就抖。 + kids.append(num(f"{name} · 格", content, BODY, weight, color, + width=width, align=align)) + return row(name, None, None, "fill_container", kids, gap=24, + padding=[22, 16], fill=fill, align="start") + + +def result_table(): + """表格。表头 2px 蓝下线、行间 1px 细线、**末行无线**、斑马走展品底。 + 整框边线一根没有。槽位 10(标题 + 表头 + 5 行 + 双联 + 引证 + 页码)。 + + 与 04 的分工是硬规则:趋势用图,**精确数值比较才用表**,两者不许同页。 + """ + p = page("05 结果 · 表") + p["children"].append(block("页标题", LEFT, TOP, CONTENT_W, [ + txt("标题", "分档统计给出的提前量与照度呈单调关系", + TITLE, 700, "$c-graphite", inner=CONTENT_W), + ])) + + rows = [table_row("表头", TABLE_HEAD, weight=600, color="$c-graphite", + head=True), + rect(ids, "表头线", width="fill_container", height=2, + fill=solid("$c-blue"))] + for index, cells in enumerate(TABLE_ROWS): + if index: + rows.append(rect(ids, "行间细线", width="fill_container", + height=1, fill=solid("$c-hair"))) + rows.append(table_row(f"表行 {index + 1}", cells, weight=400, + color="$c-graphite", + fill=solid("$c-panel") if index % 2 else None)) + p["children"].append(block("表格", LEFT, 240, CONTENT_W, rows, gap=0)) + + p["children"].append(hline(LEFT, 840, CONTENT_W, thickness=2, + color="$c-blue")) + p["children"].append(block("图注双联", LEFT, 856, CONTENT_W, [ + txt("so-what", "1 至 5 lux 之间 p 值跨过 0.05," + "这一档是统计上的分界,也是照明规范该写的那个数。", + BODY, 400, "$c-graphite", inner=CONTENT_W), + ])) + return finish(p, 5, + "[3] 照度与声学原始数据,城市生态研究所声景实验室,2026") + + +# ================================================================ 06 局限 +LIMITS = [ + ("样本偏在温带", [ + "三座城市都位于北纬三十", + "到四十度之间。热带与高", + "纬度城市的鸣唱物候受日", + "长驱动更强,不宜外推。", + ]), + ("只覆盖六个物种", [ + "六个物种约占样点内个体", + "的七成,剩下三成、尤其", + "是夜行性种类的响应仍是", + "空白。", + ]), + ("照度不等于光谱", [ + "本文只记录了照度,未区", + "分光谱成分。蓝光占比可", + "能才是更直接的驱动量,", + "这需要另一组实验。", + ]), +] + + +def limitation(): + """三条局限,各带一枚琥珀标签舌。槽位 7(标题 + 3 条 + 引证 + 页码)。 + 局限页写在结论页之前而不是被藏进附录 —— 答辩的可信度来自它。""" + p = page("06 局限") + p["children"].append(block("页标题", LEFT, TOP, CONTENT_W, [ + txt("标题", "三个条件限制了这个结论能推广到多远", + TITLE, 700, "$c-graphite", inner=CONTENT_W), + ])) + + col_w = 528 + for index, (head, lines) in enumerate(LIMITS): + x = LEFT + index * (col_w + GRID) + p["children"].append(index_tab(x, 288, f"局限 0{index + 1}", + "$c-amber", width=168)) + p["children"].append(block(f"局限 {index + 1}", x, 360, col_w, [ + txt("局限标题", head, EXHIBIT, 600, "$c-graphite", inner=col_w), + txt("局限说明", "\n".join(lines), BODY, 400, "$c-soft", + inner=col_w), + ], gap=20)) + p["children"].append(block("适用范围", LEFT, 744, CONTENT_W, [ + txt("适用范围", "这三条都不改变结论的方向,只限定它的适用范围:" + "温带、六个物种、以照度为自变量。", + BODY, 400, "$c-graphite", inner=CONTENT_W), + ])) + return finish(p, 6, + "[4] 韦知远,2025,光生物学与物候,7(1): 33–48") + + +# ================================================================ 07 结论 +CONCLUSIONS = [ + "照度与鸣唱提前量之间是单调的剂量—反应关系", + "把地面照度压到 5 lux 以下,提前量回到十分钟以内", + "调整灯具遮光角比压低总功率更省电,也更有效", +] + + +def conclusion(): + """收尾页是结论不是「谢谢」—— Q&A 期间它会一直挂在屏幕上, + 那段时间应该被结论占据(spec §2 D10 Strictly avoid 1)。 + 槽位 6(标题 + 3 条 + 意义 + 页码)。""" + p = page("07 结论") + p["children"].append(index_tab(LEFT, 96, "结果 · 结论", "$c-green", + width=192)) + p["children"].append(block("页标题", LEFT, 168, CONTENT_W, [ + txt("标题", "把灯调暗两档,可以把鸣唱提前量压回十分钟以内", + TITLE, 700, "$c-graphite", inner=CONTENT_W), + ])) + + items = [] + for index, line in enumerate(CONCLUSIONS): + if index: + items.append(rect(ids, "条间细线", width="fill_container", + height=1, fill=solid("$c-hair"))) + items.append(row(f"结论 {index + 1}", None, None, "fill_container", [ + num("序号", f"0{index + 1}", CITE, 500, "$c-faint", width=72), + txt("结论", line, EXHIBIT, 500, "$c-graphite", inner=1584, + width=1584), + ], gap=24, padding=[26, 0], align="start")) + p["children"].append(block("结论列表", LEFT, 336, CONTENT_W, items, gap=0)) + + p["children"].append(block("意义", LEFT, 720, CONTENT_W, [ + txt("意义", "这意味着城市照明规划可以不必在道路亮度与生态成本之间" + "二选一:\n把同样的流明压低照射角、留在路面上,两个目标能同时" + "达成。", + BODY, 400, "$c-soft", inner=CONTENT_W), + ])) + return finish(p, 7) + + +# ================================================================ 08 引用 +# 每条两行:**作者与年份一行、出处一行**。这是引用列表本来的排法,也顺手 +# 把每一行都压进 34 字的容量内 —— 引证的可核对性来自结构,不来自挤在一行。 +REFERENCES = [ + ("[1] 陈黎,周砚,2024", "城市生态学报,41(3): 217–229"), + ("[2] 方沐,柯砚池,2023", "动物行为学报,18(2): 96–108"), + ("[3] 声景实验室,2026", "内部数据集 SL-26-04"), + ("[4] 韦知远,2025", "光生物学与物候,7(1): 33–48"), + ("[5] 苏槿,2022", "声景与城市,3(4): 51–66"), + ("[6] 何砚舟,罗青,2021", "鸟类学研究,12(2): 140–152"), + ("[7] 池屿,2024", "照明工程学报,35(6): 88–97"), + ("[8] 林停舟,2023", "生态学杂志,42(9): 2201–2213"), + ("[9] 邬砚,2020", "城市环境与健康,9(3): 12–24"), + ("[10] 谢岚溪,2025", "夜间生态学评论,2(1): 5–19"), +] + + +def references(): + """全页引证。两栏五行,24px —— 这一页是唯一允许整页只有一种字号的页, + 因为它本来就不是幻灯片,是一份可被逐条核对的清单。 + 槽位 13(标题 + 10 条 + 联系 + 页码),上限 14。""" + p = page("08 引用") + p["children"].append(block("页标题", LEFT, TOP, CONTENT_W, [ + txt("标题", "引用文献", EXHIBIT, 600, "$c-graphite", inner=CONTENT_W), + ])) + + col_w = 816 + for index, (head, source) in enumerate(REFERENCES): + x = LEFT + (index // 5) * (col_w + GRID) + y = 240 + (index % 5) * 120 + p["children"].append(block(f"引用 {index + 1}", x, y, col_w, [ + txt("引用 · 作者", head, CITE, 500, "$c-graphite", inner=col_w), + txt("引用 · 出处", source, CITE, 400, "$c-soft", inner=col_w), + ], gap=4)) + + p["children"].append(block("联系", LEFT, 864, CONTENT_W, [ + txt("联系", "通信作者:陆停云(城市生态研究所 · 声景实验室)", + CITE, 400, "$c-faint", inner=CONTENT_W), + ])) + return finish(p, 8) + + +# ---------------------------------------------------------------- 板位 +BOARD_X, BOARD_Y, PER_ROW = 2040, 1440, 3 + + +def build(): + boards = [cover(), problem(), method(), result_chart(), result_table(), + limitation(), conclusion(), references()] + for index, board in enumerate(boards): + board["x"] = (index % PER_ROW) * BOARD_X + board["y"] = (index // PER_ROW) * BOARD_Y + return boards + + +# 对比度(WCAG 相对亮度比,spec §2 D10 色板表实算值): +# c-graphite on c-paper 14.75 +# c-soft on c-paper 6.39 +# c-faint on c-paper 3.83 ← 仅承载 ≥24px 的引证 / 页码 / 轴标 +# c-graphite on c-panel 13.46(方法块、表格斑马行) +# c-blue on c-paper 6.08(标签舌反向同为 6.08) +# c-green on c-paper 5.37 +# c-amber on c-paper 3.97 ← 标签舌上的 24px 纸色字,属大字档(≥3.0) +# c-grid / c-hair 只画线不承载文字,按 spec §4.4 第 2 条豁免。 +# +# 字号地板(spec §3.4):最小 24,最大 84 ≥ 60 的层级线,84 / 30 = 2.8 ≥ 2.5。 +# 单页字阶档数:01=3 / 02=4 / 03=4 / 04=4 / 05=3 / 06=4 / 07=4 / 08=2,均 ≤4。 + +if __name__ == "__main__": + write_doc(sys.argv[1], VARS, build(), "方格石墨 · 学术答辩档") diff --git a/templates/step0/_generators/tpl_deck_ledger.py b/templates/step0/_generators/tpl_deck_ledger.py new file mode 100644 index 000000000..e831911f8 --- /dev/null +++ b/templates/step0/_generators/tpl_deck_ledger.py @@ -0,0 +1,773 @@ +#!/usr/bin/env python3 +"""ledger-tick-deck.op — 账簿勾格 · 竞品矩阵档(1920×1080 · 7 页) + +deck 体系 D12。落格 medium-high formality × medium-high density × light。 +定位:把「我们和别人各自能做什么」摊成一张能逐格核对的账 —— 三态记号、 +自家列高亮、合计行给结论。 + +### 锚点与色彩推导(采样 → 收敛 → 论证) + + - **采样**:手工账簿。淡黄账页、蓝红双色栏线(蓝画格、红画表头与合计)、 + 逐格勾画的记号、合计行的双线。锚的是**「逐格核对」这个动作本身**。 + - **收敛**:底 = 账页 oklch(0.960 0.016 92);线色两支(蓝 H245 / 红 + H25)**只作线不作文字**;记号三态用绿 + 中灰 + 浅灰。 + - **论证一**:**「不满足」用留空的浅灰短横,不画叉**。红叉是对竞品的价 + 值判断,会让整份材料读作攻击性推销而不是评估;留空是事实陈述。这条同 + 时规避了「红绿对立评分」这个已知的可信度杀手。 + - **论证二**:**只有自家列被着色,竞品列全部走中性**。着色即立场,立场 + 只表达一次 —— 整份 deck 里 `own.wash` 只出现在主矩阵的那一列。 + - **论证三**:蓝红两支线色的对比只有 3.13 级,这是刻意的。它们是**线不 + 是字**,对比一旦拉高就会与记号争夺注意力;几何质检对非文字装饰线 + (rectangle 且宽或高 ≤3px)按节点类型豁免,不按色值白名单豁免。 + +### 招牌母题 + + 1. **三态记号 tri-tick** —— 满足 = 一个 26px 的绿勾(两段折线,2.5px + 描边,非圆点);部分 = 一个 24×24 的中灰**半格**(正方形左半填充); + 不满足 = 一条 20×2px 的浅灰短横。**三态在形状上就可分辨,不依赖颜 + 色** —— 这是无障碍地板,也是与「红绿打分表」的分野。 + 2. **自家列 own-column** —— 整列 `own.wash` 底 + 2px 绿色外框(框从表头 + 顶到合计线),列头一枚绿色实心 chip。 + 3. **合计双线与结论行 tally-rule** —— 表尾上方 1px + 2px 红色双线,其下 + 一行不是数字合计而是**一句结论**。账簿的合计惯例被借来托住「所以 + 呢」。 + +### 负约束(Strictly avoid,逐条对应 spec §2 D12) + + - 不画红叉、不用红绿对立评分;不满足用留空短横。 + - 不放竞品 logo、不放竞品截图、不放任何可被认作贬低的视觉。 + - 只有自家列着色;竞品列一律中性,且列宽、行高、字号与自家列完全相同。 + - 蓝线与红线永远不承载文字。 + - 不用圆角、阴影、渐变。 + - 三态记号形状可分辨,不做成「三个不同颜色的圆点」。 + - 每一格只放一个记号字形,不放文字说明 —— 需要说明就进 05 / 06 页。 + - 评估维度必须在 02 页给出可核实的定义;无定义的维度不进矩阵。 + - 矩阵行数上限 8、列数上限 5;超了拆页,绝不缩行高。 + - 结论行是句子不是分数。不做加权总分 —— 总分把所有取舍藏进一个数字里, + 正是矩阵要避免的。 + +### 工程约束(spec §6,逐条踩过的坑) + + - **字体走保底层**:只写 `Noto Sans SC` 与 `Inter`。首选字体(思源黑 / + 霞鹜新晰黑 / IBM Plex Mono)不在渲染字体包内,写了会静默回退到 Roboto + 并触发「量 A 字体画 B 字体」的裁切偏心。 + - **数值与记号列的列宽写死**:渲染栈没有 tabular 数字,靠 fit_content 让 + 格子自己对齐必然抖。 + - **不用 line 节点、不用 dashPattern**:格线、双线、刻度全部是 + rectangle;勾是两段 rectangle + rotation(rotation 是**度**,绕节点中 + 心)。 + - **格与格之间放 1px 真格线节点**,不靠相邻底色差分格:两个同色矩形贴在 + 一起会渲成一整块;插进去的 rule 同时让相邻单元格不再是「相邻」, + `SIBLING_JAM_GAP` 也就无从谈起。 + - **叠放层 children[0] 在最上**:自家列外框写在数组第一个,否则会被表体 + 盖住。 + - **rectangle 不递归渲染子节点**:图例里的「记号 + 说明」一律用 frame / + group,不用 rectangle 当容器。 + - **顶层一次性给出整棵 7 帧树**,每帧显式写 x/y(板位 2040 × 1440)。 + +字号(§3.4 硬地板:任意文本 ≥20、注释 ≥22、全 deck 最大 ≥60、最大 ≥ 2.5 × +正文):封面主标 88 / 1.10 / −2(= 3.14 × 正文)· 页标题 56 / 1.20 · 条目标 +题 32 · 表头与行标签 28 · 正文 28 / 1.70 · 脚注与页码 24 / 1.5。 + +对比度实测见文件末尾;承载文字的最低一对是 4.14。 +""" + +import math +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from oplib import Ids, color_vars, frame, group, rect, solid, text, write_doc + +ids = Ids() + +VARS = color_vars({ + "c-paper": "#F5F2E6", # 页面底 · 账页 + "c-band": "#EBE6D8", # 斑马行 + "c-ink": "#221F1B", # 主文字 14.63 : paper + "c-ink-soft": "#5A5652", # 次级文字 6.48 + "c-ink-faint": "#78746F", # 脚注 / 页码 4.14 + "c-rule-blue": "#88A2B9", # 账簿蓝格线(非文字) + "c-rule-red": "#BD7670", # 表头线 / 合计双线(非文字) + "c-tick": "#2F7442", # 记号:满足 / 自家框 5.06 + "c-tick-half": "#888682", # 记号:部分满足(非文字) + "c-tick-pale": "#C6C4C1", # 记号:不满足(留空短横) + "c-own": "#DFF3E2", # 自家列整列底 14.11(c-ink) +}) + +CJK = "Noto Sans SC" +NUM = "Inter" + +W, H = 1920, 1080 +PAGES = 7 +DECK_LABEL = "客服工单系统 · 能力核对表" + +PAD_TOP, PAD_BOTTOM, PAD_X = 88, 104, 96 +INNER = W - PAD_X * 2 # 1728 + +FS_COVER, FS_TITLE, FS_LEAD = 88, 56, 44 +FS_ITEM, FS_BODY, FS_META = 32, 28, 24 +LH_DISPLAY, LH_TITLE, LH_BODY, LH_META = 1.10, 1.20, 1.70, 1.50 + +# 矩阵。行标签列固定 360,其余四列等分;四条 1px 竖格线也要算进总宽, +# 否则表尾会溢出画幅(列宽没有自动分配,写错就是溢出)。 +COL_LABEL, MATRIX_COLS = 360, 4 +COL_DATA = (INNER - COL_LABEL - MATRIX_COLS) // MATRIX_COLS # 341 +ROW_H = 72 +assert COL_LABEL + MATRIX_COLS * COL_DATA + MATRIX_COLS == INNER + + +# ------------------------------------------------------------------ 骨架 +def col(name, children, *, gap=0, width="fill_container", fill=None, **props): + node = frame(ids, name, width=width, height="fit_content", + layout="vertical", gap=gap, fill=fill or [], **props) + node["children"] = children + return node + + +def row(name, children, *, gap=0, align="start", width="fill_container", + fill=None, height="fit_content", **props): + node = frame(ids, name, width=width, height=height, layout="horizontal", + gap=gap, alignItems=align, fill=fill or [], **props) + node["children"] = children + return node + + +def hrule(width, thickness=1, color="$c-rule-blue"): + """一条横线。**只用 rectangle**:`line` 在 layout:none 下吃的是文档绝对 + 坐标,会跑到画布的另一个角落去。""" + return rect(ids, "格线", width=width, height=thickness, fill=solid(color)) + + +def vrule(height=ROW_H, thickness=1, color="$c-rule-blue"): + return rect(ids, "竖格线", width=thickness, height=height, + fill=solid(color)) + + +# 拉丁与数字在 CJK 字体里约占半个字身。取 0.6 而不是 0.5 是留一档余量: +# 这个系数只决定断言的松紧,宁可早报一行也不要漏一行。 +LATIN_EM = 0.6 + + +def line_em(line): + """一行文字的宽度,单位是「字」。CJK 记 1,其余记 LATIN_EM。""" + return sum(1.0 if ch > "⿿" else LATIN_EM for ch in line) + + +def fits(content, size, width): + """产稿期的折行断言:改文案当场报错,不必跑完闸再回来猜哪一行折了。 + + 量的是**渲染真实宽度**(拉丁半宽),不是 cjkcheck 的 1em 保守模型 —— + 后者会把数字混排句判成折行,而它实际排得下。两者是互补的:这里守「不 + 许发生自动折行」,闸守「万一折了会不会出孤字末行 / 行首标点」。 + + 断点一律写死在文案里,所以每一硬行都要自己排得下。 + """ + if not isinstance(width, (int, float)) or not isinstance(content, str): + return + if not content.strip(): + return + per = width / size + for line in content.split("\n"): + if line_em(line) > per: + raise ValueError( + f"断行超容量:{line!r} 折合 {line_em(line):.1f} 字 > 每行 " + f"{per:.1f} 字(宽 {width} · 字号 {size})。按 §3.1 缩短文" + f"案、换页型或拆页,不缩字号。") + + +def body(content, *, size=FS_BODY, weight=400, color="$c-ink", width=None, + lh=LH_BODY, family=CJK, spacing=0, align=None, name="正文"): + """一段文字。断点写死在文案里 —— 当前 wrap_text 对 CJK 是逐字符断行、 + 没有标点避头尾,交给自动折行会在「。」前面断开。""" + fits(content, size, width) + return text(ids, name, content, size, weight, color, family=family, + line_height=lh, width=width or "fill_container", + growth="fixed-width", align=align, spacing=spacing) + + +def mono(content, *, size=FS_META, weight=500, color="$c-ink-faint", + spacing=0, name="标注"): + """数字与拉丁一律走西文族 —— 让中文字体去渲染数字会字宽不齐,列就抖 + 了。""" + return text(ids, name, content, size, weight, color, family=NUM, + line_height=LH_META, width="fit_content", growth="auto", + spacing=spacing) + + +def index_mark(number, *, color="$c-rule-red", width=46): + """序号。**宽度写死** —— Inter 在当前栈里不保证等宽数字,`01` 比 `03` + 窄,跟着它排的标题就会一行一个起点(实测可见)。""" + return text(ids, "序号", f"{number:02d}", FS_META, 500, color, + family=NUM, line_height=LH_META, width=width, + growth="fixed-width") + + +def footer(index): + """每页同一位置的页脚。位置锁死(§3.3 的「页码与页标位置不许跨页 + 变」),内容左右分置。""" + return row("页脚", [ + text(ids, "册名", DECK_LABEL, FS_META, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + mono(f"p. {index} / {PAGES}", name="页码"), + ], gap=48, width="fill_container", justifyContent="space_between") + + +def page(name, index, children, *, gap=32, decor=(), anchor="start"): + """一页。固定 1920×1080,绝不 fit_content:投影比例是硬约束。 + + 页脚永远是正文层的最后一个孩子 + `space_between`,所以内容从上边距往下 + 排、页脚贴着下边距,不需要为每一页手算高度。 + """ + content = frame(ids, f"{name} · 正文", width="fill_container", + height="fill_container", layout="vertical", + padding=[PAD_TOP, PAD_X, PAD_BOTTOM, PAD_X], + # 正文与页脚之间是固定的一档间距,不跟着页内节奏走: + # 页脚和脚注同为 24px 灰字,靠得近会读成同一段。 + gap=56, justifyContent="space_between", fill=[]) + stacked = [col("内容", list(children), gap=gap), footer(index)] + if anchor == "end": + # 构图重心下沉:一个撑满剩余高度的空撑子把内容顶到页脚上方。 + # 不许页页都锚在同一个 y 上,收尾页尤其不该和内页一个重心。 + spacer = frame(ids, "留白撑子", width="fill_container", + height="fill_container", layout="none", fill=[]) + stacked.insert(0, spacer) + content["children"] = stacked + shell = frame(ids, name, width=W, height=H, layout="none", + fill=solid("$c-paper"), clipContent=True) + if decor: + ornament = frame(ids, f"{name} · 账页格线", width="fill_container", + height="fill_container", layout="none", fill=[]) + ornament["children"] = list(decor) + # children[0] 在最上:正文层写在前面,格线永远在字的下面。 + shell["children"] = [content, ornament] + else: + shell["children"] = [content] + return shell + + +def page_title(title): + return body(title, size=FS_TITLE, weight=700, lh=LH_TITLE, name="页标题") + + +# ------------------------------------------------------------------ 三态记号 +# +# 三态在**形状**上就可分辨:勾(两段折线)/ 半格(正方形左半填充)/ 短横。 +# 颜色只是第二重线索 —— 色觉障碍读者、黑白打印稿都要能读出这三态。 +TICK_BOX = 26 +TICK_STROKE = 2.5 + + +def _segment(name, x1, y1, x2, y2, color): + """一段带角度的笔画。rectangle + rotation(度,绕节点中心)—— + `line` 节点在 layout:none 下会跑到文档绝对坐标去。""" + length = math.hypot(x2 - x1, y2 - y1) + angle = math.degrees(math.atan2(y2 - y1, x2 - x1)) + seg = rect(ids, name, width=round(length, 2), height=TICK_STROKE, + fill=solid(color)) + seg["x"] = round((x1 + x2) / 2 - length / 2, 2) + seg["y"] = round((y1 + y2) / 2 - TICK_STROKE / 2, 2) + seg["rotation"] = round(angle, 2) + return seg + + +def tick_full(): + """满足:一个绿勾。两段折线,不是圆点、不是对号字符。""" + box = group(ids, "记号 · 满足", width=TICK_BOX, height=TICK_BOX, + layout="none", fill=[]) + box["children"] = [ + _segment("勾 · 长笔", 9.5, 20.5, 23.0, 5.0, "$c-tick"), + _segment("勾 · 短笔", 3.0, 14.0, 10.0, 21.0, "$c-tick"), + ] + return box + + +def tick_half(): + """部分满足:一个正方形,左半填实。""" + outline = rect(ids, "半格 · 外框", width=24, height=24, fill=[], + stroke={"thickness": 1.5, "fill": solid("$c-tick-half")}) + outline["x"], outline["y"] = 1, 1 + filled = rect(ids, "半格 · 左半", width=12, height=24, + fill=solid("$c-tick-half")) + filled["x"], filled["y"] = 1, 1 + box = group(ids, "记号 · 部分满足", width=TICK_BOX, height=TICK_BOX, + layout="none", fill=[]) + box["children"] = [outline, filled] + return box + + +def tick_none(): + """不满足:一条留空的短横。**不画叉** —— 叉是价值判断,横是事实。""" + bar = rect(ids, "短横", width=20, height=2, fill=solid("$c-tick-pale")) + bar["x"], bar["y"] = 3, 12 + box = group(ids, "记号 · 不满足", width=TICK_BOX, height=TICK_BOX, + layout="none", fill=[]) + box["children"] = [bar] + return box + + +TICKS = {"full": tick_full, "half": tick_half, "none": tick_none} + + +# ------------------------------------------------------------------ 主矩阵 +DIMENSIONS = [ + ("工单自动分派", "按技能组、负载与优先级自动指派,\n无需人工转派即计满足。"), + ("多渠道接入", "邮件、网页表单、即时通讯、电话四类中,\n支持三类及以上即计满足。"), + ("时效承诺", "可按客户分级设定响应与解决时限,\n并在超时前自动触发升级。"), + ("知识库联动", "坐席能在工单内检索并插入知识条目,\n且能把新写的条目回写。"), + ("数据可导出", "全量工单与会话可导出为结构化文件,\n导出不限频次、不限字段。"), + ("私有化部署", "可部署在客户自有服务器,\n且功能与云端版本一致。"), +] + +# (维度, 我方, 甲, 乙, 丙)。自家列一样只是三态之一 —— 六项里我们也有一项 +# 只做到部分满足,写出来比写满六个勾可信。 +MATRIX = [ + ("工单自动分派", "full", "full", "half", "none"), + ("多渠道接入", "full", "full", "full", "half"), + ("时效承诺", "full", "half", "none", "half"), + ("知识库联动", "full", "half", "full", "none"), + ("数据可导出", "full", "full", "half", "full"), + ("私有化部署", "half", "none", "none", "full"), +] +COLUMN_HEADS = ["本产品", "竞品甲", "竞品乙", "竞品丙"] + + +def matrix_cell(state, *, own=False, zebra=False): + fill = solid("$c-own") if own else (solid("$c-band") if zebra else []) + cell = frame(ids, "记号格", width=COL_DATA, height=ROW_H, + layout="horizontal", justifyContent="center", + alignItems="center", gap=0, fill=fill) + cell["children"] = [TICKS[state]()] + return cell + + +def matrix_head(): + """表头行。自家列的列头是一枚绿色实心 chip,其余三列走中性文字 —— + 着色即立场,立场只表达一次。""" + label = frame(ids, "表头 · 维度", width=COL_LABEL, height=ROW_H, + layout="horizontal", alignItems="center", padding=[0, 24], + gap=0, fill=[]) + label["children"] = [ + body("评估维度", size=FS_BODY, weight=600, color="$c-ink-soft", + lh=1.4, width=COL_LABEL - 48, name="表头文字"), + ] + cells = [label] + for index, name in enumerate(COLUMN_HEADS): + own = index == 0 + box = frame(ids, "表头格", width=COL_DATA, height=ROW_H, + layout="horizontal", justifyContent="center", + alignItems="center", gap=0, + fill=solid("$c-own") if own else []) + if own: + # 圆角字段整套一个都不写(默认就是直角)。写 `cornerRadius: 0` + # 语义上没错,但会让「grep 圆角零命中」这道机器核多一条噪声。 + chip = frame(ids, "自家标记", width="fit_content", + height="fit_content", layout="horizontal", + padding=[8, 18], gap=0, + justifyContent="center", alignItems="center", + fill=solid("$c-tick")) + chip["children"] = [ + text(ids, "自家标记文字", name, FS_BODY, 600, "$c-paper", + family=CJK, width="fit_content", growth="auto", + line_height=1.3), + ] + box["children"] = [chip] + else: + box["children"] = [ + text(ids, "表头格文字", name, FS_BODY, 500, "$c-ink-soft", + family=CJK, width="fit_content", growth="auto", + line_height=1.4), + ] + cells.append(vrule()) + cells.append(box) + return row("矩阵表头", cells, gap=0, height=ROW_H, align="stretch") + + +def matrix_row(label, states, zebra): + fill = solid("$c-band") if zebra else [] + label_cell = frame(ids, "行标签", width=COL_LABEL, height=ROW_H, + layout="horizontal", alignItems="center", + padding=[0, 24], gap=0, fill=fill) + label_cell["children"] = [ + # 定宽写死是为了让行标签折行在产稿期就报出来:行标签一折行,整行 + # 72 的行高就被顶开,六行矩阵会跟着错位。 + body(label, size=FS_BODY, weight=500, lh=1.4, width=COL_LABEL - 48, + name="行标签文字"), + ] + cells = [label_cell] + for index, state in enumerate(states): + cells.append(vrule()) + cells.append(matrix_cell(state, own=index == 0, zebra=zebra)) + return row("矩阵行", cells, gap=0, height=ROW_H, align="stretch") + + +def matrix(): + """整张矩阵 + 自家列外框。 + + 外框是一个叠在表体上的空描边 frame,**写在 children[0]**(layout:none + 的 z-order 是第一个在最上);它没有填充,所以不会盖住格子里的记号。 + """ + rows = [hrule(INNER), matrix_head(), hrule(INNER, 2, "$c-rule-red")] + height = 1 + ROW_H + 2 + for index, (label, *states) in enumerate(MATRIX): + if index: + rows.append(hrule(INNER)) + height += 1 + rows.append(matrix_row(label, states, zebra=index % 2 == 1)) + height += ROW_H + table = col("表体", rows, gap=0) + own_frame = frame(ids, "自家列外框", width=COL_DATA + 2, height=height, + layout="none", fill=[], + stroke={"thickness": 2, "fill": solid("$c-tick")}) + own_frame["x"], own_frame["y"] = COL_LABEL, 0 + stack = frame(ids, "主矩阵", width=INNER, height=height, layout="none", + fill=[]) + stack["children"] = [own_frame, table] + return stack + + +def legend(): + items = [] + for state, label in (("full", "满足"), ("half", "部分满足"), + ("none", "不满足")): + item = row("图例项", [ + TICKS[state](), + text(ids, "图例文字", label, FS_META, 400, "$c-ink-soft", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + ], gap=12, align="center", width="fit_content") + items.append(item) + items.append(text(ids, "图例说明", + "记号形状可分辨,不依赖颜色;「不满足」不画叉。", + FS_META, 400, "$c-ink-faint", family=CJK, + width="fit_content", growth="auto", + line_height=LH_META)) + return row("三态图例", items, gap=44, align="center") + + +def tally(sentence): + """合计双线 + 结论行。账簿在这里写合计,我们写一句话 —— 不做加权总 + 分,总分会把所有取舍藏进一个数字里。""" + return col("合计", [ + hrule(INNER, 1, "$c-rule-red"), + frame(ids, "双线间隙", width=INNER, height=4, layout="none", fill=[]), + hrule(INNER, 2, "$c-rule-red"), + body(sentence, size=FS_ITEM, weight=500, lh=1.5, name="结论行"), + ], gap=0) + + +# ------------------------------------------------------------------ 01 封面 +def cover(): + # 账页格线:右侧一片留空的账格。它是实线、满不透明、大到会被画幅裁切 + # ——「4-6% 不透明度的装饰形状」那条指纹的反面。 + ruling = [] + for i in range(9): + line = hrule(760, 1) + line["x"], line["y"] = 1064, 268 + i * 72 + ruling.append(line) + top = hrule(760, 2, "$c-rule-red") + top["x"], top["y"] = 1064, 196 + ruling.insert(0, top) + for i in range(1, 4): + column = rect(ids, "账格竖线", width=1, height=9 * 72, + fill=solid("$c-rule-blue")) + column["x"], column["y"] = 1064 + i * 190, 196 + ruling.append(column) + + return page("01 封面", 1, [ + col("封面文字", [ + # 中文与拉丁各自一个节点:混在一个 Inter 节点里,中文会掉进回退 + # 字体,同一行出现两种字面。 + row("册头", [ + text(ids, "册头中文", "竞品能力核对", FS_META, 500, + "$c-ink-faint", family=CJK, width="fit_content", + growth="auto", line_height=LH_META), + mono("· 2026 Q3", spacing=2, name="册头周期"), + ], gap=10, align="center", width="fit_content"), + body("把能做与不能做\n摊在同一张账上", size=FS_COVER, weight=700, + lh=LH_DISPLAY, spacing=-2, width=1000, name="主标题"), + body("六项能力、四家产品,逐格核对。\n" + "记号只陈述事实,不打分、不排名。", + size=30, color="$c-ink-soft", width=1000, name="副标题"), + body("评估范围:面向 50–500 人团队的客服工单系统,\n" + "依据公开文档与试用账号实测,数据截止 2026-07-31。", + size=FS_BODY, color="$c-ink-soft", width=1000, lh=1.6, + name="评估范围"), + ], gap=28), + ], gap=32, decor=ruling) + + +# ------------------------------------------------------------------ 02 口径 +def criteria(): + cells = [] + for index, (term, rule_text) in enumerate(DIMENSIONS): + item = col("维度定义", [ + row("维度名", [ + index_mark(index + 1), + text(ids, "维度术语", term, FS_ITEM, 600, "$c-ink", + family=CJK, width="fit_content", growth="auto", + line_height=1.35), + ], gap=0, align="center"), + # 口径与术语对齐到同一条左线:序号列宽 46,正文让出同样多。 + col("口径正文", [ + body(rule_text, color="$c-ink-soft", width=734, lh=1.6, + name="判定口径"), + ], padding=[0, 0, 0, 46]), + ], gap=10, width=780) + cells.append(item) + left = col("口径左列", cells[0::2], gap=52, width=780) + right = col("口径右列", cells[1::2], gap=52, width=780) + return page("02 评估口径", 2, [ + page_title("先说清楚每一格是怎么判的"), + body("六项维度、六条口径。判定只回答「做到没做到」," + "不回答「做得好不好」——后者需要的证据这张表给不了。", + color="$c-ink-soft", lh=1.6, name="口径引导"), + row("口径两列", [left, right], gap=INNER - 780 * 2), + body("口径与记号规则在评估开始前确定,评估过程中未作调整;" + "无定义的维度不进矩阵。", + size=FS_META, color="$c-ink-faint", lh=LH_META, name="口径脚注"), + ], gap=40) + + +# ------------------------------------------------------------------ 03 矩阵 +def board(): + return page("03 主矩阵", 3, [ + page_title("六项能力,逐格核对"), + matrix(), + legend(), + tally("六项里我们满足五项,唯一的缺口是私有化部署;" + "今天必须私有部署的客户,应当选丙。"), + ], gap=28) + + +# ------------------------------------------------------------------ 04 分位 +SEG_W = 299 +BAR_W = SEG_W * 4 + 3 +QUARTILES = [ + ("工单首响时长", 0.62, + "落在第三四分位:比同类的中位数快,但没有到最快的那一档。"), + ("单座席月成本", 0.28, + "落在第一四分位:自动分派省下的人力,直接反映在这一格上。"), + ("私有化部署能力", 0.12, + "落在第一四分位的左端:这是我们承认的短板,排在明年一季度。"), +] + + +def quartile_bar(position): + """四等分刻度条 + 一枚位置标。四段之间是 1px 真格线,不靠底色差分段 + ——两个同色矩形贴在一起会被渲成一整块。""" + segments = [] + for index in range(4): + if index: + segments.append(vrule(40)) + segments.append(rect(ids, "四分位段", width=SEG_W, height=40, + fill=solid("$c-band"))) + track = row("刻度轨", segments, gap=0, width=BAR_W, height=40, + align="stretch") + track["x"], track["y"] = 0, 8 + marker = rect(ids, "位置标", width=6, height=56, fill=solid("$c-tick")) + marker["x"], marker["y"] = round(position * BAR_W) - 3, 0 + bar = frame(ids, "四分位条", width=BAR_W, height=56, layout="none", + fill=[]) + bar["children"] = [marker, track] + return bar + + +def quartile_scale(): + """四分位刻度头。四段各自具名,位置标的含义写在同一行 —— 记号在这一档 + 从不靠图注之外的东西解释自己。""" + cells = [] + for index in range(4): + if index: + cells.append(vrule(28, color="$c-paper")) + box = frame(ids, "刻度名", width=SEG_W, height=28, + layout="horizontal", justifyContent="center", + alignItems="center", gap=0, fill=[]) + box["children"] = [mono(f"Q{index + 1}", name="刻度文字")] + cells.append(box) + scale = row("刻度头", cells, gap=0, width=BAR_W, height=28, + align="stretch") + note = row("位置标说明", [ + rect(ids, "说明标", width=6, height=24, fill=solid("$c-tick")), + text(ids, "说明文字", "本产品所在位置", FS_META, 400, "$c-ink-soft", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + ], gap=12, align="center", width="fit_content") + return row("刻度行", [scale, note], gap=48, align="center") + + +def quartiles(): + groups = [] + for name, position, reading in QUARTILES: + groups.append(col("分位组", [ + row("分位名", [ + text(ids, "分位标题", name, FS_ITEM, 600, "$c-ink", + family=CJK, width="fit_content", growth="auto", + line_height=1.35), + mono(f"{int(position * 100)}", color="$c-ink-faint", + name="分位读数"), + text(ids, "分位单位", "分位", FS_META, 400, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=LH_META), + ], gap=10, align="center"), + quartile_bar(position), + body(reading, color="$c-ink-soft", width=1200, lh=1.6, + name="读法"), + ], gap=16)) + return page("04 分位刻度", 4, [ + page_title("同类产品里,我们各自站在哪一段"), + quartile_scale(), + col("分位组列", groups, gap=52), + ], gap=32) + + +# ------------------------------------------------------------------ 05 差距 +GAPS = [ + ("私有化部署尚未开放", + "现状:仅提供专属云,客户不能把数据放在自己机房。", + "计划:2027 年一季度发布可交付的私有部署包,先对金融与医疗行业开放。"), + ("电话渠道依赖第三方", + "现状:电话接入要另接一家服务商,工单里只能看到通话记录链接。", + "计划:四季度完成自建话务网关,通话录音与转写直接落在工单里。"), + ("知识库回写要管理员确认", + "现状:坐席写的新条目需要管理员审核后才进知识库,平均滞后 2 天。", + "计划:三季度上线分级权限,高级坐席可直接发布,审核转为抽查。"), +] + + +def gaps(): + items = [] + for index, (title, now, plan) in enumerate(GAPS): + if index: + items.append(hrule(INNER)) + items.append(row("差距条", [ + tick_half(), + col("差距文字", [ + text(ids, "差距标题", title, FS_ITEM, 600, "$c-ink", + family=CJK, width="fit_content", growth="auto", + line_height=1.35), + body(now, color="$c-ink-soft", width=1400, lh=1.55, + name="现状"), + body(plan, color="$c-ink", width=1400, lh=1.55, name="计划"), + ], gap=8), + ], gap=28, align="start")) + return page("05 差距", 5, [ + page_title("三处我们还没做到的"), + body("差距按能被验证的方式写:现状是今天的事实,计划带月份。" + "没有计划的差距不写进这一页,写了也只是姿态。", + color="$c-ink-soft", lh=1.6, name="差距引导"), + col("差距列", items, gap=40), + ], gap=40) + + +# ------------------------------------------------------------------ 06 优势 +# 断点写死在文案里:列宽 532、字号 28 时一行 18 字,这里每行 ≤17 字。 +STRENGTHS = [ + ("自动分派命中率", + "工单进队列后按技能组\n与实时负载自动指派,\n不需要人工转派。", + "试用期 3200 单,\n人工转派 47 单,占 1.5%。"), + ("导出不设限", + "全量工单、会话与附件\n元数据可随时导出为\n结构化文件。", + "单次导出 12 万条耗时 96 秒,\n字段与后台完全一致。"), + ("超时前先升级", + "按客户分级设定时限,\n剩余两成时长时自动\n升级到组长。", + "首响超时率从 8.4% 降到 2.1%,\n已连续两个季度。"), +] + + +def strengths(): + columns = [] + width = 532 + for index, (title, what, proof) in enumerate(STRENGTHS): + if index: + # 列与列之间是一条真的账簿竖线,不是纯留白 —— 这一页因此仍读作 + # 「账」,而不是三张并排的卡片。 + columns.append(vrule(392)) + fits(title, FS_ITEM, width) + columns.append(col("优势列", [ + tick_full(), + text(ids, "优势标题", title, FS_ITEM, 600, "$c-ink", family=CJK, + width=width, growth="fixed-width", line_height=1.35), + body(what, color="$c-ink-soft", width=width, lh=1.7, + name="说明"), + hrule(72, 2, "$c-rule-red"), + row("证据行", [ + text(ids, "证据标签", "证据", FS_META, 500, "$c-ink-faint", + family=CJK, width="fit_content", growth="auto", + line_height=1.6), + body(proof, color="$c-ink", width=width - 88, lh=1.6, + name="证据"), + ], gap=16), + ], gap=18, width=width)) + return page("06 优势", 6, [ + page_title("三处我们做到了,并且能被验证"), + body("每一条都配一个可复核的数字;没有数字的优势不写进这一页。", + color="$c-ink-soft", lh=1.6, name="优势引导"), + row("优势三列", columns, gap=32, align="start"), + ], gap=40) + + +# ------------------------------------------------------------------ 07 结论 +ACTIONS = [ + "把私有化部署排进 2027 年一季度的交付计划,本月给出范围。", + "在报价单里写明电话渠道当前依赖第三方,不含糊带过。", + "把这张核对表随合同附送,三个月更新一次,口径不变。", +] + + +def closing(): + actions = [] + for index, line in enumerate(ACTIONS): + actions.append(row("动作条", [ + index_mark(index + 1), + body(line, width=1400, lh=1.55, name="动作"), + ], gap=0, align="start")) + return page("07 结论", 7, [ + page_title("这张账读完之后"), + body("能力上的差距只有一处,\n而它恰好决定了一类客户能不能签。", + size=FS_LEAD, weight=600, lh=1.3, width=1400, name="总判断"), + # 合计双线,与主矩阵表尾同一支装置:它托住的是「所以呢」,不是给标 + # 题加下划线。 + col("结论合计线", [ + hrule(INNER, 1, "$c-rule-red"), + frame(ids, "双线间隙", width=INNER, height=4, layout="none", + fill=[]), + hrule(INNER, 2, "$c-rule-red"), + ], gap=0), + col("动作列", actions, gap=24), + body("来源:各产品公开文档与试用账号实测,数据截止 2026-07-31;" + "口径见第 2 页,逐格记号见第 3 页。", + size=FS_META, color="$c-ink-faint", lh=LH_META, name="来源脚注"), + ], gap=32, anchor="end") + + +# ------------------------------------------------------------------ 板位 +# 3 板一行。行距 1440(而不是 1200):画布在帧上方以固定屏幕偏移画帧名, +# 在 3 宽 deck 铺满屏幕的缩放下,120 文档 px 的行距只合约 16 屏幕 px,第二 +# 行的帧名会压到上一行的板上。 +BOARD_STEP_X, BOARD_STEP_Y, PER_ROW = 2040, 1440, 3 + + +def build(): + boards = [cover(), criteria(), board(), quartiles(), gaps(), + strengths(), closing()] + for index, node in enumerate(boards): + node["x"] = (index % PER_ROW) * BOARD_STEP_X + node["y"] = (index // PER_ROW) * BOARD_STEP_Y + return boards + + +# 对比度(WCAG 相对亮度比): +# c-ink on c-paper / c-band / c-own 14.63 / 13.16 / 14.11 +# c-ink-soft on c-paper / c-band / c-own 6.48 / 5.83 / 6.25 +# c-ink-faint on c-paper 4.14 ← 最低一对(≥24px 注释) +# c-tick on c-paper / c-own 5.06 / 4.90 +# c-paper on c-tick(自家 chip 的反白字) 5.08 +# c-rule-blue (3.13) / c-rule-red (3.13) / c-tick-half (3.24) 不参与:它们 +# 全部是**非文字**的线与记号(rectangle 且宽或高 ≤3px,或纯几何记号),按 +# §4.4 的豁免规则按节点类型排除 —— 对比一旦拉高,格线就会跟记号抢注意力。 + +if __name__ == "__main__": + write_doc(sys.argv[1], VARS, build(), "账簿勾格 · 竞品矩阵 deck") diff --git a/templates/step0/previews/banxin-rule-deck-01.png b/templates/step0/previews/banxin-rule-deck-01.png new file mode 100644 index 000000000..c1440f7a4 Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-01.png differ diff --git a/templates/step0/previews/banxin-rule-deck-02.png b/templates/step0/previews/banxin-rule-deck-02.png new file mode 100644 index 000000000..843aca90a Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-02.png differ diff --git a/templates/step0/previews/banxin-rule-deck-03.png b/templates/step0/previews/banxin-rule-deck-03.png new file mode 100644 index 000000000..d82643442 Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-03.png differ diff --git a/templates/step0/previews/banxin-rule-deck-04.png b/templates/step0/previews/banxin-rule-deck-04.png new file mode 100644 index 000000000..fed7f1e8d Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-04.png differ diff --git a/templates/step0/previews/banxin-rule-deck-05.png b/templates/step0/previews/banxin-rule-deck-05.png new file mode 100644 index 000000000..48bcdc2d7 Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-05.png differ diff --git a/templates/step0/previews/banxin-rule-deck-06.png b/templates/step0/previews/banxin-rule-deck-06.png new file mode 100644 index 000000000..79390e567 Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-06.png differ diff --git a/templates/step0/previews/banxin-rule-deck-07.png b/templates/step0/previews/banxin-rule-deck-07.png new file mode 100644 index 000000000..0dff3deca Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-07.png differ diff --git a/templates/step0/previews/banxin-rule-deck-overview.png b/templates/step0/previews/banxin-rule-deck-overview.png new file mode 100644 index 000000000..f4c3a6319 Binary files /dev/null and b/templates/step0/previews/banxin-rule-deck-overview.png differ diff --git a/templates/step0/previews/dossier-linen-deck-01.png b/templates/step0/previews/dossier-linen-deck-01.png new file mode 100644 index 000000000..1828ca99d Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-01.png differ diff --git a/templates/step0/previews/dossier-linen-deck-02.png b/templates/step0/previews/dossier-linen-deck-02.png new file mode 100644 index 000000000..0b3a2e628 Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-02.png differ diff --git a/templates/step0/previews/dossier-linen-deck-03.png b/templates/step0/previews/dossier-linen-deck-03.png new file mode 100644 index 000000000..c2467d4f5 Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-03.png differ diff --git a/templates/step0/previews/dossier-linen-deck-04.png b/templates/step0/previews/dossier-linen-deck-04.png new file mode 100644 index 000000000..e0ba0ea24 Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-04.png differ diff --git a/templates/step0/previews/dossier-linen-deck-05.png b/templates/step0/previews/dossier-linen-deck-05.png new file mode 100644 index 000000000..9e152586a Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-05.png differ diff --git a/templates/step0/previews/dossier-linen-deck-06.png b/templates/step0/previews/dossier-linen-deck-06.png new file mode 100644 index 000000000..7183425e2 Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-06.png differ diff --git a/templates/step0/previews/dossier-linen-deck-07.png b/templates/step0/previews/dossier-linen-deck-07.png new file mode 100644 index 000000000..bd5ea0713 Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-07.png differ diff --git a/templates/step0/previews/dossier-linen-deck-08.png b/templates/step0/previews/dossier-linen-deck-08.png new file mode 100644 index 000000000..65dd83c60 Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-08.png differ diff --git a/templates/step0/previews/dossier-linen-deck-overview.png b/templates/step0/previews/dossier-linen-deck-overview.png new file mode 100644 index 000000000..5c3b78791 Binary files /dev/null and b/templates/step0/previews/dossier-linen-deck-overview.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-01.png b/templates/step0/previews/gridpaper-graphite-deck-01.png new file mode 100644 index 000000000..c27889ebd Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-01.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-02.png b/templates/step0/previews/gridpaper-graphite-deck-02.png new file mode 100644 index 000000000..bdc9f986a Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-02.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-03.png b/templates/step0/previews/gridpaper-graphite-deck-03.png new file mode 100644 index 000000000..a94269fcd Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-03.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-04.png b/templates/step0/previews/gridpaper-graphite-deck-04.png new file mode 100644 index 000000000..5dfae1b92 Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-04.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-05.png b/templates/step0/previews/gridpaper-graphite-deck-05.png new file mode 100644 index 000000000..a8051742f Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-05.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-06.png b/templates/step0/previews/gridpaper-graphite-deck-06.png new file mode 100644 index 000000000..89c440f4d Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-06.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-07.png b/templates/step0/previews/gridpaper-graphite-deck-07.png new file mode 100644 index 000000000..5f31f4af4 Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-07.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-08.png b/templates/step0/previews/gridpaper-graphite-deck-08.png new file mode 100644 index 000000000..f8593f51f Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-08.png differ diff --git a/templates/step0/previews/gridpaper-graphite-deck-overview.png b/templates/step0/previews/gridpaper-graphite-deck-overview.png new file mode 100644 index 000000000..17f29712b Binary files /dev/null and b/templates/step0/previews/gridpaper-graphite-deck-overview.png differ diff --git a/templates/step0/previews/ledger-tick-deck-01.png b/templates/step0/previews/ledger-tick-deck-01.png new file mode 100644 index 000000000..83c853ef2 Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-01.png differ diff --git a/templates/step0/previews/ledger-tick-deck-02.png b/templates/step0/previews/ledger-tick-deck-02.png new file mode 100644 index 000000000..f476a56dc Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-02.png differ diff --git a/templates/step0/previews/ledger-tick-deck-03.png b/templates/step0/previews/ledger-tick-deck-03.png new file mode 100644 index 000000000..2ebba3411 Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-03.png differ diff --git a/templates/step0/previews/ledger-tick-deck-04.png b/templates/step0/previews/ledger-tick-deck-04.png new file mode 100644 index 000000000..dd7e79458 Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-04.png differ diff --git a/templates/step0/previews/ledger-tick-deck-05.png b/templates/step0/previews/ledger-tick-deck-05.png new file mode 100644 index 000000000..30d368348 Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-05.png differ diff --git a/templates/step0/previews/ledger-tick-deck-06.png b/templates/step0/previews/ledger-tick-deck-06.png new file mode 100644 index 000000000..72c1c2385 Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-06.png differ diff --git a/templates/step0/previews/ledger-tick-deck-07.png b/templates/step0/previews/ledger-tick-deck-07.png new file mode 100644 index 000000000..793fce2a4 Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-07.png differ diff --git a/templates/step0/previews/ledger-tick-deck-overview.png b/templates/step0/previews/ledger-tick-deck-overview.png new file mode 100644 index 000000000..4dfaccb00 Binary files /dev/null and b/templates/step0/previews/ledger-tick-deck-overview.png differ diff --git a/templates/step0/previews/sounding-navy-deck-01.png b/templates/step0/previews/sounding-navy-deck-01.png new file mode 100644 index 000000000..04b0001b7 Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-01.png differ diff --git a/templates/step0/previews/sounding-navy-deck-02.png b/templates/step0/previews/sounding-navy-deck-02.png new file mode 100644 index 000000000..ebe20c66f Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-02.png differ diff --git a/templates/step0/previews/sounding-navy-deck-03.png b/templates/step0/previews/sounding-navy-deck-03.png new file mode 100644 index 000000000..3ee52097d Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-03.png differ diff --git a/templates/step0/previews/sounding-navy-deck-04.png b/templates/step0/previews/sounding-navy-deck-04.png new file mode 100644 index 000000000..4b1eaf944 Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-04.png differ diff --git a/templates/step0/previews/sounding-navy-deck-05.png b/templates/step0/previews/sounding-navy-deck-05.png new file mode 100644 index 000000000..d4ec5a028 Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-05.png differ diff --git a/templates/step0/previews/sounding-navy-deck-06.png b/templates/step0/previews/sounding-navy-deck-06.png new file mode 100644 index 000000000..be4b4f1b9 Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-06.png differ diff --git a/templates/step0/previews/sounding-navy-deck-07.png b/templates/step0/previews/sounding-navy-deck-07.png new file mode 100644 index 000000000..6a5ec88d4 Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-07.png differ diff --git a/templates/step0/previews/sounding-navy-deck-overview.png b/templates/step0/previews/sounding-navy-deck-overview.png new file mode 100644 index 000000000..51eed6bae Binary files /dev/null and b/templates/step0/previews/sounding-navy-deck-overview.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-01.png b/templates/step0/previews/tidemark-slate-deck-01.png new file mode 100644 index 000000000..1b84664d0 Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-01.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-02.png b/templates/step0/previews/tidemark-slate-deck-02.png new file mode 100644 index 000000000..049a56552 Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-02.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-03.png b/templates/step0/previews/tidemark-slate-deck-03.png new file mode 100644 index 000000000..252fe0458 Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-03.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-04.png b/templates/step0/previews/tidemark-slate-deck-04.png new file mode 100644 index 000000000..d977b2c40 Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-04.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-05.png b/templates/step0/previews/tidemark-slate-deck-05.png new file mode 100644 index 000000000..542b43a5e Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-05.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-06.png b/templates/step0/previews/tidemark-slate-deck-06.png new file mode 100644 index 000000000..1ef0648fe Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-06.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-07.png b/templates/step0/previews/tidemark-slate-deck-07.png new file mode 100644 index 000000000..1891e3cdd Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-07.png differ diff --git a/templates/step0/previews/tidemark-slate-deck-overview.png b/templates/step0/previews/tidemark-slate-deck-overview.png new file mode 100644 index 000000000..e385a1ad8 Binary files /dev/null and b/templates/step0/previews/tidemark-slate-deck-overview.png differ