[{"data":1,"prerenderedAt":1997},["ShallowReactive",2],{"home-works":3},[4,215,380,517,650,785,923,1049,1174,1335,1480,1618,1720,1815,1892],{"id":5,"title":6,"attribution":7,"body":8,"caseOrder":153,"cover":154,"demo":158,"description":143,"evidenceStatus":159,"extension":160,"family":161,"featured":162,"flagship":162,"highlights":163,"links":167,"media":7,"meta":185,"metrics":186,"navigation":162,"order":153,"path":193,"period":194,"projectType":195,"projects":196,"role":200,"roleScope":201,"seo":202,"stack":203,"status":171,"stem":211,"summary":212,"topic":213,"track":195,"__hash__":214},"works\u002Fworks\u002Fscene-toolchain.md","Scene 离线三维创作与发布工具链",null,{"type":9,"value":10,"toc":142},"minimark",[11,15,19,22,44,47,50,59,62,93,96,108,111,122,125],[12,13,14],"h2",{"id":14},"背景问题",[16,17,18],"p",{},"云端编辑器依赖后端与登录态，客户场景数据与发布流程难以完全离线。目标是：创作、编译、查看三个环节都能在本地完成，并且产物格式稳定、可被独立查看器直接消费。",[12,20,21],{"id":21},"约束",[23,24,25,38,41],"ul",{},[26,27,28,29,33,34,37],"li",{},"三个仓库的引擎与转换库版本必须一致，否则坐标与数据格式会出现隐性漂移，因此锁定 ",[30,31,32],"code",{},"playcanvas@2.23.1","、",[30,35,36],{},"splat-transform@3.10.0","，禁止浮动版本号。",[26,39,40],{},"查看器不 Fork 官方 Viewer，升级只能通过公开 API。",[26,42,43],{},"浏览器端无服务端，离线目录打开需要解决资源路径问题。",[12,45,46],{"id":46},"架构",[48,49],"scene-architecture",{},[16,51,52,53,58],{},"上游训练与重建部分见",[54,55,57],"a",{"href":56},"\u002Fworks\u002Fgaussian-training","高斯泼溅重建与训练管线","，两篇分别覆盖\"训练侧\"与\"创作\u002F发布侧\"，不重复展开。",[12,60,61],{"id":61},"关键决策与取舍",[23,63,64,71,81,87],{},[26,65,66,70],{},[67,68,69],"strong",{},"编辑器脱离宿主","：移除上传、鉴权与任务轮询，改用 File System Access API 与 Zip 流式打包实现本地保存与打开。",[26,72,73,76,77,80],{},[67,74,75],{},"发布态预合并","：导出时把所有可见高斯合并为单 Splat，并写入 ",[30,78,79],{},"coordinateConvention: file-rotation-included","，把文件旋转惯例显式写进数据，下游不再猜测。",[26,82,83,86],{},[67,84,85],{},"管线全程程序化","：不 spawn 外部 CLI，直接调用 splat-transform 的 API，统一 IO 抽象，避免多次解码。",[26,88,89,92],{},[67,90,91],{},"端到端断言","：管线附带 e2e 脚本，动态合成非对称三维尖塔场景，跑全流程后执行 16 项断言，其中包含坐标朝向回归。",[12,94,95],{"id":95},"结果",[23,97,98,105],{},[26,99,100,101,104],{},"同一份 ",[30,102,103],{},".sscene"," 可以在编辑器中编辑、在管线中编译、在查看器中离线打开，三段契约由版本基线与断言共同约束。",[26,106,107],{},"查看器保持极薄壳（Vanilla TS），升级官方 Viewer 时通过 API 面审计脚本对照类型声明回归。",[12,109,110],{"id":110},"局限与后续优化",[23,112,113,116,119],{},[26,114,115],{},"编辑器本地保存依赖 File System Access API，Safari \u002F Firefox 下只能降级为导出文件流，不能保留工程引用。",[26,117,118],{},"发布态为单 Splat 预合并，适合成品展示；多级 LOD 分块流式发布尚未纳入本管线。",[26,120,121],{},"碰撞体素化在 GPU 上执行，低端设备按 CPU 回退时耗时明显上升，暂无量化口径。",[12,123,124],{"id":124},"我的职责",[23,126,127,133,136,139],{},[26,128,129,130,132],{},"三仓架构设计与数据契约定义（",[30,131,103],{}," 工程包、产物目录格式）。",[26,134,135],{},"scene-studio 的本地文件系统层与发布流程。",[26,137,138],{},"scene-pipeline 的编排、碰撞与 LOD 阶段，以及 e2e 断言。",[26,140,141],{},"scene-viewer 的离线 URL 桥与加载体验。",{"title":143,"searchDepth":144,"depth":144,"links":145},"",2,[146,147,148,149,150,151,152],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":110,"depth":144,"text":110},{"id":124,"depth":144,"text":124},1,{"src":155,"alt":156,"caption":157},"\u002Fimages\u002Fportfolio\u002Fscene-toolchain-cover.svg","Scene 工具链架构示意：训练到网站承载的五段流程","工具链结构示意（自绘封面，非运行截图）","\u002F","项目资料与演示","md","Scene 离线三维工具链",true,[164,165,166],"本地工程包 .sscene 读写，不依赖云端与宿主","发布态预合并为单 Splat，显式声明坐标约定，消除下游二次翻轴","查看器零侵入消费官方 Viewer，支持 HTTP 与浏览器离线目录两种模式",[168,173,178,182],{"label":169,"url":170,"kind":171,"note":172},"编辑器演示","\u002Fdemos\u002Fstudio\u002Fcn?demo","demo","预载合成示例场景；编辑器仅支持 PC 端",{"label":174,"url":175,"kind":176,"note":177},"LOD 可视化实验","\u002Flab\u002Flod-heatmap","lab","查看器同族运行时渲染 Streamed SOG",{"label":179,"url":180,"kind":176,"note":181},"三引擎对比实验","\u002Flab\u002Fengines","同一场景 PlayCanvas \u002F three.js+Spark \u002F Babylon.js",{"label":183,"url":184,"kind":176},"碰撞漫游实验","\u002Flab\u002Fwalk-collision",{},[187,190],{"value":188,"label":189},"3","仓库闭环（studio \u002F pipeline \u002F viewer）",{"value":191,"label":192},"16","端到端自动断言（scene-pipeline e2e）","\u002Fworks\u002Fscene-toolchain","项目阶段记录","personal",[197,198,199],"scene-studio","scene-pipeline","scene-viewer","独立设计与开发（编辑器、编译管线、查看器）","编辑器、编译管线、查看器三段工具链的个人实现",{"title":6,"description":143},[204,205,206,207,208,209,210],"Vue 3.5","Vite 8","PlayCanvas 2.23.1","@playcanvas\u002Fsupersplat-viewer 1.37.0","splat-transform 3.10.0","Node.js 22","Dawn WebGPU","works\u002Fscene-toolchain","从本地场景编辑、离线编译到独立查看，三个仓库以精确锁定的引擎基线闭环，产物可直接离线打开。","spatial","8Zh1wsGll8SJnWOqnq9-7cr08g5ug9WsizqtmFrI7AQ",{"id":216,"title":57,"attribution":7,"body":217,"caseOrder":7,"cover":339,"demo":7,"description":143,"evidenceStatus":159,"extension":160,"family":343,"featured":344,"flagship":344,"highlights":345,"links":349,"media":7,"meta":354,"metrics":355,"navigation":162,"order":144,"path":56,"period":194,"projectType":195,"projects":365,"role":367,"roleScope":368,"seo":369,"stack":370,"status":171,"stem":377,"summary":378,"topic":213,"track":195,"__hash__":379},"works\u002Fworks\u002Fgaussian-training.md",{"type":9,"value":218,"toc":330},[219,221,224,230,232,243,245,254,256,294,296,304,306,317,319],[12,220,14],{"id":14},[16,222,223],{},"单相机视频与多相机阵列采集的数据，需要经过抽帧、去畸变、SfM、训练与导出等多步骤。手工脚本存在三个问题：结果不可复现、SfM 失败后仍会空耗 GPU 训练时间、中途崩溃无法续跑。",[16,225,226,227,229],{},"下游创作、编译与查看发布见",[54,228,6],{"href":193},"，本篇只覆盖训练侧。",[12,231,21],{"id":21},[23,233,234,237,240],{},[26,235,236],{},"编排层尽量只依赖 Python 标准库，降低部署环境的依赖面。",[26,238,239],{},"Windows 与 Linux\u002FDocker 两套环境并存，配置需要保持键集合一致。",[26,241,242],{},"外部工具（COLMAP、FFmpeg、训练后端）版本要可锁定、可校验。",[12,244,46],{"id":46},[246,247,252],"pre",{"className":248,"code":250,"language":251,"meta":143},[249],"language-text","视频 \u002F 多路鱼眼 Rig\n  └─ FFmpeg 抽帧 + FishPoly 去畸变 + 位姿先验\n      └─ COLMAP SfM（rig 约束）──► sfm_validation.json（门禁）\n          └─ Brush 0.3.0（Windows）或 Nerfstudio splatfacto（Docker\u002FCUDA）\n              └─ 导出 .ply ──► splat-transform 生成 .compressed.ply \u002F .sog \u002F 独立查看器\n","text",[30,253,250],{"__ignoreMap":143},[12,255,61],{"id":61},[23,257,258,268,278,288],{},[26,259,260,263,264,267],{},[67,261,262],{},"状态机而非脚本","：prepare、sfm、convert、train、export、supersplat 六个阶段解耦。重跑某阶段时自动清理本阶段产物并使下游失效，",[30,265,266],{},"--from-stage"," 支持断点续跑。",[26,269,270,273,274,277],{},[67,271,272],{},"门禁前置","：训练前读取 ",[30,275,276],{},"sparse\u002F0","，检查有效图像数与注册率，不达标直接中止，避免算力空耗。",[26,279,280,283,284,287],{},[67,281,282],{},"工具版本锁定","：",[30,285,286],{},"tools\u002Fmanifest.toml"," 记录工具来源、版本与 SHA-256，bootstrap 时校验，不静默升级。",[26,289,290,293],{},[67,291,292],{},"训练后端二选一","：Windows 用 Brush（WebGPU\u002FVulkan），生产 Linux 用 splatfacto，两者共用上游数据契约。",[12,295,95],{"id":95},[23,297,298,301],{},[26,299,300],{},"同一份输入在两个后端之间的前后处理保持一致，失败点可以定位到具体阶段。",[26,302,303],{},"测试全部使用标准库 unittest，并校验两套配置的键集合一致。",[12,305,110],{"id":110},[23,307,308,311,314],{},[26,309,310],{},"SfM 门禁为静态阈值（有效图像数 \u002F 注册率），对弱纹理与重复纹理场景仍依赖人工复核输入质量。",[26,312,313],{},"Brush 与 splatfacto 共用上游数据契约，但训练参数未完全对齐，跨后端结果存在不可比差异。",[26,315,316],{},"当前面向本机与单机 GPU 编排，未纳入分布式或队列优先级调度。",[12,318,124],{"id":124},[23,320,321,324,327],{},[26,322,323],{},"编排内核与状态机设计，阶段产物与级联失效规则。",[26,325,326],{},"SfM 门禁、rig 配置生成与鱼眼去畸变链路。",[26,328,329],{},"目录队列 Worker、事件流与 Docker 双 target 构建。",{"title":143,"searchDepth":144,"depth":144,"links":331},[332,333,334,335,336,337,338],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":110,"depth":144,"text":110},{"id":124,"depth":144,"text":124},{"src":340,"alt":341,"caption":342},"\u002Fimages\u002Fportfolio\u002Fgaussian-training-cover.svg","3DGS 训练管线从输入、SfM 门禁到训练与导出的流程示意","训练管线结构示意（非运行截图）","Shanks Engine 重建训练管线",false,[346,347,348],"每次运行独立工作区，输入 SHA-256 清单与配置快照可追溯","多相机刚性约束与鱼眼去畸变，保持 rig 外参一致","目录队列 Worker 与 JSONL 事件流，便于后端编排",[350],{"label":351,"url":352,"kind":176,"note":353},"实验场（渲染产物）","\u002Flab","管线产物的 3DGS 渲染演示",{},[356,359,362],{"value":357,"label":358},"6","幂等阶段（prepare → supersplat）",{"value":360,"label":361},"≥ 20 \u002F ≥ 0.85","SfM 门禁（有效图像数 \u002F 注册率）",{"value":363,"label":364},"2","GPU 训练后端（Brush \u002F splatfacto）",[366],"gaussian-splatting-pipeline","独立设计与开发（编排内核、SfM 质量门禁、训练后端接入）","编排内核、SfM 质量门禁、训练后端接入",{"title":57,"description":143},[371,372,373,374,375,376],"Python 3.11","COLMAP 4.2","FFmpeg","Brush","Nerfstudio splatfacto","Docker","works\u002Fgaussian-training","面向单相机与多相机刚性阵列的 3DGS 端到端流水线，具备状态机、质量门禁与断点续跑，减少手工脚本的不可复现问题。","RczXAdd1zRJeXTzMV5qGZWjRYlr7kg2tKMUcsumzGFA",{"id":381,"title":382,"attribution":7,"body":383,"caseOrder":7,"cover":478,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":483,"featured":344,"flagship":344,"highlights":484,"links":7,"media":7,"meta":488,"metrics":489,"navigation":162,"order":497,"path":498,"period":194,"projectType":499,"projects":500,"role":504,"roleScope":7,"seo":505,"stack":506,"status":7,"stem":513,"summary":514,"topic":213,"track":515,"__hash__":516},"works\u002Fworks\u002Fmindcloudx-gen1.md","MindCloudX AI 一代 3DGS 平台",{"type":9,"value":384,"toc":470},[385,387,390,392,403,405,411,413,447,449,457,459],[12,386,14],{"id":14},[16,388,389],{},"3DGS 的数据管理、训练任务、预览与深度编辑分属不同技术栈。若每个能力各自做账号与页面，用户路径割裂，团队也难以独立迭代。",[12,391,21],{"id":21},[23,393,394,397,400],{},[26,395,396],{},"子应用需要独立开发与部署，宿主不能耦合其内部实现。",[26,398,399],{},"大体量数据上传不能经过业务后端。",[26,401,402],{},"同一个编辑器既要嵌入 Web 平台，也要打包成桌面应用。",[12,404,46],{"id":46},[246,406,409],{"className":407,"code":408,"language":251,"meta":143},[249],"┌──────────── Web 宿主平台（Vue 3）────────────┐\n│ 账号 \u002F 算力计费 \u002F 数据集 \u002F 训练任务 \u002F 快照    │\n│   │ 宿主桥接协议（鉴权时序 + 能力收口）         │\n│   ├─ iframe ─► 沉浸式浏览子应用（React）      │\n│   ├─ iframe ─► 3DGS 编辑器（定制 SuperSplat）│\n│   ├─ iframe ─► Mesh 查看子应用               │\n│   └─ iframe ─► 点云查看子应用（Potree）       │\n└───────────────────────────────────────────────┘\n桌面端：Electron 壳 ─ app:\u002F\u002F 协议托管编辑器产物 ─ IPC 原生能力桥\n",[30,410,408],{"__ignoreMap":143},[12,412,61],{"id":61},[23,414,415,429,435,441],{},[26,416,417,420,421,424,425,428],{},[67,418,419],{},"鉴权时序保护","：子应用初始化后发送 ",[30,422,423],{},"child-ready"," 与 ",[30,426,427],{},"request-auth","，宿主下发认证状态后才允许发起私有请求，避免子应用提前访问数据。",[26,430,431,434],{},[67,432,433],{},"能力收口到宿主","：登录、分享、反馈、返回导航与语言切换统一由宿主执行，子应用只发命令。",[26,436,437,440],{},[67,438,439],{},"payload 可结构化克隆","：禁止传递 Vue Proxy，避免跨 iframe 消息失败。",[26,442,443,446],{},[67,444,445],{},"直传对象存储","：数据集由前端直接上传，业务后端只签发凭证。",[12,448,95],{"id":95},[23,450,451,454],{},[26,452,453],{},"四个 3D 子应用通过同一套协议接入，新增子应用时宿主侧改动很小。",[26,455,456],{},"桌面端复用同一套编辑器产物，安装包版本与子仓库版本保持一致。",[12,458,124],{"id":124},[23,460,461,464,467],{},[26,462,463],{},"宿主桥接协议的设计与宿主侧实现。",[26,465,466],{},"3DGS 编辑器的定制层与 iframe 接入，桌面端的 Electron 壳与本地文件服务。",[26,468,469],{},"平台侧数据集上传与训练任务的前端流程。",{"title":143,"searchDepth":144,"depth":144,"links":471},[472,473,474,475,476,477],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":124,"depth":144,"text":124},{"src":479,"alt":480,"caption":481},"\u002Fimages\u002Fportfolio\u002Fmindcloudx-gen1-cover.svg","宿主平台通过 iframe 调度 3D 子应用并对应 Electron 桌面端的结构示意","平台宿主与子应用结构示意（非运行截图）","项目资料与交付记录","MindCloudX AI 一代产品系",[485,486,487],"宿主桥接协议统一子应用的鉴权时序、分享、语言与单位制","数据集经对象存储前端直传，绕开业务后端带宽","同一编辑器按构建模式输出不同品牌产物",{},[490,493,495],{"value":491,"label":492},"4","iframe 接入的 3D 子应用",{"value":188,"label":494},"界面语言（zh-CN \u002F en-US \u002F ja-JP）",{"value":363,"label":496},"运行形态（Web 宿主 \u002F Electron 桌面）",3,"\u002Fworks\u002Fmindcloudx-gen1","commercial",[501,502,503],"一代宿主平台","桌面端查看器","定制 3DGS 编辑器","宿主平台与跨应用协议设计，3D 子应用集成与桌面端对接",{"title":382,"description":143},[204,507,508,509,510,511,512],"TypeScript","Vite 7","Pinia 3","Electron 34","PlayCanvas","Three.js","works\u002Fmindcloudx-gen1","云端 3DGS 重建与三维资产管理的 Web 宿主平台，通过 iframe 与版本化 Bridge 统一调度多个 3D 子应用，并配套 Electron 桌面端。","company","YMeXOc2tqWiJeiaTwzybPJ3RfTuek2TVkBEjNiUzLio",{"id":518,"title":519,"attribution":7,"body":520,"caseOrder":7,"cover":617,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":483,"featured":344,"flagship":344,"highlights":621,"links":7,"media":7,"meta":625,"metrics":626,"navigation":162,"order":634,"path":635,"period":194,"projectType":499,"projects":636,"role":640,"roleScope":7,"seo":641,"stack":642,"status":7,"stem":647,"summary":648,"topic":213,"track":515,"__hash__":649},"works\u002Fworks\u002Fexplorer-sdk.md","Explorer 多引擎渲染 SDK 与沉浸式浏览",{"type":9,"value":521,"toc":609},[522,524,527,529,540,542,548,550,586,588,596,598],[12,523,14],{"id":14},[16,525,526],{},"3DGS 场景浏览需要漫游、热点导览、运镜回放与空间量测，并且要在多种渲染引擎之间做对比与备选。如果业务代码直接调用引擎 API，换引擎或升级引擎的成本会迅速放大。",[12,528,21],{"id":21},[23,530,531,534,537],{},[26,532,533],{},"引擎能力随版本变化快，必须能在单点替换适配层。",[26,535,536],{},"同一套 UI 需要兼容 WebGL 与 WebGPU。",[26,538,539],{},"需要支持独立访问与嵌入宿主两种形态。",[12,541,46],{"id":46},[246,543,546],{"className":544,"code":545,"language":251,"meta":143},[249],"React 业务模块\n  └─ RendererController（命令 \u002F 事件）\n      └─ core（Viewer 契约、CollisionWorld、导航状态机 Orbit \u002F Fly \u002F Walk）\n          └─ 适配层（playcanvas 源码引用 · three · babylon）\n              └─ supersplat-viewer（PlayCanvas 渲染内核）\n",[30,547,545],{"__ignoreMap":143},[12,549,61],{"id":61},[23,551,552,562,568,574,580],{},[26,553,554,557,558,561],{},[67,555,556],{},"严格分层","：UI 只能通过控制器发出 ",[30,559,560],{},"setNavigationMode"," 这类命令并监听事件，导航、碰撞与量测全部在 viewer 层实现，业务层无引擎依赖。",[26,563,564,567],{},[67,565,566],{},"管线级 HDR","：浮点渲染目标配合线性空间色彩分级与 ToneMapping 输出 SDR，不依赖物理 HDR 屏幕；WebXR 不可用时自动降级。",[26,569,570,573],{},[67,571,572],{},"碰撞格式自适应","：PlayCanvas 适配器读取 voxel 数据，Three 适配器读取 GLB 碰撞网格，由 URL 参数选择。",[26,575,576,579],{},[67,577,578],{},"类型隔离","：子模块以 composite 项目参与编译，类型检查使用缓存声明文件，避免上游宽松类型污染主工程。",[26,581,582,585],{},[67,583,584],{},"供应链约束","：依赖设置发布观察期，并使用冻结锁文件安装。",[12,587,95],{"id":95},[23,589,590,593],{},[26,591,592],{},"渲染后端可以按参数切换，Benchmark 与备选方案共用同一套业务代码。",[26,594,595],{},"业务层对引擎版本升级基本无感，升级主要集中在适配层。",[12,597,124],{"id":124},[23,599,600,603,606],{},[26,601,602],{},"渲染 SDK 的分层与 Viewer 契约设计。",[26,604,605],{},"PlayCanvas 适配层、碰撞与导航能力的实现。",[26,607,608],{},"与平台宿主的协议对接。",{"title":143,"searchDepth":144,"depth":144,"links":610},[611,612,613,614,615,616],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":124,"depth":144,"text":124},{"src":618,"alt":619,"caption":620},"\u002Fimages\u002Fportfolio\u002Fexplorer-sdk-cover.svg","渲染 SDK 五层分层与约束的结构示意","渲染分层结构示意（非运行截图）",[622,623,624],"业务组件与 store 严禁 import 引擎原生对象","导航、碰撞、量测能力下沉到 viewer 层，UI 只发命令","浮点渲染目标加线性空间色彩处理，输出 SDR",{},[627,630,632],{"value":628,"label":629},"5","渲染解耦层级（业务 → 控制器 → core → 适配层 → viewer）",{"value":188,"label":631},"渲染适配（PlayCanvas \u002F Three.js \u002F Babylon.js）",{"value":363,"label":633},"碰撞格式自适应（voxel.json \u002F glb）",4,"\u002Fworks\u002Fexplorer-sdk",[637,638,639],"沉浸式浏览端","PlayCanvas viewer 定制版","渲染 SDK","渲染 SDK 分层设计，PlayCanvas 适配层与 viewer 改造，导航与碰撞能力",{"title":519,"description":143},[643,507,644,645,511,512,646],"React 19","Vite 6","Zustand","Babylon.js","works\u002Fexplorer-sdk","沉浸式 3DGS 场景浏览端，内置渲染 SDK 采用严格分层，业务代码不接触引擎对象，PlayCanvas、Three.js、Babylon.js 可按需切换。","ZYHO3FmhA_HBoC2w-2KTBQMebY-3nPJc63Vo2-RwoQs",{"id":651,"title":652,"attribution":7,"body":653,"caseOrder":7,"cover":750,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":754,"featured":162,"flagship":344,"highlights":755,"links":7,"media":7,"meta":759,"metrics":760,"navigation":162,"order":769,"path":770,"period":194,"projectType":499,"projects":771,"role":775,"roleScope":7,"seo":776,"stack":777,"status":7,"stem":782,"summary":783,"topic":213,"track":515,"__hash__":784},"works\u002Fworks\u002Ftorchcloud-gen2.md","TorchCloud 二代平台与混合场景编辑器",{"type":9,"value":654,"toc":742},[655,657,660,662,673,675,681,683,719,721,729,731],[12,656,14],{"id":14},[16,658,659],{},"官方 SuperSplat 只能编辑单个高斯点云，且界面强绑定其自有 UI 体系；PlayCanvas 官方编辑器则依赖闭源后端，无法做 Splat 级编辑。二代平台需要一个能混合多种资产并且可以发布的编辑器。",[12,661,21],{"id":21},[23,663,664,667,670],{},[26,665,666],{},"门户既要对外做 SEO，又要承载登录后的工作台。",[26,668,669],{},"编辑器要能作为子应用嵌入平台，也要能独立打开。",[26,671,672],{},"所有编辑操作必须可以撤销与重做。",[12,674,46],{"id":46},[246,676,679],{"className":677,"code":678,"language":251,"meta":143},[249],"TorchCloud 门户（Nuxt 4）\n  ├─ 公开页面：SSR \u002F SSG，canonical \u002F OG \u002F JSON-LD \u002F sitemap\n  ├─ 工作台：CSR，禁入公开缓存\n  └─ packages\u002Fbridge ──► 编辑器 iframe（版本化协议，Origin 与 Schema 双重校验）\n\n混合场景编辑器\n  Vue 壳（面板 \u002F 工具栏）\n    └─ src\u002Feditor 纯 TS 引擎层（框架无关）\n         └─ src\u002Feditor\u002Fported 算法移植层（选区 \u002F 裁剪 \u002F 数据处理）\n",[30,680,678],{"__ignoreMap":143},[12,682,61],{"id":61},[23,684,685,691,701,707,713],{},[26,686,687,690],{},[67,688,689],{},"不直接用官方界面","：编辑器抛弃 PCUI，使用无头 PlayCanvas 加自研 Vue 界面，换取布局与交互的自由度。",[26,692,693,696,697,700],{},[67,694,695],{},"两条单向通道","：引擎事件同步到 Pinia；UI 操作封装为带 ",[30,698,699],{},"execute \u002F undo"," 的命令对象交给引擎。这样撤销重做不依赖 UI 状态。",[26,702,703,706],{},[67,704,705],{},"算法移植并锁行为","：选区工具、删除裁切等操作从开源编辑器移植，先用 vitest 固化现有行为，再做剥离。",[26,708,709,712],{},[67,710,711],{},"引擎版本锁定","：算法基于特定版本移植，升级引擎必须全量回归选区工具。",[26,714,715,718],{},[67,716,717],{},"业务归宿主","：登录态、计费与自动保存由宿主负责，编辑器只做契约校验与回传。",[12,720,95],{"id":95},[23,722,723,726],{},[26,724,725],{},"同一编辑器既可以嵌入门户，也可以作为独立应用打开，编辑数据共用同一套保存与加载流程。",[26,727,728],{},"编辑器支持多个 Splat 与 GLB 的实例化、灯光与热点的 TRS 编辑，以及视频导出。",[12,730,124],{"id":124},[23,732,733,736,739],{},[26,734,735],{},"门户的渲染策略与 Bridge 协议设计。",[26,737,738],{},"编辑器引擎层、撤销重做体系与算法移植。",[26,740,741],{},"上传组件与项目持久化流程。",{"title":143,"searchDepth":144,"depth":144,"links":743},[744,745,746,747,748,749],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":124,"depth":144,"text":124},{"src":751,"alt":752,"caption":753},"\u002Fimages\u002Fportfolio\u002Ftorchcloud-gen2-cover.svg","门户与混合场景编辑器三层结构的示意","门户与编辑器结构示意（非运行截图）","TorchCloud 二代产品系",[756,757,758],"编辑器引擎层不依赖 Vue，UI 与引擎只通过两条通道交互","从开源编辑器移植选区与裁剪算法，并用单元测试锁定行为","门户按路由选择 SSR \u002F SSG 或 CSR，私有工作区不进入公开缓存",{},[761,764,767],{"value":762,"label":763},"7","混合编排对象类型（3DGS \u002F 4DGS \u002F GLB \u002F 几何体 \u002F 灯光 \u002F 热点 \u002F 运镜）",{"value":765,"label":766},"100%","编辑操作纳入撤销重做栈",{"value":188,"label":768},"编辑器分层（Vue 壳 \u002F 纯 TS 引擎层 \u002F 算法移植层）",5,"\u002Fworks\u002Ftorchcloud-gen2",[772,773,774],"二代门户（Nuxt）","混合场景编辑器","企业官网（Nuxt SSG）","平台架构设计，混合场景编辑器引擎层与撤销重做体系，Bridge 协议与上传组件",{"title":652,"description":143},[778,204,205,779,780,781,507],"Nuxt 4","Tailwind 4","Pinia","PlayCanvas 2.21","works\u002Ftorchcloud-gen2","第二代云端空间计算平台，门户采用 Nuxt 混合渲染兼顾 SEO 与工作台，编辑器抛弃官方界面层，自研支持 3DGS、Mesh 与灯光混合编排的场景编辑器。","7kAp_4tJO2G904-l0H1GPPPzphOYEQKJrfNlSwf1ekA",{"id":786,"title":787,"attribution":7,"body":788,"caseOrder":7,"cover":884,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":888,"featured":162,"flagship":344,"highlights":889,"links":7,"media":7,"meta":893,"metrics":894,"navigation":162,"order":904,"path":905,"period":194,"projectType":499,"projects":906,"role":911,"roleScope":7,"seo":912,"stack":913,"status":7,"stem":920,"summary":921,"topic":213,"track":515,"__hash__":922},"works\u002Fworks\u002Fdata-pipeline.md","3DGS 与 Mesh 数据转换管线",{"type":9,"value":789,"toc":876},[790,792,795,797,808,810,816,818,850,852,863,865],[12,791,14],{"id":14},[16,793,794],{},"三维重建的输出体积大、格式各异：数 GB 的 PLY 无法整体装入内存，单体 OBJ 带有大量高分辨率碎纹理，直接加载会在浏览器中 OOM。查看器需要的是分块、分级、带碰撞数据的标准产物。",[12,796,21],{"id":21},[23,798,799,802,805],{},[26,800,801],{},"管线运行在后端 Worker 上，需要支持多机部署与固定依赖版本。",[26,803,804],{},"输入规模远超内存，峰值内存必须与文件大小解耦。",[26,806,807],{},"产物要能被 PlayCanvas 查看器与 CesiumJS 直接使用。",[12,809,46],{"id":46},[246,811,814],{"className":812,"code":813,"language":251,"meta":143},[249],"公司数据加工链（后端 Worker CLI）\n\n[轴向校正 CLI]   PLY Z-up → Y-up（流式，4 GiB 级输入）\n        │\n        ▼\n[LOD 转换 CLI]   Morton 预排序 → 50% 逐级抽稀 → Streamed SOG（lod-meta.json）\n        │\n[碰撞生成 CLI]   分位裁剪 → 稀疏八叉树体素 → voxel.json \u002F .bin（或 GLB 碰撞网格）\n\n[OBJ→3D Tiles 管线]  八叉树分割 → LOD 简化 → 纹理重烘焙 → Draco 压缩 → 3D Tiles 1.1\n",[30,815,813],{"__ignoreMap":143},[12,817,61],{"id":61},[23,819,820,826,832,838,844],{},[26,821,822,825],{},[67,823,824],{},"流式而非整体加载","：轴向校正只解析 PLY 头，按块读取、旋转与写出；LOD 清洗使用 16 MB 缓冲零拷贝扫描，发现 NaN 或 Infinity 时写出剔除后的临时副本，原文件保持只读。",[26,827,828,831],{},[67,829,830],{},"分位裁剪替代正态近似","：室外场景的远景漂浮点会让正态近似误裁建筑边缘，并使包围盒膨胀。改为预过滤半透明噪点后直接取坐标的实际百分位边界。",[26,833,834,837],{},[67,835,836],{},"纹理重烘焙","：180 余张高分辨率纹理做图集会直接 OOM，且父级瓦片跨多个材质无法合并。每个瓦片按需加载源纹理，烘焙到自适应分辨率的单张图，用完即释放。",[26,839,840,843],{},[67,841,842],{},"以第三方标准工具为中枢","：瓦片集的组装与优化全部委托 3d-tiles-tools，不手写 JSON。",[26,845,846,849],{},[67,847,848],{},"原子写","：输出先写临时文件、刷盘后再重命名，中断只会留下可删除的临时文件。",[12,851,95],{"id":95},[23,853,854,857,860],{},[26,855,856],{},"4.1 GiB 输入的轴向校正峰值约 220 MB，与文件大小无关。",[26,858,859],{},"220 MB 量级的 OBJ 与 180 张纹理的测试集，产出 94 个含纹理瓦片，Draco 压缩率 81.6%，总体积 20.7 MB，低于 Cesium Ion 基准的 34.1 MB。",[26,861,862],{},"体积过大或过小的碰撞体会主动告警，避免静默产出无效数据。",[12,864,124],{"id":124},[23,866,867,870,873],{},[26,868,869],{},"管线整体架构与各阶段接口定义。",[26,871,872],{},"流式文件系统适配层、LOD 生成与碰撞体素化的实现。",[26,874,875],{},"OBJ→3D Tiles 管线 的八叉树分割、纹理重烘焙与瓦片装配。",{"title":143,"searchDepth":144,"depth":144,"links":877},[878,879,880,881,882,883],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":124,"depth":144,"text":124},{"src":885,"alt":886,"caption":887},"\u002Fimages\u002Fportfolio\u002Fdata-pipeline-cover.svg","3DGS 与 Mesh 数据转换管线的四阶段 CLI 结构示意","数据加工链结构示意（非运行截图）","数据转换管线系",[890,891,892],"流式 Seekable 读取，PLY 只解析头部，高斯数据按块处理","纹理重烘焙替代纹理图集，每个瓦片只使用一个材质与一张纹理","所有 CLI 输出 JSONL 进度事件，退出码语义化，便于 Worker 解析",{},[895,898,901],{"value":896,"label":897},"4.1 GiB → ~220 MB","轴向校正流式处理的输入与峰值内存",{"value":899,"label":900},"34.1 MB → 20.7 MB","220 MB+ OBJ 产出 3D Tiles 体积（对比 Cesium Ion 基准）",{"value":902,"label":903},"16 MB","LOD 清洗阶段的恒定缓冲，双遍流式不随文件增大",6,"\u002Fworks\u002Fdata-pipeline",[907,908,909,910],"LOD 转换 CLI","碰撞生成 CLI","轴向校正 CLI","OBJ→3D Tiles 管线","管线架构与核心算法实现（流式读写、LOD、碰撞、3D Tiles 纹理重烘焙）",{"title":787,"description":143},[209,507,914,915,916,917,918,919],"splat-transform 3.4","gltf-transform","Draco","xatlas","sharp","Worker Threads","works\u002Fdata-pipeline","一组部署在后端 Worker 上的数据加工 CLI，把重建产出的 PLY、OBJ 转换为各查看器可流式消费的标准产物，并以内存与体积指标验证效果。","l85n_mUyc4PHuX-6Ge8iGYqAD-UhvbtrPcH38cLwk4I",{"id":924,"title":925,"attribution":7,"body":926,"caseOrder":7,"cover":1016,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":483,"featured":344,"flagship":344,"highlights":1020,"links":7,"media":7,"meta":1024,"metrics":1025,"navigation":162,"order":1034,"path":1035,"period":194,"projectType":499,"projects":1036,"role":1039,"roleScope":7,"seo":1040,"stack":1041,"status":7,"stem":1046,"summary":1047,"topic":213,"track":515,"__hash__":1048},"works\u002Fworks\u002Fmesh-pointcloud.md","大规模 Mesh 与点云可视化",{"type":9,"value":927,"toc":1008},[928,930,933,935,946,948,954,956,988,990,998,1000],[12,929,14],{"id":14},[16,931,932],{},"摄影测量与 3DGS 导出的 Mesh 动辄百万到千万面片，点云则是亿级点数。浏览器内存只有数 GB，不能整体加载，也不能在前端完成重几何运算。",[12,934,21],{"id":21},[23,936,937,940,943],{},[26,938,939],{},"前端只能持有当前可见的分块瓦片。",[26,941,942],{},"切割、简化与格式导出需要后端完成。",[26,944,945],{},"宿主平台通过 iframe 嵌入两个子应用，语言需要与宿主同步。",[12,947,46],{"id":46},[246,949,952],{"className":950,"code":951,"language":251,"meta":143},[249],"Mesh 编辑器（Vue 3.5 + CesiumJS）\n  ├─ 前端：3D Tiles 流式加载、ClippingPlane 实时剖切预览、测量\n  └─ 后端（FastAPI + Celery）：网格切割、平滑、简化、多格式导出，前端轮询进度\n\n点云查看器（Vue 3.5 + Potree）\n  ├─ Potree 八叉树按视锥流式加载，Worker 解码 LAS \u002F LAZ\n  └─ 读取宿主约定的 localStorage 语言设置\n",[30,953,951],{"__ignoreMap":143},[12,955,61],{"id":61},[23,957,958,964,970,976,982],{},[26,959,960,963],{},[67,961,962],{},"轻前端、重后端","：前端只做可视化与参数收集；Laplacian、Taubin 平滑与 QEM 简化在后端异步完成，避免浏览器卡死。",[26,965,966,969],{},[67,967,968],{},"响应式隔离","：Cesium 的 Viewer 与 Tileset 只能存放在非响应式字段或浅引用中。否则 Vue 的深层代理会劫持每帧的渲染矩阵。",[26,971,972,975],{},[67,973,974],{},"统一坐标入口","：业务层不直接调用 Cesium 坐标 API，统一经过 WGS84、ECEF、屏幕与局部坐标的转换工具，拾取优先使用表面深度，失败时回退到椭球面。",[26,977,978,981],{},[67,979,980],{},"点云引擎分离构建","：Potree 引擎源码先经 Gulp 与 Rollup 生成产物，再供 Vue 壳加载。约定只改源码，不改产物。",[26,983,984,987],{},[67,985,986],{},"SPA 切换的资源释放","：销毁顺序固定为卸载 tileset、销毁 viewer、清理动画帧与事件，避免切换页面时出现 WebGL 上下文丢失。",[12,989,95],{"id":95},[23,991,992,995],{},[26,993,994],{},"千万级面片的 Mesh 可以在浏览器中流式查看与剖切，导出由后端完成。",[26,996,997],{},"点云查看器可以与宿主共享语言设置，无需额外的语言切换界面。",[12,999,124],{"id":124},[23,1001,1002,1005],{},[26,1003,1004],{},"Mesh 编辑器的前端架构、Cesium 集成与坐标工具。",[26,1006,1007],{},"点云查看器的宿主联动与构建管线。",{"title":143,"searchDepth":144,"depth":144,"links":1009},[1010,1011,1012,1013,1014,1015],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":124,"depth":144,"text":124},{"src":1017,"alt":1018,"caption":1019},"\u002Fimages\u002Fportfolio\u002Fmesh-pointcloud-cover.svg","Mesh 编辑器与点云查看器两条子应用流程的结构示意","两个子应用的结构示意（非运行截图）",[1021,1022,1023],"前端只做轻预览与剖切，网格切割与导出交由后端异步执行","Cesium 对象不进入响应式系统，避免每帧渲染矩阵被代理","点云引擎源码与 Vue 壳分离构建，产物不被手工修改",{},[1026,1029,1032],{"value":1027,"label":1028},"千万级","面片规模（3D Tiles 流式加载）",{"value":1030,"label":1031},"LAS \u002F LAZ","Worker 内二进制解码的点云格式",{"value":363,"label":1033},"子应用形态（Mesh 编辑器 \u002F 点云查看器）",7,"\u002Fworks\u002Fmesh-pointcloud",[1037,1038],"Mesh 编辑器","点云查看器","Mesh 编辑器前端架构与 Cesium 集成，点云查看器的宿主联动与构建管线",{"title":925,"description":143},[204,507,1042,1043,1044,512,780,1045],"Vite","CesiumJS 1.138","Potree","Arco Design","works\u002Fmesh-pointcloud","面向千万面片级 Mesh 与激光点云的两个 Web 子应用，分别基于 CesiumJS 3D Tiles 与 Potree 八叉树实现流式查看与测量。","7S71C5XgXe8uCNNUW-Ch68RcvABakCWRqUvoQXFkywc",{"id":1050,"title":1051,"attribution":7,"body":1052,"caseOrder":7,"cover":1139,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":1143,"featured":344,"flagship":344,"highlights":1144,"links":7,"media":7,"meta":1148,"metrics":1149,"navigation":162,"order":1158,"path":1159,"period":194,"projectType":499,"projects":1160,"role":1162,"roleScope":7,"seo":1163,"stack":1164,"status":7,"stem":1170,"summary":1171,"topic":1172,"track":515,"__hash__":1173},"works\u002Fworks\u002Fhunter-game.md","Hunter World：3DGS 真实场景多人寻宝竞速",{"type":9,"value":1053,"toc":1131},[1054,1056,1059,1061,1072,1074,1080,1082,1108,1110,1118,1120],[12,1055,14],{"id":14},[16,1057,1058],{},"3DGS 只有光子级的视觉表示，没有真实的体积，角色无法站立、跳跃或被阻挡。游戏需要一套独立的物理表示，同时保证多人同步的公平性。",[12,1060,21],{"id":21},[23,1062,1063,1066,1069],{},[26,1064,1065],{},"场景由平台训练得到，游戏需要复用同一份 3DGS 资产。",[26,1067,1068],{},"多人同屏需要低延迟的位置同步，但分数与宝箱分配必须可信。",[26,1070,1071],{},"前端保持零框架，减少每帧开销。",[12,1073,46],{"id":46},[246,1075,1078],{"className":1076,"code":1077,"language":251,"meta":143},[249],"前端（Babylon.js 8 + Havok）\n  ├─ 视觉层：GaussianSplattingMesh（3DGS）\n  ├─ 物理层：碰撞 GLB 逐子网格建静态刚体，脱离根节点避免坐标翻转\n  └─ 游戏模式接口 GameMode\n       ├─ AI 模式：宝箱刷新 + 行为状态机\n       └─ 联机模式：LiveKit DataChannel\n\n服务端（Go + Chi + LiveKit SDK）\n  ├─ 有损高频通道：玩家位置、朝向、动画\n  └─ 可靠权威通道：宝箱生成与认领、敲击抽奖、比赛结算\n",[30,1079,1077],{"__ignoreMap":143},[12,1081,61],{"id":61},[23,1083,1084,1090,1096,1102],{},[26,1085,1086,1089],{},[67,1087,1088],{},"双轨表示","：视觉上使用 3DGS，物理上使用 C-11 碰撞工具生成的 GLB。出生点与宝箱生成区由碰撞体的包围盒推导，地面高度通过垂直射线求得。",[26,1091,1092,1095],{},[67,1093,1094],{},"胶囊体角色控制器","：状态机包含地面、起跳与空中三种状态，并设置掉出场景后的自动重生，防止穿模后永久丢失角色。",[26,1097,1098,1101],{},[67,1099,1100],{},"同构的游戏模式","：单机 AI 与在线联机实现同一个接口，业务规则不分叉。",[26,1103,1104,1107],{},[67,1105,1106],{},"服务端仲裁","：宝箱认领防止双抢，敲击抽奖的概率由服务端按频率计算，分数只在服务端结算。",[12,1109,95],{"id":95},[23,1111,1112,1115],{},[26,1113,1114],{},"单机与联机共享地图、宝箱与 HUD 逻辑，联机问题可以在单机模式下复现。",[26,1116,1117],{},"玩家在真实扫描场景中可以跑、跳并与碰撞体交互。",[12,1119,124],{"id":124},[23,1121,1122,1125,1128],{},[26,1123,1124],{},"游戏架构与 GameMode 接口设计。",[26,1126,1127],{},"物理层的碰撞网格接入与角色控制器。",[26,1129,1130],{},"联机同步协议与服务端规则的协作设计。",{"title":143,"searchDepth":144,"depth":144,"links":1132},[1133,1134,1135,1136,1137,1138],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":124,"depth":144,"text":124},{"src":1140,"alt":1141,"caption":1142},"\u002Fimages\u002Fportfolio\u002Fhunter-game-cover.svg","游戏视觉层、物理层与服务端双通道的结构示意","游戏架构结构示意（非运行截图）","游戏与品牌官网系",[1145,1146,1147],"视觉层用 3DGS，物理层用隐形 GLB 碰撞网格，二者坐标系分别处理","分数与宝箱归属由服务端仲裁，客户端只发请求","位置同步走有损高频通道，关键事件走可靠通道",{},[1150,1153,1155],{"value":1151,"label":1152},"15","单局宝箱数（300 秒竞速）",{"value":363,"label":1154},"同构运行模式（单机 AI \u002F 在线联机）",{"value":1156,"label":1157},"Havok","物理引擎（WASM，胶囊体角色控制器）",8,"\u002Fworks\u002Fhunter-game",[1161],"3DGS 寻宝游戏","游戏架构与物理层设计，角色控制器，联机同步与服务端权威规则",{"title":1051,"description":143},[1165,1166,1167,507,1168,1169],"Babylon.js 8","Havok 物理（WASM）","LiveKit","Go","Chi","works\u002Fhunter-game","将 3DGS 真实场景变为多人同屏游戏，以隐形 GLB 碰撞网格承担物理，单机 AI 与在线联机共用一套游戏模式接口。","interactive","8qBvNFSk1ZIUS3uyLF_ocvG7gCM1PcCSFrd8CZH8-uQ",{"id":1175,"title":1176,"attribution":7,"body":1177,"caseOrder":144,"cover":1292,"demo":7,"description":143,"evidenceStatus":159,"extension":160,"family":1296,"featured":344,"flagship":162,"highlights":1297,"links":1301,"media":7,"meta":1310,"metrics":1311,"navigation":162,"order":1316,"path":1317,"period":194,"projectType":499,"projects":1318,"role":1323,"roleScope":1323,"seo":1324,"stack":1325,"status":171,"stem":1331,"summary":1332,"topic":1333,"track":515,"__hash__":1334},"works\u002Fworks\u002Fsitepulse-agent.md","智慧工地：空间可视化与 Agent 业务集成",{"type":9,"value":1178,"toc":1281},[1179,1181,1184,1186,1197,1199,1205,1207,1233,1236,1244,1246,1254,1257],[12,1180,14],{"id":14},[16,1182,1183],{},"光伏、储能 EPC 工地的业务数据分散在多个系统中，需要把工地空间状态与造价、巡检、审批等业务流程整合到统一入口。本案例覆盖其中两条能力线：3D 空间可视化平台与多 Agent 业务平台。",[12,1185,21],{"id":21},[23,1187,1188,1191,1194],{},[26,1189,1190],{},"客户工程信息不公开，对外呈现架构取舍与演示内容。",[26,1192,1193],{},"演示数据为真实映射与 mock 的混合体：Agent 清单与知识库条目为实际映射，runs\u002Fcapabilities\u002Fchat\u002Fsearch\u002Fasr 等为演示数据。",[26,1195,1196],{},"3D 平台与 Agent 平台按两条并行能力线建设与呈现。",[12,1198,46],{"id":46},[246,1200,1203],{"className":1201,"code":1202,"language":251,"meta":143},[249],"能力线 A：3D 空间平台       能力线 B：Agent 平台\nSitePulse 3D 前端          AgentScope 2.0.5 leader \u002F sub-agent\n  ├─ 场景可视化与操作         ├─ 编排器 \u002F BPM 适配 \u002F 巡检\n  └─ 资产加载（含 fallback）  ├─ 平台身份 \u002F 知识库访问策略 \u002F 工作区沙箱\n                            └─ 子 Agent：造价、天气（其余待接数据）\n（两线并行建设，集成串联持续推进）\n",[30,1204,1202],{"__ignoreMap":143},[12,1206,61],{"id":61},[23,1208,1209,1215,1221,1227],{},[26,1210,1211,1214],{},[67,1212,1213],{},"框架选型","：基于 AgentScope 原生 leader \u002F sub-agent 结构接入业务编排，工程精力放在边界设计与集成上。",[26,1216,1217,1220],{},[67,1218,1219],{},"知识库共享边界","：以平台身份做只读共享，不跨属主共享凭据；合成施工记录库被明确排除在共享范围外。",[26,1222,1223,1226],{},[67,1224,1225],{},"幂等与高危审批","：设计了幂等键与高危操作审批流（改动清单文档为待对齐草稿），作为设计风险与验证计划呈现，不写成已线上闭环。",[26,1228,1229,1232],{},[67,1230,1231],{},"事件通道","：SSE 推送需要区分\"端点连通\"与\"真实事件产出\"两个层次，演示端按两者分别标注。",[12,1234,1235],{"id":1235},"异常与降级策略",[23,1237,1238,1241],{},[26,1239,1240],{},"需处理 SSE 事件通道不可达的场景，通过静态快照展示保持界面可用。",[26,1242,1243],{},"3D 资产加载失败时按 fallback 内容展示。",[12,1245,95],{"id":95},[23,1247,1248,1251],{},[26,1249,1250],{},"演示端可运行：Agent 清单与知识库为实际映射，其余接口为演示数据，文档内分层标注。",[26,1252,1253],{},"配套测试骨架覆盖认证、BPM 异步、平台身份、状态隔离、挂起审批与工作区沙箱等场景。",[12,1255,1256],{"id":1256},"编排演示",[1258,1259,1260,1262,1273,1276],"agent-run-demo",{},[12,1261,110],{"id":110},[23,1263,1264,1267,1270],{},[26,1265,1266],{},"Agent 能力仍以演示数据与已接入工具为主，安全、进度、资源、质量子 Agent 待接真实数据源。",[26,1268,1269],{},"幂等键与高危操作审批处于设计对齐阶段，未形成线上闭环；SSE 通道仅演示端验证，未在生产环境压测。",[26,1271,1272],{},"3D 平台与 Agent 平台的串联集成仍在推进，当前两条能力线并行呈现。",[12,1274,1275],{"id":1275},"个人职责与边界",[23,1277,1278],{},[26,1279,1280],{},"负责需求对接、3D 平台前端与 Agent 平台业务集成。",{"title":143,"searchDepth":144,"depth":144,"links":1282},[1283,1284,1285,1286,1287,1288,1289,1290,1291],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":1235,"depth":144,"text":1235},{"id":95,"depth":144,"text":95},{"id":1256,"depth":144,"text":1256},{"id":110,"depth":144,"text":110},{"id":1275,"depth":144,"text":1275},{"src":1293,"alt":1294,"caption":1295},"\u002Fimages\u002Fportfolio\u002Fsitepulse-cover.svg","SitePulse 空间可视化与 Agent\u002FBPM 双能力线架构示意","双能力线结构示意（自绘封面，非真实运行截图）","SitePulse 智慧工地平台",[1298,1299,1300],"基于 AgentScope 原生 leader \u002F sub-agent 编排接入业务","平台身份只读共享知识库，不跨属主共享凭据，排除合成施工记录库","幂等与高危操作审批处于设计对齐阶段（改动清单持续更新）",[1302,1306],{"label":1303,"url":1304,"kind":171,"note":1305},"指挥中心演示","\u002Fdemos\u002Fsitepulse\u002Foverview","Mock 静态版；工地实景为压缩流式 SOG",{"label":1307,"url":1308,"kind":171,"note":1309},"Agent 编排演示","#agent-demo","站内预设场景演示，非实时推理",{},[1312,1314],{"value":363,"label":1313},"并行能力线（3D 平台 \u002F Agent 平台）",{"value":357,"label":1315},"子 Agent 分工（造价、天气已接入，安全\u002F进度\u002F资源\u002F质量待接数据）",9,"\u002Fworks\u002Fsitepulse-agent",[1319,1320,1321,1322],"Agent 编排服务","演示前端","云平台适配","3D 平台前端","需求对接、3D 平台前端与 Agent 平台业务集成",{"title":1176,"description":143},[1326,1327,1328,1329,1330],"Vue 3","AgentScope 2.0.5","Python","SSE 事件流","BPM 对接","works\u002Fsitepulse-agent","面向光伏\u002F储能 EPC 的智慧工地平台，3D 空间可视化与多 Agent 业务平台两条能力线并行推进，知识库按平台身份做只读共享。","ai","5PoOzKbwT1SZmmI2Q8r9XYjLN55Ky-GZ99WGIZigLuY",{"id":1336,"title":1337,"attribution":7,"body":1338,"caseOrder":497,"cover":1432,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":1436,"featured":344,"flagship":162,"highlights":1437,"links":7,"media":1441,"meta":1453,"metrics":1454,"navigation":162,"order":1461,"path":1462,"period":194,"projectType":499,"projects":1463,"role":1468,"roleScope":1468,"seo":1469,"stack":1470,"status":1476,"stem":1477,"summary":1478,"topic":213,"track":515,"__hash__":1479},"works\u002Fworks\u002Fdrone-platform.md","无人机 GCS 与数据大屏交付",{"type":9,"value":1339,"toc":1422},[1340,1342,1345,1347,1358,1360,1366,1368,1388,1390,1395,1397,1402,1404,1415,1417],[12,1341,14],{"id":14},[16,1343,1344],{},"无人机作业需要地面站控制、任务规划与作业数据可视化三类界面协同交付，涉及桌面端、Web 端与大屏三种形态。",[12,1346,21],{"id":21},[23,1348,1349,1352,1355],{},[26,1350,1351],{},"技术栈以 Vue 2 \u002F vue-cli \u002F Electron 11 \u002F Mapbox·MapLibre \u002F MQTT 为准。",[26,1353,1354],{},"项目为协作交付，职责边界见下文。",[26,1356,1357],{},"对外仅呈现脱敏后的界面可视区域。",[12,1359,46],{"id":46},[246,1361,1364],{"className":1362,"code":1363,"language":251,"meta":143},[249],"[桌面 GCS] Vue 2 + Electron 11 + Mapbox\u002FMapLibre + MQTT\n     │  任务下发 \u002F 状态回传\n[Web 任务视图] ims uav 模块（mission \u002F inspection \u002F RealtimeLog \u002F payload）\n     │\n[数据大屏] vue-cli 大屏工程：中心地图 + 两侧业务指标\n",[30,1365,1363],{"__ignoreMap":143},[12,1367,61],{"id":61},[23,1369,1370,1376,1382],{},[26,1371,1372,1375],{},[67,1373,1374],{},"协议侧工作","：完成 MAVLink 航点命令映射、坐标到 GeoJSON 转换与前后端联调。",[26,1377,1378,1381],{},[67,1379,1380],{},"桌面端选型","：Electron 11 封装 Vue 2 应用，复用 Web 技术栈交付桌面 GCS。",[26,1383,1384,1387],{},[67,1385,1386],{},"大屏信息架构","：中心留给空间地图，业务指标环绕两侧，空间叙事优先于图表密度。",[12,1389,1235],{"id":1235},[23,1391,1392],{},[26,1393,1394],{},"需处理 MQTT 通道异常场景，通过保持最近已知状态展示避免误读。",[12,1396,95],{"id":95},[23,1398,1399],{},[26,1400,1401],{},"交付覆盖桌面 GCS、Web 任务视图与数据大屏三种形态；界面记录见上方媒体图。",[12,1403,110],{"id":110},[23,1405,1406,1409,1412],{},[26,1407,1408],{},"技术栈以 Vue 2 为准，属项目历史选型，不代表现阶段技术偏好；对外仅呈现脱敏界面。",[26,1410,1411],{},"MQTT 实时链路依赖现场 broker，公开材料为界面记录，无实时数据回放。",[26,1413,1414],{},"项目属协作交付，职责边界以上文与\"我的职责\"为准。",[12,1416,1275],{"id":1275},[23,1418,1419],{},[26,1420,1421],{},"负责需求对接、地面站与 Web 无人机模块前端实现、大屏联调与交付。",{"title":143,"searchDepth":144,"depth":144,"links":1423},[1424,1425,1426,1427,1428,1429,1430,1431],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":1235,"depth":144,"text":1235},{"id":95,"depth":144,"text":95},{"id":110,"depth":144,"text":110},{"id":1275,"depth":144,"text":1275},{"src":1433,"alt":1434,"caption":1435},"\u002Fimages\u002Fportfolio\u002Fdrone-map.webp","无人机任务地图与任务表单同屏界面","任务地图与任务编排同屏的画面记录","无人机地面站与可视化",[1438,1439,1440],"完成 MAVLink 航点命令映射、坐标到 GeoJSON 转换与前后端联调","任务规划、巡检、实时日志、载荷等无人机业务视图","数据大屏采用\"中心地图 + 两侧业务指标\"结构组织空间与业务信息",[1442,1445,1449],{"kind":1443,"src":1433,"alt":1434,"caption":1444},"image","地图航线与任务编排同屏呈现的画面记录",{"kind":1443,"src":1446,"alt":1447,"caption":1448},"\u002Fimages\u002Fportfolio\u002Fdrone-route-map.webp","航线卫星地图界面","卫星底图上的航线规划视图",{"kind":1443,"src":1450,"alt":1451,"caption":1452},"\u002Fimages\u002Fportfolio\u002Fdrone-dashboard.webp","无人机数据大屏","中心地图与两侧业务指标的大屏布局",{},[1455,1457,1459],{"value":188,"label":1456},"交付形态（桌面 GCS \u002F Web 任务视图 \u002F 数据大屏）",{"value":491,"label":1458},"uav 视图模块（mission \u002F inspection \u002F RealtimeLog \u002F payload）",{"value":363,"label":1460},"地图引擎（Mapbox \u002F MapLibre）",10,"\u002Fworks\u002Fdrone-platform",[1464,1465,1466,1467],"地面站桌面端","任务规划 Web 视图","GIS 数据大屏","巡检与实时日志模块","需求对接、GCS 与 Web 无人机模块前端、大屏联调交付",{"title":1337,"description":143},[1471,1472,1473,1474,1475],"Vue 2","Electron 11","Mapbox \u002F MapLibre","MQTT","vue-cli","delivered","works\u002Fdrone-platform","无人机地面站桌面端、Web 任务视图与数据大屏的交付型前端工程，覆盖任务规划、巡检、实时日志与载荷视图。","Agi1sNoy9_02Nk1QX0W4NFnLLpFZE1_DnEVmJKjTez0",{"id":1481,"title":1482,"attribution":7,"body":1483,"caseOrder":7,"cover":1566,"demo":7,"description":143,"evidenceStatus":159,"extension":160,"family":1570,"featured":344,"flagship":344,"highlights":1571,"links":1575,"media":1584,"meta":1597,"metrics":1598,"navigation":162,"order":1606,"path":1607,"period":194,"projectType":195,"projects":1608,"role":1610,"roleScope":1610,"seo":1611,"stack":1612,"status":171,"stem":1615,"summary":1616,"topic":1172,"track":195,"__hash__":1617},"works\u002Fworks\u002Fcar-configurator.md","汽车 3D 配置器",{"type":9,"value":1484,"toc":1556},[1485,1487,1490,1492,1500,1502,1508,1510,1518,1520,1525,1527,1532,1534,1549,1551],[12,1486,14],{"id":14},[16,1488,1489],{},"车辆外观与内饰需要在网页内实时查看与配置，颜色切换、视角切换与开门等状态呈现是配置器的核心交互。",[12,1491,21],{"id":21},[23,1493,1494,1497],{},[26,1495,1496],{},"基于 Vite + React + React Three Fiber 实现。",[26,1498,1499],{},"录屏画面呈现界面状态与交互效果。",[12,1501,46],{"id":46},[246,1503,1506],{"className":1504,"code":1505,"language":251,"meta":143},[249],"React 应用壳 → R3F 场景（车辆模型 + 灯光 + 相机）\n   ├─ 配置 UI（颜色圆点）→ 材质\u002F部件切换\n   └─ 视角与状态（外观 \u002F 开门 \u002F 座舱）\n",[30,1507,1505],{"__ignoreMap":143},[12,1509,61],{"id":61},[23,1511,1512,1515],{},[26,1513,1514],{},"模型走 Draco\u002FKTX2 类压缩与懒加载思路控制首屏体积（历史项目记录口径）。",[26,1516,1517],{},"交互状态通过场景内部件级切换实现，而非整体换模型。",[12,1519,1235],{"id":1235},[23,1521,1522],{},[26,1523,1524],{},"低端设备与旧浏览器按海报\u002F截图降级展示，不强制加载 3D。",[12,1526,95],{"id":95},[23,1528,1529],{},[26,1530,1531],{},"页面可呈现外观配置、开门状态与座舱视角；历史指标见 metrics，口径以记录为准。",[12,1533,110],{"id":110},[23,1535,1536,1543,1546],{},[26,1537,1538,1539,1542],{},"原 workers.dev 独立部署已失效，演示入口改为站点内嵌构建产物（",[30,1540,1541],{},"\u002Fdemos\u002Fcar\u002F","），随主站统一部署。",[26,1544,1545],{},"颜色配置只覆盖外观材质，内饰与轮毂等配置项未纳入。",[26,1547,1548],{},"移动端帧率与首屏优化指标为历史项目记录，测试环境未随资料附出，不作为可复测承诺。",[12,1550,1275],{"id":1275},[23,1552,1553],{},[26,1554,1555],{},"三维展示与交互前端实现；项目按个人作品集口径呈现。",{"title":143,"searchDepth":144,"depth":144,"links":1557},[1558,1559,1560,1561,1562,1563,1564,1565],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":1235,"depth":144,"text":1235},{"id":95,"depth":144,"text":95},{"id":110,"depth":144,"text":110},{"id":1275,"depth":144,"text":1275},{"src":1567,"alt":1568,"caption":1569},"\u002Fimages\u002Fportfolio\u002Fcar-exterior.webp","汽车 3D 配置器外观界面","外观默认态与右侧颜色配置入口","汽车三维配置器",[1572,1573,1574],"车身颜色圆点配置 UI 与多角度外观查看","画面记录呈现双门打开与座舱视角等车辆状态","录屏画面呈现颜色配置、开门状态与座舱视角细节",[1576,1579],{"label":1577,"url":1541,"kind":171,"note":1578},"在线体验","站内独立部署的原项目构建产物",{"label":1580,"url":1581,"kind":1582,"note":1583},"演示录屏","#media","video","项目录屏精选（无声）",[1585,1588,1589,1593],{"kind":1582,"src":1586,"poster":1567,"caption":1587},"\u002Fvideos\u002Fcar-demo.webm","交互录屏精选（无声），画面来自项目录屏，非浏览器实时重建能力演示",{"kind":1443,"src":1567,"alt":1568,"caption":1569},{"kind":1443,"src":1590,"alt":1591,"caption":1592},"\u002Fimages\u002Fportfolio\u002Fcar-doors.webp","汽车双门打开状态","画面呈现双门打开状态",{"kind":1443,"src":1594,"alt":1595,"caption":1596},"\u002Fimages\u002Fportfolio\u002Fcar-interior.webp","汽车座舱视角","车内座舱\u002F天窗视角",{},[1599,1603],{"value":1600,"label":1601,"measurementSummary":1602},"55–60","移动端帧率 FPS","历史项目记录；适用于汽车配置器项目，非本站实测；测试环境未随资料附出",{"value":1604,"label":1605,"measurementSummary":1602},"35%","首屏加载时间缩短",11,"\u002Fworks\u002Fcar-configurator",[1609],"汽车配置器","交互需求梳理、三维场景与前端实现",{"title":1482,"description":143},[1042,1613,1614,512],"React","React Three Fiber","works\u002Fcar-configurator","车身颜色配置、视角切换与座舱细节的实时 3D 展示页，画面记录包含开门等车辆状态呈现。","NNucxLw_vEKYEnrHeLs7-XgeHw7MCBwM7pDVMN9T7lM",{"id":1619,"title":1620,"attribution":7,"body":1621,"caseOrder":7,"cover":1677,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":1681,"featured":344,"flagship":344,"highlights":1682,"links":7,"media":1686,"meta":1692,"metrics":1693,"navigation":162,"order":1706,"path":1707,"period":194,"projectType":499,"projects":1708,"role":1711,"roleScope":1711,"seo":1712,"stack":1713,"status":1476,"stem":1717,"summary":1718,"topic":1172,"track":515,"__hash__":1719},"works\u002Fworks\u002Fphotography-interaction.md","摄影器材 3D 交互展示页",{"type":9,"value":1622,"toc":1669},[1623,1625,1628,1630,1635,1637,1648,1650,1655,1657,1662,1664],[12,1624,14],{"id":14},[16,1626,1627],{},"摄影器材需要在网页内做可交互的细节展示，同时控制 3D 资产体积以保证加载速度，新品接入还需要可复用的接入流程。",[12,1629,21],{"id":21},[23,1631,1632],{},[26,1633,1634],{},"本案例以历史项目资料呈现，指标口径见 metrics 附注。",[12,1636,61],{"id":61},[23,1638,1639,1642,1645],{},[26,1640,1641],{},"采用 Hitbox 资产体系把可点击区域拆为独立热区资产，交互命中与视觉模型解耦。",[26,1643,1644],{},"Draco 几何压缩 + KTX2 纹理压缩组合控制体积；GSAP 负责镜头与 UI 动效的时间轴编排。",[26,1646,1647],{},"资产接入流程模板化，缩短新器材上架周期。",[12,1649,1235],{"id":1235},[23,1651,1652],{},[26,1653,1654],{},"低端设备按静态图与说明文字展示，不强制加载 3D。",[12,1656,95],{"id":95},[23,1658,1659],{},[26,1660,1661],{},"展示页交付上线；加载与帧率指标见 metrics，口径以历史记录为准。",[12,1663,1275],{"id":1275},[23,1665,1666],{},[26,1667,1668],{},"负责需求对接、三维资产规范制定与前端架构交付；电商长页为配套视觉产出。",{"title":143,"searchDepth":144,"depth":144,"links":1670},[1671,1672,1673,1674,1675,1676],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":61,"depth":144,"text":61},{"id":1235,"depth":144,"text":1235},{"id":95,"depth":144,"text":95},{"id":1275,"depth":144,"text":1275},{"src":1678,"alt":1679,"caption":1680},"\u002Fimages\u002Fportfolio\u002Fcamera-still.webp","相机静物渲染图","摄影器材相关视觉产出（静物渲染图）","摄影器材产品展示",[1683,1684,1685],"Hitbox 资产体系组织可交互热区，区别于整模型点击","Draco \u002F KTX2 资产压缩控制加载体积","GSAP 驱动镜头与界面动效叙事",[1687,1688],{"kind":1443,"src":1678,"alt":1679,"caption":1680},{"kind":1443,"src":1689,"alt":1690,"caption":1691},"\u002Fimages\u002Fportfolio\u002Fecommerce-hero.webp","摄影器材电商长页头图","配套电商长页版面",{},[1694,1697,1698,1702],{"value":1695,"label":1605,"measurementSummary":1696},"40%","历史项目记录；适用于摄影器材展示项目，非本站实测；测试环境未随资料附出",{"value":1600,"label":1601,"measurementSummary":1696},{"value":1699,"label":1700,"measurementSummary":1701},"1–2 天","新器材接入周期","历史项目记录；适用于摄影器材展示项目，非本站实测；任务范围以当时记录为准",{"value":1703,"label":1704,"measurementSummary":1705},"30%","研发效率提升","历史项目记录；适用于摄影器材展示项目，非本站实测；统计口径以当时记录为准",12,"\u002Fworks\u002Fphotography-interaction",[1709,1710],"摄影器材 3D 展示页","电商长页","需求对接、三维资产规范与前端架构交付",{"title":1620,"description":143},[1614,1714,916,1715,1716],"Hitbox 资产体系","KTX2","GSAP","works\u002Fphotography-interaction","摄影器材产品的网页 3D 交互展示，以资产压缩与分区热区交互支撑细节查看与动效叙事。","MpDLRERPb5lXX1bLlRR-mWQkENbjhq8fG0F33yf0H4w",{"id":1721,"title":1722,"attribution":7,"body":1723,"caseOrder":7,"cover":1777,"demo":7,"description":143,"evidenceStatus":159,"extension":160,"family":1781,"featured":344,"flagship":344,"highlights":1782,"links":1786,"media":1791,"meta":1795,"metrics":1796,"navigation":162,"order":1799,"path":1800,"period":194,"projectType":195,"projects":1801,"role":1803,"roleScope":1803,"seo":1804,"stack":1805,"status":171,"stem":1811,"summary":1812,"topic":1813,"track":195,"__hash__":1814},"works\u002Fworks\u002Fcloud-lims.md","Cloud LIMS 实验信息管理（Demo）",{"type":9,"value":1724,"toc":1769},[1725,1727,1730,1732,1737,1739,1745,1747,1755,1757,1762,1764],[12,1726,14],{"id":14},[16,1728,1729],{},"以 LIMS（实验室信息管理）为题材组织一套前后端分层的工程 Demo，覆盖业务工作台、模块化后端与智能体服务三个部分。",[12,1731,21],{"id":21},[23,1733,1734],{},[26,1735,1736],{},"本条目为组织仓库中的工程 Demo，按 Demo 定位呈现，不含医疗机构生产环境的运行指标。",[12,1738,46],{"id":46},[246,1740,1743],{"className":1741,"code":1742,"language":251,"meta":143},[249],"Vue 3 + Element Plus 工作台\n        │  REST \u002F 事件\nSpring Boot 4 模块化单体（业务域模块划分）\n        │\nFastAPI 智能体服务（LLM 工具调用 + FunASR 流式语音）\n",[30,1744,1742],{"__ignoreMap":143},[12,1746,61],{"id":61},[23,1748,1749,1752],{},[26,1750,1751],{},"后端采用模块化单体而非微服务，降低 Demo 部署与联调成本。",[26,1753,1754],{},"智能体服务独立成 FastAPI 进程，LLM 工具调用与流式语音识别与主业务解耦。",[12,1756,95],{"id":95},[23,1758,1759],{},[26,1760,1761],{},"三层工程结构完整，可本地启动演示；作为业务系统与 AI 集成能力的补充证据。",[12,1763,1275],{"id":1275},[23,1765,1766],{},[26,1767,1768],{},"负责工程 Demo 的结构设计与实现；仓库归属组织账号。",{"title":143,"searchDepth":144,"depth":144,"links":1770},[1771,1772,1773,1774,1775,1776],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":46,"depth":144,"text":46},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":1275,"depth":144,"text":1275},{"src":1778,"alt":1779,"caption":1780},"\u002Fimages\u002Fportfolio\u002Fcloud-lims-cover.svg","Cloud LIMS 前端工作台、模块化单体后端与智能体服务三层架构示意","三层架构示意（自绘封面，非运行截图）","Cloud LIMS（Demo）",[1783,1784,1785],"Vue 3 + Element Plus 管理工作台","Spring Boot 4 模块化单体后端","FastAPI 智能体服务：LLM 工具调用 + FunASR 流式语音",[1787],{"label":1788,"url":1789,"kind":1582,"note":1790},"全链路录屏","\u002Fvideos\u002Flims-chain.webm","本地三服务真实链路：登录 → 标本全流程 → Agent SSE → 语音输入 → 大屏",[1792],{"kind":1582,"src":1789,"poster":1793,"caption":1794},"\u002Fimages\u002Fportfolio\u002Flims-chain-poster.png","登录 → 标本登记\u002F采集\u002F签收\u002F分发\u002F结果录入 → 三级签字（电子签名）→ Agent SSE 工具调用 → FunASR 语音输入 → 急诊监控大屏",{},[1797],{"value":188,"label":1798},"工程分层（前端工作台 \u002F 模块化单体后端 \u002F 智能体服务）",13,"\u002Fworks\u002Fcloud-lims",[1802],"cloud-lims","工程 Demo 设计与实现",{"title":1722,"description":143},[1326,1806,1807,1808,1809,1810],"Element Plus","Spring Boot 4","FastAPI","LLM 工具调用","FunASR","works\u002Fcloud-lims","实验室信息管理方向的工程 Demo：Vue 3 + Element Plus 工作台、Spring Boot 4 模块化单体后端、FastAPI 智能体服务。","business","Dmqdfs6Aya_TK_9ZqnQAm_nT9sw6vImKoGF4MDxfet8",{"id":1816,"title":1817,"attribution":7,"body":1818,"caseOrder":7,"cover":1866,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":1870,"featured":344,"flagship":344,"highlights":1871,"links":7,"media":7,"meta":1874,"metrics":1875,"navigation":162,"order":1878,"path":1879,"period":194,"projectType":499,"projects":1880,"role":1883,"roleScope":1883,"seo":1884,"stack":1885,"status":1476,"stem":1889,"summary":1890,"topic":1813,"track":515,"__hash__":1891},"works\u002Fworks\u002Fcampus-platform.md","校园业务小程序与管理后台",{"type":9,"value":1819,"toc":1859},[1820,1822,1825,1827,1835,1837,1845,1847,1852,1854],[12,1821,14],{"id":14},[16,1823,1824],{},"校园业务需要移动端小程序与管理后台两端配套：小程序面向使用者，后台面向管理方。",[12,1826,21],{"id":21},[23,1828,1829,1832],{},[26,1830,1831],{},"界面截图涉及业务数据，公开版本经脱敏处理后另行补充。",[26,1833,1834],{},"本项目为山东新博雅校园业务，与其他小程序项目分开陈述。",[12,1836,61],{"id":61},[23,1838,1839,1842],{},[26,1840,1841],{},"后台基于 Ant Design Vue 体系二次开发，不宣称从零自研管理框架。",[26,1843,1844],{},"小程序端围绕业务对象组织列表、统计与表单，保持路径短、表单轻。",[12,1846,95],{"id":95},[23,1848,1849],{},[26,1850,1851],{},"小程序与后台两端交付使用；界面证据待脱敏核查后补充。",[12,1853,1275],{"id":1275},[23,1855,1856],{},[26,1857,1858],{},"负责需求对接、小程序与后台前端实现及业务联调。",{"title":143,"searchDepth":144,"depth":144,"links":1860},[1861,1862,1863,1864,1865],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":1275,"depth":144,"text":1275},{"src":1867,"alt":1868,"caption":1869},"\u002Fimages\u002Fportfolio\u002Fcampus-platform-cover.svg","校园小程序与管理后台两端结构示意","两端结构示意（自绘封面，非运行截图；界面截图含业务数据不公开）","校园业务平台",[1872,1873],"校园小程序端业务列表、统计与表单界面","管理后台基于 Ant Design Vue 体系二次开发",{},[1876],{"value":363,"label":1877},"交付形态（小程序 \u002F 管理后台）",14,"\u002Fworks\u002Fcampus-platform",[1881,1882],"校园小程序","校园管理后台","需求对接、小程序与后台前端实现",{"title":1817,"description":143},[1886,1887,1888],"微信小程序","Vue","Ant Design Vue","works\u002Fcampus-platform","面向校园业务的小程序与管理后台界面开发，覆盖业务列表、统计视图与表单流程。","hHkb58l4j8ML1W73nn1z9YF-d8bMbD892gpGnsojWrA",{"id":1893,"title":1894,"attribution":7,"body":1895,"caseOrder":7,"cover":1940,"demo":7,"description":143,"evidenceStatus":482,"extension":160,"family":1944,"featured":344,"flagship":344,"highlights":1945,"links":7,"media":1949,"meta":1976,"metrics":1977,"navigation":162,"order":1980,"path":1981,"period":194,"projectType":499,"projects":1982,"role":1986,"roleScope":1987,"seo":1988,"stack":1989,"status":1476,"stem":1993,"summary":1994,"topic":1995,"track":515,"__hash__":1996},"works\u002Fworks\u002Fvisual-design.md","商业三维渲染与平面视觉设计",{"type":9,"value":1896,"toc":1933},[1897,1899,1902,1904,1912,1914,1919,1921,1926,1928],[12,1898,14],{"id":14},[16,1900,1901],{},"商业项目需要三维渲染与平面视觉素材支撑产品展示与营销页面，本条目汇集可公开查看的视觉产出。",[12,1903,21],{"id":21},[23,1905,1906,1909],{},[26,1907,1908],{},"视觉产出以静态渲染图与版面图呈现。",[26,1910,1911],{},"图中商业信息（价格、促销等）不进入本站文案。",[12,1913,61],{"id":61},[23,1915,1916],{},[26,1917,1918],{},"视觉方向分四类呈现：商业渲染（节日商品场景）、风格化场景（村落\u002F玻璃球）、平面产品（散热器主图\u002F包装）、电商页面（长页版面），避免混排成一张长图。",[12,1920,95],{"id":95},[23,1922,1923],{},[26,1924,1925],{},"见上方媒体图，按类别独立成卡。",[12,1927,1275],{"id":1275},[23,1929,1930],{},[26,1931,1932],{},"三维渲染素材与平面\u002F电商版面设计执行。",{"title":143,"searchDepth":144,"depth":144,"links":1934},[1935,1936,1937,1938,1939],{"id":14,"depth":144,"text":14},{"id":21,"depth":144,"text":21},{"id":61,"depth":144,"text":61},{"id":95,"depth":144,"text":95},{"id":1275,"depth":144,"text":1275},{"src":1941,"alt":1942,"caption":1943},"\u002Fimages\u002Fportfolio\u002Fhalloween-scene.webp","万圣节主题商业渲染场景","节日主题商品场景渲染","商业视觉设计",[1946,1947,1948],"万圣节主题商品场景、暖色静物与室内场景等商业渲染","风格化农田村落与玻璃球花草等场景层次与材质练习","散热器产品主图、包装与电商长页等平面设计",[1950,1953,1955,1957,1961,1965,1969,1973],{"kind":1582,"src":1951,"poster":1941,"caption":1952},"\u002Fvideos\u002Fvisual-reel.webm","渲染动画精选（无声），画面来自项目录屏",{"kind":1443,"src":1941,"alt":1942,"caption":1954},"节日主题商品场景渲染（静态图）",{"kind":1443,"src":1678,"alt":1679,"caption":1956},"相机静物渲染图（静态图）",{"kind":1443,"src":1958,"alt":1959,"caption":1960},"\u002Fimages\u002Fportfolio\u002Finterior-scene.webp","室内场景渲染","米色室内场景渲染（静态图）",{"kind":1443,"src":1962,"alt":1963,"caption":1964},"\u002Fimages\u002Fportfolio\u002Ffarmland-village.webp","风格化农田村落场景","风格化农田村落全景（静态图）",{"kind":1443,"src":1966,"alt":1967,"caption":1968},"\u002Fimages\u002Fportfolio\u002Fglassball-flowers.webp","玻璃球与花草场景","薄荷绿玻璃球与花草场景（静态图）",{"kind":1443,"src":1970,"alt":1971,"caption":1972},"\u002Fimages\u002Fportfolio\u002Fradiator-product.webp","散热器产品主图与包装","散热器产品主图\u002F包装设计",{"kind":1443,"src":1689,"alt":1974,"caption":1975},"电商页面头图","电商长页头图与版面设计",{},[1978],{"value":491,"label":1979},"视觉方向（商业渲染 \u002F 风格化场景 \u002F 平面产品 \u002F 电商页面）",15,"\u002Fworks\u002Fvisual-design",[1983,1984,1985],"商业渲染","风格化场景","平面与电商设计","三维渲染与平面视觉执行","视觉素材制作与页面视觉设计",{"title":1894,"description":143},[1990,1991,1992],"三维渲染","平面设计","电商视觉","works\u002Fvisual-design","商业场景渲染、风格化场景、平面产品与电商页面的视觉设计集合，以静态图呈现材质、布光与版面能力。","visual","vr5iK85iosz5QpJNo4_E1hh7vnGzP7xER79f-DwbI50",1792474477857]