Files
trail-mate/docs/engineering/package-diagrams/apps-linux_cardputer_zero/package-diagram.html
T

251 lines
109 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>模块边界:apps/linux_cardputer_zero</title>
</head>
<body>
<main class="praxis-engineering-map" data-praxis-anchor="engineering:package:apps-linux_cardputer_zero" data-praxis-kind="engineering_package_diagram" data-praxis-status="candidate" data-praxis-confidence="high" data-praxis-document-path="docs/engineering/package-diagrams/apps-linux_cardputer_zero/package-diagram.html" data-praxis-drilldowns="[{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-main&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:main&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L49,协调多个外部对象或能力,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-not_contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:not_contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L24,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:not_contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:24&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-read_file&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:read_file&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L10,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:read_file:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:10&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:collaboration-pressure--main&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;承担外部协作的候选对象:main 技术热点&quot;,&quot;summary&quot;:&quot;该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:external-collaboration-pressure:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:reuse-pressure--contains&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;被广泛复用的候选对象:contains 技术热点&quot;,&quot;summary&quot;:&quot;该符号被多处代码引用或调用,可能是共享核心、隐式接口或变更扩散点。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:reuse-pressure:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;}]">
<header class="praxis-design-map-header">
<p>Praxis Software Structure Model</p>
<h1>模块边界:apps/linux_cardputer_zero</h1>
<p>解释 apps/linux_cardputer_zero 的包/模块边界、文件数量、符号数量和跨模块依赖。</p>
<div class="meta-row">
<span>Package Diagrams</span>
<span>candidate / high</span>
<span>0.1.0 · 34aad0bffa2f / main</span>
</div>
</header>
<section class="semantic-layer" data-praxis-anchor="engineering:reading-guide" data-praxis-kind="engineering_document_section">
<h2>图的读法</h2>
<ul>
<li>这张 Package Diagram 以 apps/linux_cardputer_zero 为中心,展示它作为工程模块边界时观察到的文件规模、符号规模和跨模块依赖。</li>
<li>图中的箭头表示本地仓库证据观察到的跨模块关系,主要用于理解技术依赖方向;它不是业务流程顺序,也不是运行时消息时序。</li>
<li>当前观察到的主要外部依赖包括:apps/esp32_lvgl、boards。</li>
</ul>
</section>
<section class="semantic-layer" data-praxis-anchor="engineering:technical-analysis" data-praxis-kind="engineering_document_section">
<h2>技术复杂度分析</h2>
<ul>
<li>apps/linux_cardputer_zero 当前包含 24 个文件和 230 个符号,属于软件结构模型识别出的技术组织边界。</li>
<li>跨模块关系呈现为:被其它模块引用或调用 40 次,主动依赖或调用外部模块 11 次,因此它被其他模块依赖更多。</li>
<li>当前对外依赖未形成明显异常,但仍应结合具体业务入口判断依赖方向是否稳定。</li>
</ul>
</section>
<section class="semantic-layer" data-praxis-anchor="engineering:business-relation" data-praxis-kind="engineering_document_section">
<h2>与业务复杂度的关联</h2>
<ul>
<li>apps/linux_cardputer_zero 不是业务故事本身,而是业务能力落地时可能经过的技术边界。</li>
<li>如果组织/过程模型中某个 Use Case 的证据、入口或下钻图落在 apps/linux_cardputer_zero,该 Use Case 应当反向链接到这张 Package Diagram,说明业务故事由哪个工程模块承载。</li>
<li>当前关联仍是 CANDIDATE:这里只能根据仓库证据解释技术边界,不能替代组织/过程模型对业务故事、参与者和业务目标的确认。</li>
</ul>
</section>
<section class="semantic-layer" data-praxis-anchor="engineering:governance-notes" data-praxis-kind="engineering_document_section">
<h2>治理建议</h2>
<ul>
<li>新增功能时,优先确认它属于该模块的稳定职责,而不是因为调用方便而落入该模块。</li>
<li>保持该模块的依赖方向可解释,避免形成隐式公共工具箱。</li>
<li>当业务 Use Case 文档引用该模块时,应在 Use Case 下钻文档中记录具体入口、调用链或配置证据。</li>
</ul>
</section>
<section class="semantic-layer diagram-section" data-praxis-anchor="engineering:diagram-body" data-praxis-kind="engineering_diagram_body">
<h2>UML / 技术图</h2>
<pre class="mermaid" data-praxis-anchor="engineering:package:apps-linux_cardputer_zero:uml" data-praxis-kind="engineering_package_uml" data-praxis-drilldowns="[{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-main&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:main&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L49,协调多个外部对象或能力,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-not_contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:not_contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L24,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:not_contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:24&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-read_file&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:read_file&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L10,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:read_file:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:10&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:collaboration-pressure--main&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;承担外部协作的候选对象:main 技术热点&quot;,&quot;summary&quot;:&quot;该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:external-collaboration-pressure:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:reuse-pressure--contains&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;被广泛复用的候选对象:contains 技术热点&quot;,&quot;summary&quot;:&quot;该符号被多处代码引用或调用,可能是共享核心、隐式接口或变更扩散点。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:reuse-pressure:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;}]">flowchart LR
package_node[&quot;apps/linux_cardputer_zero&quot;]
dependency_1[&quot;apps/esp32_lvgl&quot;]
package_node --&gt; dependency_1
dependency_2[&quot;boards&quot;]
package_node --&gt; dependency_2</pre>
</section>
<section class="semantic-layer" data-praxis-anchor="engineering:coverage" data-praxis-kind="engineering_document_section">
<h2>覆盖范围</h2>
<ul>
<li>模块路径:apps/linux_cardputer_zero</li>
<li>文件数:24</li>
<li>符号数:230</li>
<li>被其他模块依赖或调用:40</li>
<li>依赖或调用外部模块:11</li>
</ul>
</section>
<section class="semantic-layer engineering-element-drilldowns" data-praxis-anchor="engineering:package:apps-linux_cardputer_zero:element-drilldowns" data-praxis-kind="engineering_element_drilldown_index">
<h2>图内语义元素下钻</h2>
<ol>
<li data-praxis-anchor="engineering:package:apps-linux_cardputer_zero" data-praxis-kind="engineering_uml_element" data-praxis-mermaid-id="package_node" data-praxis-drilldowns="[{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-main&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:main&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L49,协调多个外部对象或能力,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-not_contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:not_contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L24,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:not_contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:24&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-read_file&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:read_file&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L10,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:read_file:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:10&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:collaboration-pressure--main&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;承担外部协作的候选对象:main 技术热点&quot;,&quot;summary&quot;:&quot;该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:external-collaboration-pressure:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:reuse-pressure--contains&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;被广泛复用的候选对象:contains 技术热点&quot;,&quot;summary&quot;:&quot;该符号被多处代码引用或调用,可能是共享核心、隐式接口或变更扩散点。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:reuse-pressure:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;}]">
<strong>apps/linux_cardputer_zero</strong>
<span>package</span>
<p>apps/linux_cardputer_zero 是当前 Package Diagram 的中心工程边界,用来观察它自身规模、依赖方向和可下钻技术复杂度。</p>
<dl>
<div><dt>技术角色</dt><dd>技术组织边界:它把 apps/linux_cardputer_zero 下的文件、符号和跨模块关系聚合成一个可讨论的工程单元。</dd></div>
<div><dt>为什么出现</dt><dd>本地仓库证据在 apps/linux_cardputer_zero 下观察到足够文件、符号或跨模块关系,因此它值得被提升为软件结构模型中的 package 级入口。</dd></div>
<div><dt>关系意义</dt><dd>图中从 apps/linux_cardputer_zero 指向其它节点的箭头表示当前边界依赖外部 package/module;被其他模块依赖或调用 40 次、依赖或调用外部模块 11 次,用于判断它更像稳定复用边界还是编排/桥接边界。</dd></div>
<div><dt>下钻意图</dt><dd>下钻该节点可以继续查看 apps/linux_cardputer_zero 内的关键组件、结构协作切片、运行链路、部署节点和复杂度热点,从而理解这个工程边界如何承载功能变化。</dd></div>
<div><dt>业务关联</dt><dd>该节点不是业务故事本身,但组织/过程模型中落到 apps/linux_cardputer_zero 的 Use Case 可以把这里作为技术承载边界引用。当前关联仍是 CANDIDATE。</dd></div>
<div><dt>变更影响</dt><dd>修改 apps/linux_cardputer_zero 的公共入口、依赖方向或目录边界,可能影响引用它的组件图、sequence 片段、部署配置和相关业务故事的验证路径。</dd></div>
<div><dt>置信度</dt><dd>high</dd></div>
</dl>
<section><h3>证据</h3>
<ul>
<li>package scope: apps/linux_cardputer_zero</li>
<li>模块路径:apps/linux_cardputer_zero</li>
<li>文件数:24</li>
<li>符号数:230</li>
<li>被其他模块依赖或调用:40</li>
<li>依赖或调用外部模块:11</li>
<li>apps/linux_cardputer_zero/APP_SHELL_MANIFEST.md</li>
<li>apps/linux_cardputer_zero/CMakeLists.txt</li>
</ul>
</section>
<section><h3>风险</h3>
<ul>
<li>如果只把该节点当作目录名,会遗漏它作为稳定工程边界的职责判断。</li>
<li>如果依赖外部模块的迹象持续增加,可能说明该边界承担过多编排或桥接职责。</li>
</ul>
</section>
<section><h3>问题</h3>
<ul>
<li>当前仓库证据尚未把该 package 明确 Trace 到某个 Use Case;因此业务关联保持候选。</li>
</ul>
</section>
</li>
<li data-praxis-anchor="engineering:package:apps-esp32_lvgl" data-praxis-kind="engineering_uml_element" data-praxis-mermaid-id="dependency_1" data-praxis-drilldowns="[{&quot;id&quot;:&quot;engineering:diagram:package:apps-esp32_lvgl&quot;,&quot;kind&quot;:&quot;package&quot;,&quot;title&quot;:&quot;模块边界:apps/esp32_lvgl&quot;,&quot;summary&quot;:&quot;解释 apps/esp32_lvgl 的包/模块边界、文件数量、符号数量和跨模块依赖。&quot;,&quot;docPath&quot;:&quot;docs/engineering/package-diagrams/apps-esp32_lvgl/package-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/package-diagrams/apps-esp32_lvgl/package-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:package:apps-esp32_lvgl&quot;,&quot;relation&quot;:&quot;parent_boundary&quot;,&quot;reason&quot;:&quot;打开 apps/esp32_lvgl 自己的包级边界,检查 apps/linux_cardputer_zero 依赖它时借用的是运行命令、共享能力、治理工具、模型适配还是基础设施职责。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-esp32_lvgl-main&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:main&quot;,&quot;summary&quot;:&quot;function 位于 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp#L33,协调多个外部对象或能力,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-esp32_lvgl-main/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-esp32_lvgl-main/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:main:apps-esp32_lvgl-tests-esp32_lvgl_sd_coredump_contract_smoke.cpp:33&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:main 是为了确认 apps/esp32_lvgl 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-esp32_lvgl-contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-esp32_lvgl-contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-esp32_lvgl-contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:contains:apps-esp32_lvgl-tests-esp32_lvgl_sd_coredump_contract_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:contains 是为了确认 apps/esp32_lvgl 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-esp32_lvgl-companion_enter&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:companion_enter&quot;,&quot;summary&quot;:&quot;function 位于 apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp#L72,协调多个外部对象或能力,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-esp32_lvgl-companion_enter/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-esp32_lvgl-companion_enter/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:companion_enter:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:72&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:companion_enter 是为了确认 apps/esp32_lvgl 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:sequence:tick-calls-log_loop_interval&quot;,&quot;kind&quot;:&quot;sequence&quot;,&quot;title&quot;:&quot;动态协作:tick 调用 log_loop_interval&quot;,&quot;summary&quot;:&quot;apps/esp32_lvgl/src/esp32_lvgl_arduino_loop_runtime.cpp 中的 tick calls apps/esp32_lvgl/src/esp32_lvgl_arduino_loop_runtime.cpp 中的 log_loop_interval。&quot;,&quot;docPath&quot;:&quot;docs/engineering/sequence-diagrams/tick-calls-log_loop_interval/sequence-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/sequence-diagrams/tick-calls-log_loop_interval/sequence-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:runtime-flow:tick:log_loop_interval:apps-esp32_lvgl-src-esp32_lvgl_arduino_loop_runtime.cpp:apps-esp32_lvgl-src-esp32_lvgl_arduino_loop_runtime.cpp&quot;,&quot;relation&quot;:&quot;dynamic_flow&quot;,&quot;reason&quot;:&quot;打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:tick -&gt; log_loop_interval。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。&quot;},{&quot;id&quot;:&quot;engineering:diagram:sequence:add_status_line-calls-add_label&quot;,&quot;kind&quot;:&quot;sequence&quot;,&quot;title&quot;:&quot;动态协作:add_status_line 调用 add_label&quot;,&quot;summary&quot;:&quot;apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_status_line calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_label。&quot;,&quot;docPath&quot;:&quot;docs/engineering/sequence-diagrams/add_status_line-calls-add_label/sequence-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/sequence-diagrams/add_status_line-calls-add_label/sequence-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:runtime-flow:add_status_line:add_label:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp&quot;,&quot;relation&quot;:&quot;dynamic_flow&quot;,&quot;reason&quot;:&quot;打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:add_status_line -&gt; add_label。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。&quot;},{&quot;id&quot;:&quot;engineering:diagram:sequence:add_u32_line-calls-add_label&quot;,&quot;kind&quot;:&quot;sequence&quot;,&quot;title&quot;:&quot;动态协作:add_u32_line 调用 add_label&quot;,&quot;summary&quot;:&quot;apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_u32_line calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_label。&quot;,&quot;docPath&quot;:&quot;docs/engineering/sequence-diagrams/add_u32_line-calls-add_label/sequence-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/sequence-diagrams/add_u32_line-calls-add_label/sequence-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:runtime-flow:add_u32_line:add_label:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp&quot;,&quot;relation&quot;:&quot;dynamic_flow&quot;,&quot;reason&quot;:&quot;打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:add_u32_line -&gt; add_label。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。&quot;},{&quot;id&quot;:&quot;engineering:diagram:sequence:add_hex_line-calls-add_status_line&quot;,&quot;kind&quot;:&quot;sequence&quot;,&quot;title&quot;:&quot;动态协作:add_hex_line 调用 add_status_line&quot;,&quot;summary&quot;:&quot;apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_hex_line calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_status_line。&quot;,&quot;docPath&quot;:&quot;docs/engineering/sequence-diagrams/add_hex_line-calls-add_status_line/sequence-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/sequence-diagrams/add_hex_line-calls-add_status_line/sequence-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:runtime-flow:add_hex_line:add_status_line:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp&quot;,&quot;relation&quot;:&quot;dynamic_flow&quot;,&quot;reason&quot;:&quot;打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:add_hex_line -&gt; add_status_line。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。&quot;},{&quot;id&quot;:&quot;engineering:diagram:sequence:companion_enter-calls-add_label&quot;,&quot;kind&quot;:&quot;sequence&quot;,&quot;title&quot;:&quot;动态协作:companion_enter 调用 add_label&quot;,&quot;summary&quot;:&quot;apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 companion_enter calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_label。&quot;,&quot;docPath&quot;:&quot;docs/engineering/sequence-diagrams/companion_enter-calls-add_label/sequence-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/sequence-diagrams/companion_enter-calls-add_label/sequence-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:runtime-flow:companion_enter:add_label:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp&quot;,&quot;relation&quot;:&quot;dynamic_flow&quot;,&quot;reason&quot;:&quot;打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:companion_enter -&gt; add_label。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。&quot;}]">
<strong>apps/esp32_lvgl</strong>
<span>package</span>
<p>apps/esp32_lvgl 是 apps/linux_cardputer_zero 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。</p>
<dl>
<div><dt>技术角色</dt><dd>跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。</dd></div>
<div><dt>为什么出现</dt><dd>本地仓库证据在 apps/linux_cardputer_zero 与 apps/esp32_lvgl 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。</dd></div>
<div><dt>关系意义</dt><dd>apps/linux_cardputer_zero -&gt; apps/esp32_lvgl 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。</dd></div>
<div><dt>下钻意图</dt><dd>下钻 apps/esp32_lvgl 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。</dd></div>
<div><dt>业务关联</dt><dd>apps/linux_cardputer_zero 如果承载用户可见能力,那么对 apps/esp32_lvgl 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。</dd></div>
<div><dt>变更影响</dt><dd>修改 apps/esp32_lvgl 的公共接口、路径或运行方式,可能让 apps/linux_cardputer_zero 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。</dd></div>
<div><dt>置信度</dt><dd>high</dd></div>
</dl>
<section><h3>证据</h3>
<ul>
<li>dependency edge: apps/linux_cardputer_zero -&gt; apps/esp32_lvgl</li>
<li>apps/esp32_lvgl/APP_SHELL_MANIFEST.md</li>
<li>apps/esp32_lvgl/CMakeLists.txt</li>
<li>apps/esp32_lvgl/library.json</li>
<li>apps/esp32_lvgl/README.md</li>
<li>apps/esp32_lvgl/src/esp32_lvgl_app_shell.cpp</li>
<li>apps/esp32_lvgl/src/esp32_lvgl_app_shell.h</li>
<li>apps/esp32_lvgl/src/esp32_lvgl_arduino_app_registry.cpp</li>
</ul>
</section>
<section><h3>风险</h3>
<ul>
<li>跨模块依赖只能证明技术关系,不能直接证明业务关系。</li>
<li>如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。</li>
</ul>
</section>
<section><h3>问题</h3>
<ul>
<li>当前证据尚未证明 apps/linux_cardputer_zero 依赖 apps/esp32_lvgl 与某个 Use Case、runtime command 或配置决策直接相关。</li>
<li>当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。</li>
</ul>
</section>
</li>
<li data-praxis-anchor="engineering:package:boards" data-praxis-kind="engineering_uml_element" data-praxis-mermaid-id="dependency_2" data-praxis-drilldowns="[{&quot;id&quot;:&quot;engineering:diagram:package:boards&quot;,&quot;kind&quot;:&quot;package&quot;,&quot;title&quot;:&quot;模块边界:boards&quot;,&quot;summary&quot;:&quot;解释 boards 的包/模块边界、文件数量、符号数量和跨模块依赖。&quot;,&quot;docPath&quot;:&quot;docs/engineering/package-diagrams/boards/package-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/package-diagrams/boards/package-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:package:boards&quot;,&quot;relation&quot;:&quot;parent_boundary&quot;,&quot;reason&quot;:&quot;打开 boards 自己的包级边界,检查 apps/linux_cardputer_zero 依赖它时借用的是运行命令、共享能力、治理工具、模型适配还是基础设施职责。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:boards-makeboardprofile&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:makeBoardProfile&quot;,&quot;summary&quot;:&quot;function 位于 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h#L188,协调多个外部对象或能力,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/boards-makeboardprofile/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/boards-makeboardprofile/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:makeboardprofile:boards-t_echo_lite-include-boards-t_echo_lite-board_profile.h:188&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:makeBoardProfile 是为了确认 boards 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:boards-pinnum&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:pinNum&quot;,&quot;summary&quot;:&quot;function 位于 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h#L8,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/boards-pinnum/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/boards-pinnum/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:pinnum:boards-t_echo_lite-include-boards-t_echo_lite-board_profile.h:8&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:pinNum 是为了确认 boards 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:class-structural:boards-gat562_mesh_evb_pro-include-boards&quot;,&quot;kind&quot;:&quot;class_structural&quot;,&quot;title&quot;:&quot;结构协作:结构切片 boards · gat562_mesh_evb_pro/include/boards&quot;,&quot;summary&quot;:&quot;解释 boards/gat562_mesh_evb_pro/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 Gat562Board、SX1262、Sx1262RadioPacketIo、Gat562Board::I2cGuard、GpsRuntime。&quot;,&quot;docPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-gat562_mesh_evb_pro-include-boards/class-structural-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-gat562_mesh_evb_pro-include-boards/class-structural-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:class-structural:boards-gat562_mesh_evb_pro-include-boards&quot;,&quot;relation&quot;:&quot;structural_context&quot;,&quot;reason&quot;:&quot;打开 结构协作:结构切片 boards · gat562_mesh_evb_pro/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。&quot;},{&quot;id&quot;:&quot;engineering:diagram:class-structural:boards-t_echo_lite-include-boards&quot;,&quot;kind&quot;:&quot;class_structural&quot;,&quot;title&quot;:&quot;结构协作:结构切片 boards · t_echo_lite/include/boards&quot;,&quot;summary&quot;:&quot;解释 boards/t_echo_lite/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TEchoLiteBoard、Sx1262RadioPacketIo、TEchoLiteBoard::I2cGuard、GpsRuntime、Module。&quot;,&quot;docPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-t_echo_lite-include-boards/class-structural-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-t_echo_lite-include-boards/class-structural-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:class-structural:boards-t_echo_lite-include-boards&quot;,&quot;relation&quot;:&quot;structural_context&quot;,&quot;reason&quot;:&quot;打开 结构协作:结构切片 boards · t_echo_lite/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。&quot;},{&quot;id&quot;:&quot;engineering:diagram:class-structural:boards-tab5-include-boards&quot;,&quot;kind&quot;:&quot;class_structural&quot;,&quot;title&quot;:&quot;结构协作:结构切片 boards · tab5/include/boards&quot;,&quot;summary&quot;:&quot;解释 boards/tab5/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 Tab5Board、Tab5Board::ManagedSystemI2cGuard、Tab5Board::SysI2cGuard、CodecCompat。&quot;,&quot;docPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-tab5-include-boards/class-structural-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-tab5-include-boards/class-structural-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:class-structural:boards-tab5-include-boards&quot;,&quot;relation&quot;:&quot;structural_context&quot;,&quot;reason&quot;:&quot;打开 结构协作:结构切片 boards · tab5/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。&quot;},{&quot;id&quot;:&quot;engineering:diagram:class-structural:boards-t_display_p4-include-boards&quot;,&quot;kind&quot;:&quot;class_structural&quot;,&quot;title&quot;:&quot;结构协作:结构切片 boards · t_display_p4/include/boards&quot;,&quot;summary&quot;:&quot;解释 boards/t_display_p4/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TDisplayP4Board、TDisplayP4Board::ManagedSystemI2cGuard。&quot;,&quot;docPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-t_display_p4-include-boards/class-structural-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-t_display_p4-include-boards/class-structural-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:class-structural:boards-t_display_p4-include-boards&quot;,&quot;relation&quot;:&quot;structural_context&quot;,&quot;reason&quot;:&quot;打开 结构协作:结构切片 boards · t_display_p4/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。&quot;},{&quot;id&quot;:&quot;engineering:diagram:class-structural:boards-tlora_pager-include-boards&quot;,&quot;kind&quot;:&quot;class_structural&quot;,&quot;title&quot;:&quot;结构协作:结构切片 boards · tlora_pager/include/boards&quot;,&quot;summary&quot;:&quot;解释 boards/tlora_pager/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TLoRaPagerBoard、SX1262Access、AppContext。&quot;,&quot;docPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-tlora_pager-include-boards/class-structural-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/class-structural-diagrams/boards-tlora_pager-include-boards/class-structural-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:class-structural:boards-tlora_pager-include-boards&quot;,&quot;relation&quot;:&quot;structural_context&quot;,&quot;reason&quot;:&quot;打开 结构协作:结构切片 boards · tlora_pager/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:dependency-cluster--boards&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;依赖簇:boards 技术热点&quot;,&quot;summary&quot;:&quot;该模块依赖多个外部边界,当前按候选技术耦合中心处理;图中只保留仓库证据已经观察到的依赖方向和边界。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/dependency-cluster--boards/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/dependency-cluster--boards/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:dependency-cluster:boards&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 依赖簇:boards 技术热点 这个复杂度信号是否会抬高 boards 的阅读、修改、测试或回归成本。&quot;}]">
<strong>boards</strong>
<span>package</span>
<p>boards 是 apps/linux_cardputer_zero 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。</p>
<dl>
<div><dt>技术角色</dt><dd>跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。</dd></div>
<div><dt>为什么出现</dt><dd>本地仓库证据在 apps/linux_cardputer_zero 与 boards 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。</dd></div>
<div><dt>关系意义</dt><dd>apps/linux_cardputer_zero -&gt; boards 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。</dd></div>
<div><dt>下钻意图</dt><dd>下钻 boards 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。</dd></div>
<div><dt>业务关联</dt><dd>apps/linux_cardputer_zero 如果承载用户可见能力,那么对 boards 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。</dd></div>
<div><dt>变更影响</dt><dd>修改 boards 的公共接口、路径或运行方式,可能让 apps/linux_cardputer_zero 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。</dd></div>
<div><dt>置信度</dt><dd>high</dd></div>
</dl>
<section><h3>证据</h3>
<ul>
<li>dependency edge: apps/linux_cardputer_zero -&gt; boards</li>
<li>boards/cardputerzero/board_facts.h</li>
<li>boards/cardputerzero/BOARD.md</li>
<li>boards/gat562_mesh_evb_pro.json</li>
<li>boards/gat562_mesh_evb_pro/board_facts.h</li>
<li>boards/gat562_mesh_evb_pro/BOARD.md</li>
<li>boards/gat562_mesh_evb_pro/include/boards/gat562_mesh_evb_pro/board_profile.h</li>
<li>boards/gat562_mesh_evb_pro/include/boards/gat562_mesh_evb_pro/gat562_board.h</li>
</ul>
</section>
<section><h3>风险</h3>
<ul>
<li>跨模块依赖只能证明技术关系,不能直接证明业务关系。</li>
<li>如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。</li>
</ul>
</section>
<section><h3>问题</h3>
<ul>
<li>当前证据尚未证明 apps/linux_cardputer_zero 依赖 boards 与某个 Use Case、runtime command 或配置决策直接相关。</li>
<li>当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。</li>
</ul>
</section>
</li>
</ol>
</section>
<section class="semantic-layer engineering-drilldowns" data-praxis-anchor="engineering:package:apps-linux_cardputer_zero:drilldowns" data-praxis-kind="engineering_drilldown_options" data-praxis-drilldowns="[{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-main&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:main&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L49,协调多个外部对象或能力,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-not_contains&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:not_contains&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L24,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:not_contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:24&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:component:apps-linux_cardputer_zero-read_file&quot;,&quot;kind&quot;:&quot;component&quot;,&quot;title&quot;:&quot;函数节点:read_file&quot;,&quot;summary&quot;:&quot;function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L10,被多个对象复用或依赖,用于解释技术协作和变更影响面。&quot;,&quot;docPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.html&quot;,&quot;anchor&quot;:&quot;engineering:component:function:read_file:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:10&quot;,&quot;relation&quot;:&quot;contains&quot;,&quot;reason&quot;:&quot;打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:collaboration-pressure--main&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;承担外部协作的候选对象:main 技术热点&quot;,&quot;summary&quot;:&quot;该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:external-collaboration-pressure:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;},{&quot;id&quot;:&quot;engineering:diagram:technical-hotspot:reuse-pressure--contains&quot;,&quot;kind&quot;:&quot;technical_hotspot&quot;,&quot;title&quot;:&quot;被广泛复用的候选对象:contains 技术热点&quot;,&quot;summary&quot;:&quot;该符号被多处代码引用或调用,可能是共享核心、隐式接口或变更扩散点。&quot;,&quot;docPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.md&quot;,&quot;htmlPath&quot;:&quot;docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.html&quot;,&quot;anchor&quot;:&quot;engineering:hotspot:reuse-pressure:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19&quot;,&quot;relation&quot;:&quot;risk_detail&quot;,&quot;reason&quot;:&quot;查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。&quot;}]">
<h2>可下钻 UML</h2>
<div class="layer-grid">
<article role="link" tabindex="0" class="layer-card document-entry-card" data-praxis-anchor="engineering:component:function:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49" data-praxis-kind="engineering_drilldown_link" data-praxis-document-title="函数节点:main" data-praxis-document-summary="打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。" data-praxis-document-md="docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.md" data-praxis-document-html="docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.html">
<strong>函数节点:main</strong>
<span>component · contains</span>
<p>打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。</p>
<small>function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L49,协调多个外部对象或能力,用于解释技术协作和变更影响面。</small>
</article>
<article role="link" tabindex="0" class="layer-card document-entry-card" data-praxis-anchor="engineering:component:function:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19" data-praxis-kind="engineering_drilldown_link" data-praxis-document-title="函数节点:contains" data-praxis-document-summary="打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。" data-praxis-document-md="docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.md" data-praxis-document-html="docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.html">
<strong>函数节点:contains</strong>
<span>component · contains</span>
<p>打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。</p>
<small>function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。</small>
</article>
<article role="link" tabindex="0" class="layer-card document-entry-card" data-praxis-anchor="engineering:component:function:not_contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:24" data-praxis-kind="engineering_drilldown_link" data-praxis-document-title="函数节点:not_contains" data-praxis-document-summary="打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。" data-praxis-document-md="docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.md" data-praxis-document-html="docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.html">
<strong>函数节点:not_contains</strong>
<span>component · contains</span>
<p>打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。</p>
<small>function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L24,被多个对象复用或依赖,用于解释技术协作和变更影响面。</small>
</article>
<article role="link" tabindex="0" class="layer-card document-entry-card" data-praxis-anchor="engineering:component:function:read_file:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:10" data-praxis-kind="engineering_drilldown_link" data-praxis-document-title="函数节点:read_file" data-praxis-document-summary="打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。" data-praxis-document-md="docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.md" data-praxis-document-html="docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.html">
<strong>函数节点:read_file</strong>
<span>component · contains</span>
<p>打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。</p>
<small>function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L10,被多个对象复用或依赖,用于解释技术协作和变更影响面。</small>
</article>
<article role="link" tabindex="0" class="layer-card document-entry-card" data-praxis-anchor="engineering:hotspot:external-collaboration-pressure:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49" data-praxis-kind="engineering_drilldown_link" data-praxis-document-title="承担外部协作的候选对象:main 技术热点" data-praxis-document-summary="查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。" data-praxis-document-md="docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.md" data-praxis-document-html="docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.html">
<strong>承担外部协作的候选对象:main 技术热点</strong>
<span>technical_hotspot · risk_detail</span>
<p>查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。</p>
<small>该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。</small>
</article>
<article role="link" tabindex="0" class="layer-card document-entry-card" data-praxis-anchor="engineering:hotspot:reuse-pressure:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19" data-praxis-kind="engineering_drilldown_link" data-praxis-document-title="被广泛复用的候选对象:contains 技术热点" data-praxis-document-summary="查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。" data-praxis-document-md="docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.md" data-praxis-document-html="docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.html">
<strong>被广泛复用的候选对象:contains 技术热点</strong>
<span>technical_hotspot · risk_detail</span>
<p>查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。</p>
<small>该符号被多处代码引用或调用,可能是共享核心、隐式接口或变更扩散点。</small>
</article>
</div>
</section>
<section class="semantic-layer" data-praxis-anchor="engineering:evidence" data-praxis-kind="engineering_document_section">
<h2>证据</h2>
<ul>
<li>apps/linux_cardputer_zero/APP_SHELL_MANIFEST.md</li>
<li>apps/linux_cardputer_zero/CMakeLists.txt</li>
<li>apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero-applaunch</li>
<li>apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero.desktop</li>
<li>apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero.png</li>
<li>apps/linux_cardputer_zero/README.md</li>
<li>apps/linux_cardputer_zero/src/cardputer_zero_input_method_port.cpp</li>
<li>apps/linux_cardputer_zero/src/cardputer_zero_input_method_port.h</li>
</ul>
</section>
<section class="semantic-layer" data-praxis-anchor="engineering:questions" data-praxis-kind="engineering_document_section">
<h2>问题</h2>
<ul>
<li>暂无未决问题。</li>
</ul>
</section>
<script type="application/json" id="praxis-engineering-diagram-document">{"id":"engineering:diagram:package:apps-linux_cardputer_zero","kind":"package","title":"模块边界:apps/linux_cardputer_zero","summary":"解释 apps/linux_cardputer_zero 的包/模块边界、文件数量、符号数量和跨模块依赖。","docPath":"docs/engineering/package-diagrams/apps-linux_cardputer_zero/package-diagram.md","htmlPath":"docs/engineering/package-diagrams/apps-linux_cardputer_zero/package-diagram.html","anchor":"engineering:package:apps-linux_cardputer_zero","status":"candidate","confidence":"high","mermaidKind":"flowchart","mermaid":"flowchart LR\n package_node[\"apps/linux_cardputer_zero\"]\n dependency_1[\"apps/esp32_lvgl\"]\n package_node --\u003e dependency_1\n dependency_2[\"boards\"]\n package_node --\u003e dependency_2","readingGuide":["这张 Package Diagram 以 apps/linux_cardputer_zero 为中心,展示它作为工程模块边界时观察到的文件规模、符号规模和跨模块依赖。","图中的箭头表示本地仓库证据观察到的跨模块关系,主要用于理解技术依赖方向;它不是业务流程顺序,也不是运行时消息时序。","当前观察到的主要外部依赖包括:apps/esp32_lvgl、boards。"],"technicalAnalysis":["apps/linux_cardputer_zero 当前包含 24 个文件和 230 个符号,属于软件结构模型识别出的技术组织边界。","跨模块关系呈现为:被其它模块引用或调用 40 次,主动依赖或调用外部模块 11 次,因此它被其他模块依赖更多。","当前对外依赖未形成明显异常,但仍应结合具体业务入口判断依赖方向是否稳定。"],"businessRelation":["apps/linux_cardputer_zero 不是业务故事本身,而是业务能力落地时可能经过的技术边界。","如果组织/过程模型中某个 Use Case 的证据、入口或下钻图落在 apps/linux_cardputer_zero,该 Use Case 应当反向链接到这张 Package Diagram,说明业务故事由哪个工程模块承载。","当前关联仍是 CANDIDATE:这里只能根据仓库证据解释技术边界,不能替代组织/过程模型对业务故事、参与者和业务目标的确认。"],"governanceNotes":["新增功能时,优先确认它属于该模块的稳定职责,而不是因为调用方便而落入该模块。","保持该模块的依赖方向可解释,避免形成隐式公共工具箱。","当业务 Use Case 文档引用该模块时,应在 Use Case 下钻文档中记录具体入口、调用链或配置证据。"],"coverage":["模块路径:apps/linux_cardputer_zero","文件数:24","符号数:230","被其他模块依赖或调用:40","依赖或调用外部模块:11"],"evidencePaths":["apps/linux_cardputer_zero/APP_SHELL_MANIFEST.md","apps/linux_cardputer_zero/CMakeLists.txt","apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero-applaunch","apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero.desktop","apps/linux_cardputer_zero/packaging/trailmate-cardputer-zero.png","apps/linux_cardputer_zero/README.md","apps/linux_cardputer_zero/src/cardputer_zero_input_method_port.cpp","apps/linux_cardputer_zero/src/cardputer_zero_input_method_port.h"],"questions":[],"scope":{"packageId":"apps/linux_cardputer_zero","filePath":"apps/linux_cardputer_zero"},"drilldowns":[{"id":"engineering:diagram:component:apps-linux_cardputer_zero-main","kind":"component","title":"函数节点:main","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L49,协调多个外部对象或能力,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.html","anchor":"engineering:component:function:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49","relation":"contains","reason":"打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-linux_cardputer_zero-contains","kind":"component","title":"函数节点:contains","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.html","anchor":"engineering:component:function:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19","relation":"contains","reason":"打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-linux_cardputer_zero-not_contains","kind":"component","title":"函数节点:not_contains","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L24,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.html","anchor":"engineering:component:function:not_contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:24","relation":"contains","reason":"打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-linux_cardputer_zero-read_file","kind":"component","title":"函数节点:read_file","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L10,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.html","anchor":"engineering:component:function:read_file:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:10","relation":"contains","reason":"打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:technical-hotspot:collaboration-pressure--main","kind":"technical_hotspot","title":"承担外部协作的候选对象:main 技术热点","summary":"该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。","docPath":"docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.md","htmlPath":"docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.html","anchor":"engineering:hotspot:external-collaboration-pressure:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49","relation":"risk_detail","reason":"查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。"},{"id":"engineering:diagram:technical-hotspot:reuse-pressure--contains","kind":"technical_hotspot","title":"被广泛复用的候选对象:contains 技术热点","summary":"该符号被多处代码引用或调用,可能是共享核心、隐式接口或变更扩散点。","docPath":"docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.md","htmlPath":"docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.html","anchor":"engineering:hotspot:reuse-pressure:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19","relation":"risk_detail","reason":"查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。"}],"elements":[{"id":"engineering:diagram:package:apps-linux_cardputer_zero:element:apps-linux_cardputer_zero","mermaidId":"package_node","label":"apps/linux_cardputer_zero","kind":"package","anchor":"engineering:package:apps-linux_cardputer_zero","summary":"apps/linux_cardputer_zero 是当前 Package Diagram 的中心工程边界,用来观察它自身规模、依赖方向和可下钻技术复杂度。","role":"技术组织边界:它把 apps/linux_cardputer_zero 下的文件、符号和跨模块关系聚合成一个可讨论的工程单元。","whyItExists":"本地仓库证据在 apps/linux_cardputer_zero 下观察到足够文件、符号或跨模块关系,因此它值得被提升为软件结构模型中的 package 级入口。","relationshipMeaning":"图中从 apps/linux_cardputer_zero 指向其它节点的箭头表示当前边界依赖外部 package/module;被其他模块依赖或调用 40 次、依赖或调用外部模块 11 次,用于判断它更像稳定复用边界还是编排/桥接边界。","drilldownIntent":"下钻该节点可以继续查看 apps/linux_cardputer_zero 内的关键组件、结构协作切片、运行链路、部署节点和复杂度热点,从而理解这个工程边界如何承载功能变化。","businessRelevance":"该节点不是业务故事本身,但组织/过程模型中落到 apps/linux_cardputer_zero 的 Use Case 可以把这里作为技术承载边界引用。当前关联仍是 CANDIDATE。","changeImpact":"修改 apps/linux_cardputer_zero 的公共入口、依赖方向或目录边界,可能影响引用它的组件图、sequence 片段、部署配置和相关业务故事的验证路径。","evidence":["package scope: apps/linux_cardputer_zero","模块路径:apps/linux_cardputer_zero","文件数:24","符号数:230","被其他模块依赖或调用:40","依赖或调用外部模块:11","apps/linux_cardputer_zero/APP_SHELL_MANIFEST.md","apps/linux_cardputer_zero/CMakeLists.txt"],"risks":["如果只把该节点当作目录名,会遗漏它作为稳定工程边界的职责判断。","如果依赖外部模块的迹象持续增加,可能说明该边界承担过多编排或桥接职责。"],"questions":["当前仓库证据尚未把该 package 明确 Trace 到某个 Use Case;因此业务关联保持候选。"],"confidence":"high","drilldowns":[{"id":"engineering:diagram:component:apps-linux_cardputer_zero-main","kind":"component","title":"函数节点:main","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L49,协调多个外部对象或能力,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-main/component-diagram.html","anchor":"engineering:component:function:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49","relation":"contains","reason":"打开 函数节点:main 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-linux_cardputer_zero-contains","kind":"component","title":"函数节点:contains","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-contains/component-diagram.html","anchor":"engineering:component:function:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19","relation":"contains","reason":"打开 函数节点:contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-linux_cardputer_zero-not_contains","kind":"component","title":"函数节点:not_contains","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L24,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-not_contains/component-diagram.html","anchor":"engineering:component:function:not_contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:24","relation":"contains","reason":"打开 函数节点:not_contains 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-linux_cardputer_zero-read_file","kind":"component","title":"函数节点:read_file","summary":"function 位于 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp#L10,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-linux_cardputer_zero-read_file/component-diagram.html","anchor":"engineering:component:function:read_file:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:10","relation":"contains","reason":"打开 函数节点:read_file 是为了确认 apps/linux_cardputer_zero 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/linux_cardputer_zero/tests/linux_cardputer_zero_business_wiring_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:technical-hotspot:collaboration-pressure--main","kind":"technical_hotspot","title":"承担外部协作的候选对象:main 技术热点","summary":"该符号连接多个外部对象或能力,可能承担编排、聚合或过宽责任。","docPath":"docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.md","htmlPath":"docs/engineering/technical-hotspots/collaboration-pressure--main/technical-hotspot.html","anchor":"engineering:hotspot:external-collaboration-pressure:main:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:49","relation":"risk_detail","reason":"查看 承担外部协作的候选对象:main 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。"},{"id":"engineering:diagram:technical-hotspot:reuse-pressure--contains","kind":"technical_hotspot","title":"被广泛复用的候选对象:contains 技术热点","summary":"该符号被多处代码引用或调用,可能是共享核心、隐式接口或变更扩散点。","docPath":"docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.md","htmlPath":"docs/engineering/technical-hotspots/reuse-pressure--contains/technical-hotspot.html","anchor":"engineering:hotspot:reuse-pressure:contains:apps-linux_cardputer_zero-tests-linux_cardputer_zero_business_wiring_smoke.cpp:19","relation":"risk_detail","reason":"查看 被广泛复用的候选对象:contains 技术热点 这个复杂度信号是否会抬高 apps/linux_cardputer_zero 的阅读、修改、测试或回归成本。"}]},{"id":"engineering:diagram:package:apps-linux_cardputer_zero:element:apps-esp32_lvgl","mermaidId":"dependency_1","label":"apps/esp32_lvgl","kind":"package","anchor":"engineering:package:apps-esp32_lvgl","summary":"apps/esp32_lvgl 是 apps/linux_cardputer_zero 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。","role":"跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。","whyItExists":"本地仓库证据在 apps/linux_cardputer_zero 与 apps/esp32_lvgl 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。","relationshipMeaning":"apps/linux_cardputer_zero -\u003e apps/esp32_lvgl 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。","drilldownIntent":"下钻 apps/esp32_lvgl 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。","businessRelevance":"apps/linux_cardputer_zero 如果承载用户可见能力,那么对 apps/esp32_lvgl 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。","changeImpact":"修改 apps/esp32_lvgl 的公共接口、路径或运行方式,可能让 apps/linux_cardputer_zero 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。","evidence":["dependency edge: apps/linux_cardputer_zero -\u003e apps/esp32_lvgl","apps/esp32_lvgl/APP_SHELL_MANIFEST.md","apps/esp32_lvgl/CMakeLists.txt","apps/esp32_lvgl/library.json","apps/esp32_lvgl/README.md","apps/esp32_lvgl/src/esp32_lvgl_app_shell.cpp","apps/esp32_lvgl/src/esp32_lvgl_app_shell.h","apps/esp32_lvgl/src/esp32_lvgl_arduino_app_registry.cpp"],"risks":["跨模块依赖只能证明技术关系,不能直接证明业务关系。","如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。"],"questions":["当前证据尚未证明 apps/linux_cardputer_zero 依赖 apps/esp32_lvgl 与某个 Use Case、runtime command 或配置决策直接相关。","当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。"],"confidence":"high","drilldowns":[{"id":"engineering:diagram:package:apps-esp32_lvgl","kind":"package","title":"模块边界:apps/esp32_lvgl","summary":"解释 apps/esp32_lvgl 的包/模块边界、文件数量、符号数量和跨模块依赖。","docPath":"docs/engineering/package-diagrams/apps-esp32_lvgl/package-diagram.md","htmlPath":"docs/engineering/package-diagrams/apps-esp32_lvgl/package-diagram.html","anchor":"engineering:package:apps-esp32_lvgl","relation":"parent_boundary","reason":"打开 apps/esp32_lvgl 自己的包级边界,检查 apps/linux_cardputer_zero 依赖它时借用的是运行命令、共享能力、治理工具、模型适配还是基础设施职责。"},{"id":"engineering:diagram:component:apps-esp32_lvgl-main","kind":"component","title":"函数节点:main","summary":"function 位于 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp#L33,协调多个外部对象或能力,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-esp32_lvgl-main/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-esp32_lvgl-main/component-diagram.html","anchor":"engineering:component:function:main:apps-esp32_lvgl-tests-esp32_lvgl_sd_coredump_contract_smoke.cpp:33","relation":"contains","reason":"打开 函数节点:main 是为了确认 apps/esp32_lvgl 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-esp32_lvgl-contains","kind":"component","title":"函数节点:contains","summary":"function 位于 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp#L19,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-esp32_lvgl-contains/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-esp32_lvgl-contains/component-diagram.html","anchor":"engineering:component:function:contains:apps-esp32_lvgl-tests-esp32_lvgl_sd_coredump_contract_smoke.cpp:19","relation":"contains","reason":"打开 函数节点:contains 是为了确认 apps/esp32_lvgl 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/esp32_lvgl/tests/esp32_lvgl_sd_coredump_contract_smoke.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:apps-esp32_lvgl-companion_enter","kind":"component","title":"函数节点:companion_enter","summary":"function 位于 apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp#L72,协调多个外部对象或能力,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/apps-esp32_lvgl-companion_enter/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/apps-esp32_lvgl-companion_enter/component-diagram.html","anchor":"engineering:component:function:companion_enter:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:72","relation":"contains","reason":"打开 函数节点:companion_enter 是为了确认 apps/esp32_lvgl 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:sequence:tick-calls-log_loop_interval","kind":"sequence","title":"动态协作:tick 调用 log_loop_interval","summary":"apps/esp32_lvgl/src/esp32_lvgl_arduino_loop_runtime.cpp 中的 tick calls apps/esp32_lvgl/src/esp32_lvgl_arduino_loop_runtime.cpp 中的 log_loop_interval。","docPath":"docs/engineering/sequence-diagrams/tick-calls-log_loop_interval/sequence-diagram.md","htmlPath":"docs/engineering/sequence-diagrams/tick-calls-log_loop_interval/sequence-diagram.html","anchor":"engineering:runtime-flow:tick:log_loop_interval:apps-esp32_lvgl-src-esp32_lvgl_arduino_loop_runtime.cpp:apps-esp32_lvgl-src-esp32_lvgl_arduino_loop_runtime.cpp","relation":"dynamic_flow","reason":"打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:tick -\u003e log_loop_interval。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。"},{"id":"engineering:diagram:sequence:add_status_line-calls-add_label","kind":"sequence","title":"动态协作:add_status_line 调用 add_label","summary":"apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_status_line calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_label。","docPath":"docs/engineering/sequence-diagrams/add_status_line-calls-add_label/sequence-diagram.md","htmlPath":"docs/engineering/sequence-diagrams/add_status_line-calls-add_label/sequence-diagram.html","anchor":"engineering:runtime-flow:add_status_line:add_label:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp","relation":"dynamic_flow","reason":"打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:add_status_line -\u003e add_label。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。"},{"id":"engineering:diagram:sequence:add_u32_line-calls-add_label","kind":"sequence","title":"动态协作:add_u32_line 调用 add_label","summary":"apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_u32_line calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_label。","docPath":"docs/engineering/sequence-diagrams/add_u32_line-calls-add_label/sequence-diagram.md","htmlPath":"docs/engineering/sequence-diagrams/add_u32_line-calls-add_label/sequence-diagram.html","anchor":"engineering:runtime-flow:add_u32_line:add_label:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp","relation":"dynamic_flow","reason":"打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:add_u32_line -\u003e add_label。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。"},{"id":"engineering:diagram:sequence:add_hex_line-calls-add_status_line","kind":"sequence","title":"动态协作:add_hex_line 调用 add_status_line","summary":"apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_hex_line calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_status_line。","docPath":"docs/engineering/sequence-diagrams/add_hex_line-calls-add_status_line/sequence-diagram.md","htmlPath":"docs/engineering/sequence-diagrams/add_hex_line-calls-add_status_line/sequence-diagram.html","anchor":"engineering:runtime-flow:add_hex_line:add_status_line:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp","relation":"dynamic_flow","reason":"打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:add_hex_line -\u003e add_status_line。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。"},{"id":"engineering:diagram:sequence:companion_enter-calls-add_label","kind":"sequence","title":"动态协作:companion_enter 调用 add_label","summary":"apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 companion_enter calls apps/esp32_lvgl/src/esp32_lvgl_idf_app_registry.cpp 中的 add_label。","docPath":"docs/engineering/sequence-diagrams/companion_enter-calls-add_label/sequence-diagram.md","htmlPath":"docs/engineering/sequence-diagrams/companion_enter-calls-add_label/sequence-diagram.html","anchor":"engineering:runtime-flow:companion_enter:add_label:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp:apps-esp32_lvgl-src-esp32_lvgl_idf_app_registry.cpp","relation":"dynamic_flow","reason":"打开这条 sequence 是为了把 apps/esp32_lvgl 的静态依赖还原成一段可读协作:companion_enter -\u003e add_label。重点判断这是 import、调用、引用还是消息方向,以及它是否真的影响运行路径。"}]},{"id":"engineering:diagram:package:apps-linux_cardputer_zero:element:boards","mermaidId":"dependency_2","label":"boards","kind":"package","anchor":"engineering:package:boards","summary":"boards 是 apps/linux_cardputer_zero 当前观察到的外部技术边界依赖;它说明当前模块不是孤立实现,而是需要借助另一组工程能力完成职责。","role":"跨模块技术依赖边界:当前 package 需要另一个 package/module 提供能力、契约、配置或运行支撑。","whyItExists":"本地仓库证据在 apps/linux_cardputer_zero 与 boards 之间观察到跨模块事实关系,因此该依赖被放入 Package Diagram,而不是只藏在代码 import/call 里。","relationshipMeaning":"apps/linux_cardputer_zero -\u003e boards 表示本地仓库证据观察到跨模块关系;它解释技术依赖方向,但不直接证明业务流程。","drilldownIntent":"下钻 boards 可以查看它自己的 Package Diagram,再继续进入其组件、结构、sequence 或热点,判断当前依赖究竟落在入口、运行时、工具注册、模型适配还是基础设施边界。","businessRelevance":"apps/linux_cardputer_zero 如果承载用户可见能力,那么对 boards 的依赖可能是该能力的运行机制、扩展点或治理约束。该业务关联需要由组织/过程模型的 Use Case 证据确认。","changeImpact":"修改 boards 的公共接口、路径或运行方式,可能让 apps/linux_cardputer_zero 的调用链、打包入口、agent 工作流或 UI 行为发生连锁变化。","evidence":["dependency edge: apps/linux_cardputer_zero -\u003e boards","boards/cardputerzero/board_facts.h","boards/cardputerzero/BOARD.md","boards/gat562_mesh_evb_pro.json","boards/gat562_mesh_evb_pro/board_facts.h","boards/gat562_mesh_evb_pro/BOARD.md","boards/gat562_mesh_evb_pro/include/boards/gat562_mesh_evb_pro/board_profile.h","boards/gat562_mesh_evb_pro/include/boards/gat562_mesh_evb_pro/gat562_board.h"],"risks":["跨模块依赖只能证明技术关系,不能直接证明业务关系。","如果该依赖只是因为实现方便而存在,未来变更可能形成边界漂移或隐式公共工具箱。"],"questions":["当前证据尚未证明 apps/linux_cardputer_zero 依赖 boards 与某个 Use Case、runtime command 或配置决策直接相关。","当前依赖方向按仓库事实记录为候选,尚未发现架构决策文档证明它是稳定边界。"],"confidence":"high","drilldowns":[{"id":"engineering:diagram:package:boards","kind":"package","title":"模块边界:boards","summary":"解释 boards 的包/模块边界、文件数量、符号数量和跨模块依赖。","docPath":"docs/engineering/package-diagrams/boards/package-diagram.md","htmlPath":"docs/engineering/package-diagrams/boards/package-diagram.html","anchor":"engineering:package:boards","relation":"parent_boundary","reason":"打开 boards 自己的包级边界,检查 apps/linux_cardputer_zero 依赖它时借用的是运行命令、共享能力、治理工具、模型适配还是基础设施职责。"},{"id":"engineering:diagram:component:boards-makeboardprofile","kind":"component","title":"函数节点:makeBoardProfile","summary":"function 位于 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h#L188,协调多个外部对象或能力,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/boards-makeboardprofile/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/boards-makeboardprofile/component-diagram.html","anchor":"engineering:component:function:makeboardprofile:boards-t_echo_lite-include-boards-t_echo_lite-board_profile.h:188","relation":"contains","reason":"打开 函数节点:makeBoardProfile 是为了确认 boards 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:component:boards-pinnum","kind":"component","title":"函数节点:pinNum","summary":"function 位于 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h#L8,被多个对象复用或依赖,用于解释技术协作和变更影响面。","docPath":"docs/engineering/component-diagrams/boards-pinnum/component-diagram.md","htmlPath":"docs/engineering/component-diagrams/boards-pinnum/component-diagram.html","anchor":"engineering:component:function:pinnum:boards-t_echo_lite-include-boards-t_echo_lite-board_profile.h:8","relation":"contains","reason":"打开 函数节点:pinNum 是为了确认 boards 内部哪一个具体对象承担入口、编排、适配、契约或共享职责。重点查看代码锚点 boards/t_echo_lite/include/boards/t_echo_lite/board_profile.h,以及它的被引用/调用关系和对外依赖/调用关系是否意味着变更会扩散。"},{"id":"engineering:diagram:class-structural:boards-gat562_mesh_evb_pro-include-boards","kind":"class_structural","title":"结构协作:结构切片 boards · gat562_mesh_evb_pro/include/boards","summary":"解释 boards/gat562_mesh_evb_pro/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 Gat562Board、SX1262、Sx1262RadioPacketIo、Gat562Board::I2cGuard、GpsRuntime。","docPath":"docs/engineering/class-structural-diagrams/boards-gat562_mesh_evb_pro-include-boards/class-structural-diagram.md","htmlPath":"docs/engineering/class-structural-diagrams/boards-gat562_mesh_evb_pro-include-boards/class-structural-diagram.html","anchor":"engineering:class-structural:boards-gat562_mesh_evb_pro-include-boards","relation":"structural_context","reason":"打开 结构协作:结构切片 boards · gat562_mesh_evb_pro/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。"},{"id":"engineering:diagram:class-structural:boards-t_echo_lite-include-boards","kind":"class_structural","title":"结构协作:结构切片 boards · t_echo_lite/include/boards","summary":"解释 boards/t_echo_lite/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TEchoLiteBoard、Sx1262RadioPacketIo、TEchoLiteBoard::I2cGuard、GpsRuntime、Module。","docPath":"docs/engineering/class-structural-diagrams/boards-t_echo_lite-include-boards/class-structural-diagram.md","htmlPath":"docs/engineering/class-structural-diagrams/boards-t_echo_lite-include-boards/class-structural-diagram.html","anchor":"engineering:class-structural:boards-t_echo_lite-include-boards","relation":"structural_context","reason":"打开 结构协作:结构切片 boards · t_echo_lite/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。"},{"id":"engineering:diagram:class-structural:boards-tab5-include-boards","kind":"class_structural","title":"结构协作:结构切片 boards · tab5/include/boards","summary":"解释 boards/tab5/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 Tab5Board、Tab5Board::ManagedSystemI2cGuard、Tab5Board::SysI2cGuard、CodecCompat。","docPath":"docs/engineering/class-structural-diagrams/boards-tab5-include-boards/class-structural-diagram.md","htmlPath":"docs/engineering/class-structural-diagrams/boards-tab5-include-boards/class-structural-diagram.html","anchor":"engineering:class-structural:boards-tab5-include-boards","relation":"structural_context","reason":"打开 结构协作:结构切片 boards · tab5/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。"},{"id":"engineering:diagram:class-structural:boards-t_display_p4-include-boards","kind":"class_structural","title":"结构协作:结构切片 boards · t_display_p4/include/boards","summary":"解释 boards/t_display_p4/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TDisplayP4Board、TDisplayP4Board::ManagedSystemI2cGuard。","docPath":"docs/engineering/class-structural-diagrams/boards-t_display_p4-include-boards/class-structural-diagram.md","htmlPath":"docs/engineering/class-structural-diagrams/boards-t_display_p4-include-boards/class-structural-diagram.html","anchor":"engineering:class-structural:boards-t_display_p4-include-boards","relation":"structural_context","reason":"打开 结构协作:结构切片 boards · t_display_p4/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。"},{"id":"engineering:diagram:class-structural:boards-tlora_pager-include-boards","kind":"class_structural","title":"结构协作:结构切片 boards · tlora_pager/include/boards","summary":"解释 boards/tlora_pager/include/boards 这一结构切片中类、接口、组件或值对象如何共同承担结构切片 boards中的结构职责;候选对象包括 TLoRaPagerBoard、SX1262Access、AppContext。","docPath":"docs/engineering/class-structural-diagrams/boards-tlora_pager-include-boards/class-structural-diagram.md","htmlPath":"docs/engineering/class-structural-diagrams/boards-tlora_pager-include-boards/class-structural-diagram.html","anchor":"engineering:class-structural:boards-tlora_pager-include-boards","relation":"structural_context","reason":"打开 结构协作:结构切片 boards · tlora_pager/include/boards 是为了从对象协作角度解释 boards:哪些对象像入口,哪些像编排核心,哪些像适配/共享边界;它帮助判断复杂度来自职责分布,而不只是文件数量。"},{"id":"engineering:diagram:technical-hotspot:dependency-cluster--boards","kind":"technical_hotspot","title":"依赖簇:boards 技术热点","summary":"该模块依赖多个外部边界,当前按候选技术耦合中心处理;图中只保留仓库证据已经观察到的依赖方向和边界。","docPath":"docs/engineering/technical-hotspots/dependency-cluster--boards/technical-hotspot.md","htmlPath":"docs/engineering/technical-hotspots/dependency-cluster--boards/technical-hotspot.html","anchor":"engineering:hotspot:dependency-cluster:boards","relation":"risk_detail","reason":"查看 依赖簇:boards 技术热点 这个复杂度信号是否会抬高 boards 的阅读、修改、测试或回归成本。"}]}]}</script>
</main>
</body>
</html>