create-monitoring-architecture-ppt.ps1 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. $ErrorActionPreference = "Stop"
  2. $outputPath = Join-Path $PSScriptRoot "订单与供应监测模块架构汇报.pptx"
  3. $buildDir = Join-Path $PSScriptRoot "pptx-build"
  4. if (Test-Path $outputPath) {
  5. Remove-Item -LiteralPath $outputPath -Force
  6. }
  7. if (Test-Path $buildDir) {
  8. Remove-Item -LiteralPath $buildDir -Recurse -Force
  9. }
  10. New-Item -ItemType Directory -Force -Path $buildDir | Out-Null
  11. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "_rels") | Out-Null
  12. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "docProps") | Out-Null
  13. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt") | Out-Null
  14. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\_rels") | Out-Null
  15. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\slides") | Out-Null
  16. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\slides\_rels") | Out-Null
  17. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\slideMasters") | Out-Null
  18. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\slideMasters\_rels") | Out-Null
  19. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\slideLayouts") | Out-Null
  20. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\slideLayouts\_rels") | Out-Null
  21. New-Item -ItemType Directory -Force -Path (Join-Path $buildDir "ppt\theme") | Out-Null
  22. $emu = 9525
  23. $shapeId = 1
  24. function XmlEscape($value) {
  25. return [System.Security.SecurityElement]::Escape([string]$value)
  26. }
  27. function Emu($px) {
  28. return [int64]([double]$px * $emu)
  29. }
  30. function Rgb($hex) {
  31. return $hex.TrimStart("#").ToUpperInvariant()
  32. }
  33. function Write-Utf8($path, $content) {
  34. $utf8 = New-Object System.Text.UTF8Encoding($false)
  35. [System.IO.File]::WriteAllText($path, $content, $utf8)
  36. }
  37. function TextShape($text, $x, $y, $w, $h, $fontSize, $color, $bold) {
  38. $script:shapeId++
  39. $b = if ($bold) { ' b="1"' } else { "" }
  40. $paras = @()
  41. foreach ($line in ([string]$text -split "`r?`n")) {
  42. $paras += @"
  43. <a:p><a:r><a:rPr lang="zh-CN" sz="$([int]($fontSize * 100))"$b><a:solidFill><a:srgbClr val="$(Rgb $color)"/></a:solidFill><a:latin typeface="Microsoft YaHei"/><a:ea typeface="Microsoft YaHei"/></a:rPr><a:t>$(XmlEscape $line)</a:t></a:r><a:endParaRPr lang="zh-CN" sz="$([int]($fontSize * 100))"/></a:p>
  44. "@
  45. }
  46. return @"
  47. <p:sp>
  48. <p:nvSpPr><p:cNvPr id="$shapeId" name="Text $shapeId"/><p:cNvSpPr txBox="1"/><p:nvPr/></p:nvSpPr>
  49. <p:spPr><a:xfrm><a:off x="$(Emu $x)" y="$(Emu $y)"/><a:ext cx="$(Emu $w)" cy="$(Emu $h)"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln><a:noFill/></a:ln></p:spPr>
  50. <p:txBody><a:bodyPr wrap="square" rtlCol="0"><a:spAutoFit/></a:bodyPr><a:lstStyle/>$($paras -join "")</p:txBody>
  51. </p:sp>
  52. "@
  53. }
  54. function RectShape($x, $y, $w, $h, $fill, $line = "FFFFFF", $radius = $false) {
  55. $script:shapeId++
  56. $geom = if ($radius) { "roundRect" } else { "rect" }
  57. return @"
  58. <p:sp>
  59. <p:nvSpPr><p:cNvPr id="$shapeId" name="Box $shapeId"/><p:cNvSpPr/><p:nvPr/></p:nvSpPr>
  60. <p:spPr><a:xfrm><a:off x="$(Emu $x)" y="$(Emu $y)"/><a:ext cx="$(Emu $w)" cy="$(Emu $h)"/></a:xfrm><a:prstGeom prst="$geom"><a:avLst/></a:prstGeom><a:solidFill><a:srgbClr val="$(Rgb $fill)"/></a:solidFill><a:ln w="9525"><a:solidFill><a:srgbClr val="$(Rgb $line)"/></a:solidFill></a:ln></p:spPr>
  61. </p:sp>
  62. "@
  63. }
  64. function Card($title, $body, $x, $y, $w, $h, $accent) {
  65. return (RectShape $x $y $w $h "FFFFFF" "DDDDDD" $true) +
  66. (RectShape $x $y 8 $h $accent $accent $false) +
  67. (TextShape $title ($x + 22) ($y + 16) ($w - 35) 34 17 "17304A" $true) +
  68. (TextShape $body ($x + 22) ($y + 58) ($w - 35) ($h - 68) 13 "555555" $false)
  69. }
  70. function Node($text, $x, $y, $w, $h, $fill, $line) {
  71. return (RectShape $x $y $w $h $fill $line $true) +
  72. (TextShape $text ($x + 10) ($y + 15) ($w - 20) ($h - 20) 14 "17304A" $true)
  73. }
  74. function Title($title, $subtitle) {
  75. $xml = (TextShape $title 70 42 980 52 30 "17304A" $true)
  76. if ($subtitle -ne "") {
  77. $xml += TextShape $subtitle 72 92 980 30 14 "666666" $false
  78. }
  79. $xml += RectShape 70 128 1140 3 "2B74B1" "2B74B1" $false
  80. return $xml
  81. }
  82. $slides = @()
  83. $slides += @{
  84. Bg = "FBFAF7"
  85. Body = (TextShape "订单监测与供应监测" 90 170 900 58 38 "17304A" $true) +
  86. (TextShape "模块架构、功能逻辑与系统关联汇报" 92 238 880 38 20 "666666" $false) +
  87. (TextShape "面向管理层的简版说明" 94 300 420 28 15 "2B74B1" $true) +
  88. (Card "汇报重点" "1. 两个模块分别解决什么问题`n2. 数据如何进入系统并形成分析结果`n3. 与库存、产品、生命周期等模块如何关联" 760 170 390 250 "2B74B1")
  89. }
  90. $slides += @{
  91. Bg = "FFFFFF"
  92. Body = (Title "一页总览" "两个模块都采用:数据接入 -> 数据入库 -> 后端聚合 -> 前端看板展示") +
  93. (Card "订单监测" "关注销售侧:订单金额、商品贡献、渠道/平台表现、支付效率、退款漏损、连带购买。`n`n当前数据库已有核心表,具备较完整的数据分析基础。" 80 170 500 320 "2B74B1") +
  94. (Card "供应监测" "关注采购侧:供应商履约、采购订单、入库金额、账期、准交率、付款计划。`n`n当前数据库只有部分基础数据,需补齐采购订单、账期和交付匹配数据。" 700 170 500 320 "449B7A")
  95. }
  96. $slides += @{
  97. Bg = "FFFFFF"
  98. Body = (Title "整体模块架构" "前端页面保持稳定,后端逐步将文件依赖切换为数据库驱动") +
  99. (Node "数据文件上传`nCSV / Excel" 70 220 180 78 "DAE7F4" "2B74B1") +
  100. (TextShape "→" 268 234 50 50 28 "666666" $true) +
  101. (Node "导入服务`n解析 / 清洗 / 校验" 330 220 210 78 "EAF5EC" "449B7A") +
  102. (TextShape "→" 558 234 50 50 28 "666666" $true) +
  103. (Node "业务数据库`n订单 / 供应 / 库存" 620 220 210 78 "F7F1E8" "E88B3A") +
  104. (TextShape "→" 848 234 50 50 28 "666666" $true) +
  105. (Node "分析服务`nMapper / 聚合逻辑" 910 220 210 78 "F5F5F5" "666666") +
  106. (TextShape "↓" 995 305 50 50 26 "666666" $true) +
  107. (Node "管理看板`n图表 / 报表 / 对比" 910 370 210 78 "FFFFFF" "2B74B1") +
  108. (Card "架构原则" "接口尽量保持不变,减少前端改造;数据统一入库,避免依赖本地路径;分析逻辑集中在 Service 和 Mapper 层。" 120 500 1030 105 "2B74B1")
  109. }
  110. $slides += @{
  111. Bg = "FFFFFF"
  112. Body = (Title "订单监测:功能逻辑" "订单监测已经具备数据库化基础,重点是持续完善导入和统计口径") +
  113. (Card "核心功能" "订单价值分析:GMV、成交金额、退款金额`n商品分析:Top 商品、连带购买`n渠道分析:平台、渠道、业务单元贡献`n支付分析:平均支付耗时、支付漏斗`n经营报表:按日/月/年聚合" 70 165 360 370 "2B74B1") +
  114. (Card "实现逻辑" "1. 订单和店铺价值数据进入数据库`n2. Mapper 查询订单主表和店铺价值明细表`n3. Service 聚合指标并返回统一结构`n4. 前端看板按日期范围展示结果" 460 165 360 370 "449B7A") +
  115. (Card "当前基础" "dtm_order_main:订单主表`ndtm_shop_value_main:店铺价值明细表`n`n当前数据库中两张核心表已有较多数据,可支撑订单监测主要分析。" 850 165 360 370 "E88B3A")
  116. }
  117. $slides += @{
  118. Bg = "FFFFFF"
  119. Body = (Title "供应监测:功能逻辑" "供应监测目标是从 Excel 文件读取升级为数据库驱动") +
  120. (Card "核心功能" "供应商统计:订单金额、入库金额、完成率、准交率`n供应商对比:多个供应商横向比较`n付款计划:账期 + 验收/入库日期计算预计付款`n数据导入:账期、订单、入库、匹配结果" 70 165 360 370 "449B7A") +
  121. (Card "实现逻辑" "1. 上传供应监测相关 Excel`n2. 解析供应商、订单、入库、账期字段`n3. 写入供应监测数据表`n4. Service 从数据库聚合供应商指标`n5. 前端继续使用现有查询接口" 460 165 360 370 "2B74B1") +
  122. (Card "当前缺口" "数据库已有:供应商基础表、采购入库基础表。`n`n仍缺:采购订单、供应商账期、计划交货日期、实际验收日期、订单入库匹配结果。" 850 165 360 370 "E88B3A")
  123. }
  124. $slides += @{
  125. Bg = "FFFFFF"
  126. Body = (Title "模块关联关系" "两个监测模块不是孤立看板,而是与基础数据和分析模块共享数据资产") +
  127. (Card "订单监测关联" "产品模块:通过 SKU 关联商品、SPU、产品信息。`n生命周期模块:复用订单销售数据做热销、趋势、生命周期分析。`n店铺模块:复用平台、渠道、业务单元维度。" 90 170 500 280 "2B74B1") +
  128. (Card "供应监测关联" "库存模块:复用采购入库和库存流转数据。`n产品模块:通过 SKU 关联采购产品。`n供应商资料:复用供应商编号和名称,扩展账期和履约指标。" 690 170 500 280 "449B7A") +
  129. (Card "通用关联" "系统权限和操作日志可统一管理导入权限、导入记录和异常追踪;导入批次设计可在订单和供应两个模块复用。" 190 495 900 95 "E88B3A")
  130. }
  131. $slides += @{
  132. Bg = "FFFFFF"
  133. Body = (Title "数据入库建设重点" "管理层需要关注的是数据完整性、稳定性和可追踪性") +
  134. (Card "订单监测" "建设重点:完善导入批次、重复数据处理、异常行反馈。`n`n收益:订单看板稳定、历史数据可追溯、跨模块复用能力强。" 90 170 500 300 "2B74B1") +
  135. (Card "供应监测" "建设重点:补齐采购订单、账期、计划交货日期、实际验收日期、匹配结果。`n`n收益:供应商履约分析和付款计划可以稳定落地。" 690 170 500 300 "449B7A")
  136. }
  137. $slides += @{
  138. Bg = "FFFFFF"
  139. Body = (Title "推进路径" "建议分阶段推进,先稳定数据,再扩展分析能力") +
  140. (Node "阶段一`n确认数据源和字段口径" 80 220 210 85 "DAE7F4" "2B74B1") +
  141. (TextShape "→" 308 240 50 50 28 "666666" $true) +
  142. (Node "阶段二`n建设导入和入库表" 370 220 210 85 "EAF5EC" "449B7A") +
  143. (TextShape "→" 598 240 50 50 28 "666666" $true) +
  144. (Node "阶段三`n切换 Service 查询数据库" 660 220 230 85 "F7F1E8" "E88B3A") +
  145. (TextShape "→" 908 240 50 50 28 "666666" $true) +
  146. (Node "阶段四`n完善看板和管理报表" 970 220 210 85 "FFFFFF" "2B74B1") +
  147. (Card "结论" "订单监测已有较好的数据库基础,重点是规范化导入和追踪。供应监测需要先补齐核心数据表,再将现有 Excel 分析迁移到数据库查询。" 120 430 1040 130 "2B74B1")
  148. }
  149. function SlideXml($slide) {
  150. $bg = Rgb $slide.Bg
  151. return @"
  152. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  153. <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
  154. <p:cSld>
  155. <p:bg><p:bgPr><a:solidFill><a:srgbClr val="$bg"/></a:solidFill><a:effectLst/></p:bgPr></p:bg>
  156. <p:spTree>
  157. <p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>
  158. <p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr>
  159. $($slide.Body)
  160. </p:spTree>
  161. </p:cSld>
  162. <p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>
  163. </p:sld>
  164. "@
  165. }
  166. $overrides = @(
  167. '<Override PartName="/ppt/presentation.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"/>',
  168. '<Override PartName="/ppt/slideMasters/slideMaster1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml"/>',
  169. '<Override PartName="/ppt/slideLayouts/slideLayout1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml"/>',
  170. '<Override PartName="/ppt/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>',
  171. '<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>',
  172. '<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>'
  173. )
  174. for ($i = 1; $i -le $slides.Count; $i++) {
  175. $overrides += "<Override PartName=""/ppt/slides/slide$i.xml"" ContentType=""application/vnd.openxmlformats-officedocument.presentationml.slide+xml""/>"
  176. Write-Utf8 (Join-Path $buildDir "ppt\slides\slide$i.xml") (SlideXml $slides[$i - 1])
  177. Write-Utf8 (Join-Path $buildDir "ppt\slides\_rels\slide$i.xml.rels") @"
  178. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  179. <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  180. <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout1.xml"/>
  181. </Relationships>
  182. "@
  183. }
  184. Write-Utf8 (Join-Path $buildDir "[Content_Types].xml") @"
  185. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  186. <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
  187. <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
  188. <Default Extension="xml" ContentType="application/xml"/>
  189. $($overrides -join "`n ")
  190. </Types>
  191. "@
  192. Write-Utf8 (Join-Path $buildDir "_rels\.rels") @"
  193. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  194. <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  195. <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="ppt/presentation.xml"/>
  196. <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
  197. <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
  198. </Relationships>
  199. "@
  200. $slideIds = @()
  201. $presentationRels = @(
  202. '<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="slideMasters/slideMaster1.xml"/>'
  203. )
  204. for ($i = 1; $i -le $slides.Count; $i++) {
  205. $relId = $i + 1
  206. $slideDbId = 255 + $i
  207. $slideIds += "<p:sldId id=""$slideDbId"" r:id=""rId$relId""/>"
  208. $presentationRels += "<Relationship Id=""rId$relId"" Type=""http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"" Target=""slides/slide$i.xml""/>"
  209. }
  210. Write-Utf8 (Join-Path $buildDir "ppt\presentation.xml") @"
  211. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  212. <p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
  213. <p:sldMasterIdLst><p:sldMasterId id="2147483648" r:id="rId1"/></p:sldMasterIdLst>
  214. <p:sldIdLst>$($slideIds -join "")</p:sldIdLst>
  215. <p:sldSz cx="12192000" cy="6858000" type="wide"/>
  216. <p:notesSz cx="6858000" cy="9144000"/>
  217. <p:defaultTextStyle/>
  218. </p:presentation>
  219. "@
  220. Write-Utf8 (Join-Path $buildDir "ppt\_rels\presentation.xml.rels") @"
  221. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  222. <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  223. $($presentationRels -join "`n ")
  224. </Relationships>
  225. "@
  226. Write-Utf8 (Join-Path $buildDir "ppt\slideMasters\slideMaster1.xml") @"
  227. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  228. <p:sldMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
  229. <p:cSld><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr></p:spTree></p:cSld>
  230. <p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>
  231. <p:sldLayoutIdLst><p:sldLayoutId id="2147483649" r:id="rId1"/></p:sldLayoutIdLst>
  232. <p:txStyles><p:titleStyle/><p:bodyStyle/><p:otherStyle/></p:txStyles>
  233. </p:sldMaster>
  234. "@
  235. Write-Utf8 (Join-Path $buildDir "ppt\slideMasters\_rels\slideMaster1.xml.rels") @"
  236. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  237. <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  238. <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout1.xml"/>
  239. <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/>
  240. </Relationships>
  241. "@
  242. Write-Utf8 (Join-Path $buildDir "ppt\slideLayouts\slideLayout1.xml") @"
  243. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  244. <p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="blank" preserve="1">
  245. <p:cSld name="Blank"><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr></p:spTree></p:cSld>
  246. <p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr>
  247. </p:sldLayout>
  248. "@
  249. Write-Utf8 (Join-Path $buildDir "ppt\slideLayouts\_rels\slideLayout1.xml.rels") @"
  250. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  251. <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  252. <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="../slideMasters/slideMaster1.xml"/>
  253. </Relationships>
  254. "@
  255. Write-Utf8 (Join-Path $buildDir "ppt\theme\theme1.xml") @"
  256. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  257. <a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="DTM">
  258. <a:themeElements>
  259. <a:clrScheme name="DTM"><a:dk1><a:srgbClr val="17304A"/></a:dk1><a:lt1><a:srgbClr val="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="666666"/></a:dk2><a:lt2><a:srgbClr val="FBFAF7"/></a:lt2><a:accent1><a:srgbClr val="2B74B1"/></a:accent1><a:accent2><a:srgbClr val="449B7A"/></a:accent2><a:accent3><a:srgbClr val="E88B3A"/></a:accent3><a:accent4><a:srgbClr val="8A8A8A"/></a:accent4><a:accent5><a:srgbClr val="DAE7F4"/></a:accent5><a:accent6><a:srgbClr val="F7F1E8"/></a:accent6><a:hlink><a:srgbClr val="2B74B1"/></a:hlink><a:folHlink><a:srgbClr val="449B7A"/></a:folHlink></a:clrScheme>
  260. <a:fontScheme name="DTM"><a:majorFont><a:latin typeface="Microsoft YaHei"/><a:ea typeface="Microsoft YaHei"/></a:majorFont><a:minorFont><a:latin typeface="Microsoft YaHei"/><a:ea typeface="Microsoft YaHei"/></a:minorFont></a:fontScheme>
  261. <a:fmtScheme name="DTM"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill></a:bgFillStyleLst></a:fmtScheme>
  262. </a:themeElements>
  263. </a:theme>
  264. "@
  265. $created = [DateTime]::UtcNow.ToString("s") + "Z"
  266. Write-Utf8 (Join-Path $buildDir "docProps\core.xml") @"
  267. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  268. <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  269. <dc:title>订单与供应监测模块架构汇报</dc:title>
  270. <dc:creator>Codex</dc:creator>
  271. <cp:lastModifiedBy>Codex</cp:lastModifiedBy>
  272. <dcterms:created xsi:type="dcterms:W3CDTF">$created</dcterms:created>
  273. <dcterms:modified xsi:type="dcterms:W3CDTF">$created</dcterms:modified>
  274. </cp:coreProperties>
  275. "@
  276. Write-Utf8 (Join-Path $buildDir "docProps\app.xml") @"
  277. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  278. <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
  279. <Application>Codex OpenXML Generator</Application>
  280. <PresentationFormat>Widescreen</PresentationFormat>
  281. <Slides>$($slides.Count)</Slides>
  282. <Company>DTM</Company>
  283. </Properties>
  284. "@
  285. Add-Type -AssemblyName System.IO.Compression.FileSystem
  286. [System.IO.Compression.ZipFile]::CreateFromDirectory($buildDir, $outputPath)
  287. Remove-Item -LiteralPath $buildDir -Recurse -Force
  288. Write-Output $outputPath