@pioneer_zmc/dsh-workbench 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +98 -0
- package/README.zh.md +100 -0
- package/client.js +122 -0
- package/cordis.patch.yml +8 -0
- package/dist/check-building.js +1669 -0
- package/dist/check-room.js +980 -0
- package/dist/index.js +2873 -0
- package/package.json +60 -0
- package/skills/specdev-building/SKILL.md +85 -0
- package/skills/specdev-building/assets/layouts/court.json +53 -0
- package/skills/specdev-building/assets/layouts/row.json +48 -0
- package/skills/specdev-building/assets/layouts/single.json +27 -0
- package/skills/specdev-building/assets/layouts/tower-9.json +71 -0
- package/skills/specdev-building/assets/layouts/tower.json +59 -0
- package/skills/specdev-building/references/blueprint-contract.md +126 -0
- package/skills/specdev-building/references/diagnostics.md +101 -0
- package/skills/specdev-building/references/layouts.md +112 -0
- package/skills/specdev-business/SKILL.md +91 -0
- package/skills/specdev-business/assets/plan-template.md +66 -0
- package/skills/specdev-business/assets/spec-template.md +111 -0
- package/skills/specdev-business/assets/tasks-template.md +36 -0
- package/skills/specdev-business/references/change.md +117 -0
- package/skills/specdev-business/references/evidence-review.md +125 -0
- package/skills/specdev-business/references/implementation.md +67 -0
- package/skills/specdev-business/references/project-contract.md +211 -0
- package/skills/specdev-business/references/source-map.md +110 -0
- package/skills/specdev-business/references/specification.md +93 -0
- package/skills/specdev-business/references/workflow.md +126 -0
- package/skills/specdev-room/SKILL.md +77 -0
- package/skills/specdev-room/assets/intro-room.json +14 -0
- package/skills/specdev-room/references/diagnostics.md +21 -0
- package/skills/specdev-room/references/room-contract.md +59 -0
- package/vendor/archify-renderer/VERSION.md +52 -0
- package/vendor/archify-renderer/archify/LICENSE +22 -0
- package/vendor/archify-renderer/archify/THIRD_PARTY_NOTICES.md +56 -0
- package/vendor/archify-renderer/archify/assets/template.html +14787 -0
- package/vendor/archify-renderer/archify/bin/archify.mjs +1990 -0
- package/vendor/archify-renderer/archify/renderers/shared/brand-marks.mjs +563 -0
- package/vendor/archify-renderer/archify/renderers/shared/cli.mjs +218 -0
- package/vendor/archify-renderer/archify/renderers/shared/desktop-readability.mjs +26 -0
- package/vendor/archify-renderer/archify/renderers/shared/diagnostics.mjs +127 -0
- package/vendor/archify-renderer/archify/renderers/shared/engineering-profiles.mjs +157 -0
- package/vendor/archify-renderer/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
- package/vendor/archify-renderer/archify/renderers/shared/generated-validators.mjs +13 -0
- package/vendor/archify-renderer/archify/renderers/shared/geometry.mjs +1423 -0
- package/vendor/archify-renderer/archify/renderers/shared/i18n.mjs +594 -0
- package/vendor/archify-renderer/archify/renderers/shared/legend.mjs +217 -0
- package/vendor/archify-renderer/archify/renderers/shared/output-path.mjs +321 -0
- package/vendor/archify-renderer/archify/renderers/shared/repository-evidence.mjs +235 -0
- package/vendor/archify-renderer/archify/renderers/shared/text-fit.mjs +49 -0
- package/vendor/archify-renderer/archify/renderers/shared/utils.mjs +232 -0
- package/vendor/archify-renderer/archify/renderers/shared/validator.mjs +86 -0
- package/vendor/archify-renderer/archify/renderers/workflow/render-workflow.mjs +35 -0
- package/vendor/archify-renderer/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
- package/vendor/archify-renderer/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
- package/vendor/archify-renderer/archify/schemas/common.schema.json +115 -0
- package/vendor/archify-renderer/archify/schemas/workflow.schema.json +428 -0
- package/vendor/archify-renderer/archify/scripts/check-render-output.mjs +835 -0
- package/vendor/archify-renderer/shims/process.mjs +18 -0
- package/vendor/archify-renderer/stubs/child_process.mjs +2 -0
- package/vendor/archify-renderer/stubs/crypto.mjs +3 -0
- package/vendor/archify-renderer/stubs/dns-promises.mjs +2 -0
- package/vendor/archify-renderer/stubs/fs.mjs +3 -0
- package/vendor/archify-renderer/stubs/http.mjs +3 -0
- package/vendor/archify-renderer/stubs/https.mjs +3 -0
- package/vendor/archify-renderer/stubs/net.mjs +3 -0
- package/vendor/archify-renderer/stubs/path.mjs +3 -0
- package/vendor/archify-renderer/stubs/url.mjs +3 -0
- package/web/assets/building-kit.js +1157 -0
- package/web/assets/building-look.js +185 -0
- package/web/assets/building-plan.js +495 -0
- package/web/assets/building-scene.js +529 -0
- package/web/assets/building-walk.js +248 -0
- package/web/assets/building.js +859 -0
- package/web/assets/business.js +124 -0
- package/web/assets/chart-link.js +165 -0
- package/web/assets/common.js +302 -0
- package/web/assets/details.js +197 -0
- package/web/assets/evidence.js +30 -0
- package/web/assets/furniture/SOURCES.md +24 -0
- package/web/assets/furniture/assets/ceramic-display-stand-01/asset.json +25 -0
- package/web/assets/furniture/assets/ceramic-display-stand-01/model.js +116 -0
- package/web/assets/furniture/assets/ceramic-display-stand-01/preview.webp +0 -0
- package/web/assets/furniture/assets/ceramic-floor-lamp-01/asset.json +61 -0
- package/web/assets/furniture/assets/ceramic-floor-lamp-01/model.js +56 -0
- package/web/assets/furniture/assets/ceramic-floor-lamp-01/preview.webp +0 -0
- package/web/assets/furniture/assets/ceramic-low-cabinet-01/asset.json +81 -0
- package/web/assets/furniture/assets/ceramic-low-cabinet-01/model.js +67 -0
- package/web/assets/furniture/assets/ceramic-low-cabinet-01/preview.webp +0 -0
- package/web/assets/furniture/assets/ceramic-vase-01/asset.json +21 -0
- package/web/assets/furniture/assets/ceramic-vase-01/model.js +119 -0
- package/web/assets/furniture/assets/ceramic-vase-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-bed-01/asset.json +61 -0
- package/web/assets/furniture/assets/fairy-bed-01/model.js +63 -0
- package/web/assets/furniture/assets/fairy-bed-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-book-stack-01/asset.json +21 -0
- package/web/assets/furniture/assets/fairy-book-stack-01/model.js +71 -0
- package/web/assets/furniture/assets/fairy-book-stack-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-bookshelf-01/asset.json +32 -0
- package/web/assets/furniture/assets/fairy-bookshelf-01/model.js +168 -0
- package/web/assets/furniture/assets/fairy-bookshelf-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-desk-01/asset.json +25 -0
- package/web/assets/furniture/assets/fairy-desk-01/model.js +132 -0
- package/web/assets/furniture/assets/fairy-desk-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-notice-board-01/asset.json +23 -0
- package/web/assets/furniture/assets/fairy-notice-board-01/model.js +125 -0
- package/web/assets/furniture/assets/fairy-notice-board-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-potted-plant-01/asset.json +21 -0
- package/web/assets/furniture/assets/fairy-potted-plant-01/model.js +128 -0
- package/web/assets/furniture/assets/fairy-potted-plant-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-reading-chair-01/asset.json +61 -0
- package/web/assets/furniture/assets/fairy-reading-chair-01/model.js +66 -0
- package/web/assets/furniture/assets/fairy-reading-chair-01/preview.webp +0 -0
- package/web/assets/furniture/assets/fairy-table-lamp-01/asset.json +21 -0
- package/web/assets/furniture/assets/fairy-table-lamp-01/model.js +182 -0
- package/web/assets/furniture/assets/fairy-table-lamp-01/preview.webp +0 -0
- package/web/assets/furniture/catalog.js +137 -0
- package/web/assets/furniture/index.json +110 -0
- package/web/assets/furniture/registry.js +72 -0
- package/web/assets/furniture-page.css +68 -0
- package/web/assets/furniture-page.js +302 -0
- package/web/assets/home.js +65 -0
- package/web/assets/node-detail.js +148 -0
- package/web/assets/panel-link.js +47 -0
- package/web/assets/read.js +746 -0
- package/web/assets/room-scene.js +386 -0
- package/web/assets/room.css +287 -0
- package/web/assets/room.js +437 -0
- package/web/assets/rooms/bindings.js +449 -0
- package/web/assets/rooms/ceramic-reflection.js +193 -0
- package/web/assets/rooms/ceramic-room.js +302 -0
- package/web/assets/rooms/door.js +35 -0
- package/web/assets/rooms/fairy-room.js +492 -0
- package/web/assets/rooms/furniture-assembly.js +113 -0
- package/web/assets/rooms/navigation.js +262 -0
- package/web/assets/rooms/placeholder-catalog.json +71 -0
- package/web/assets/rooms/placeholder-furniture.js +76 -0
- package/web/assets/rooms/placement.js +588 -0
- package/web/assets/rooms/reader.js +441 -0
- package/web/assets/rooms/reading-gate.js +157 -0
- package/web/assets/rooms/room-lighting.js +50 -0
- package/web/assets/rooms/templates.json +50 -0
- package/web/assets/rooms/walk-frame.js +64 -0
- package/web/assets/rooms/walk-session.js +138 -0
- package/web/assets/save-result.js +89 -0
- package/web/assets/screenshots/business.png +0 -0
- package/web/assets/screenshots/node-detail.png +0 -0
- package/web/assets/screenshots/project-home.png +0 -0
- package/web/assets/screenshots/workflow.png +0 -0
- package/web/assets/showcase.js +232 -0
- package/web/assets/style.css +836 -0
- package/web/assets/template.js +7 -0
- package/web/assets/theme.js +29 -0
- package/web/assets/three/OrbitControls.js +1972 -0
- package/web/assets/three/VERSION.md +12 -0
- package/web/assets/three/three.core.js +60586 -0
- package/web/assets/three/three.module.js +19719 -0
- package/web/assets/workspaces.css +21 -0
- package/web/assets/workspaces.js +81 -0
- package/web/building.html +131 -0
- package/web/business.html +43 -0
- package/web/furniture.html +47 -0
- package/web/index.html +57 -0
- package/web/read.html +107 -0
- package/web/room.html +146 -0
- package/web/showcase.html +50 -0
- package/web/workspaces.html +32 -0
package/web/room.html
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN" data-theme="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>业务房间 · SpecDev 工作台</title>
|
|
7
|
+
<script src="/specdev-workbench/assets/theme.js"></script>
|
|
8
|
+
<link rel="stylesheet" href="/specdev-workbench/assets/style.css">
|
|
9
|
+
<!-- 房间页独立样式:只作用于 .room-page,不改业务/建筑页。 -->
|
|
10
|
+
<link rel="stylesheet" href="/specdev-workbench/assets/room.css">
|
|
11
|
+
<!-- Three.js 副本随包发布(与建筑页同一份 importmap):裸名 'three' 与官方 addon 路径在这里映射。 -->
|
|
12
|
+
<script type="importmap">
|
|
13
|
+
{
|
|
14
|
+
"imports": {
|
|
15
|
+
"three": "/specdev-workbench/assets/three/three.module.js",
|
|
16
|
+
"three/addons/controls/OrbitControls.js": "/specdev-workbench/assets/three/OrbitControls.js"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
</head>
|
|
21
|
+
<body class="room-page">
|
|
22
|
+
<a class="skip-link" href="#main">跳到主要内容</a>
|
|
23
|
+
<header class="app-bar">
|
|
24
|
+
<a class="brand" data-home-link href="/specdev-workbench/" aria-label="SpecDev 项目首页"><span class="brand-mark" aria-hidden="true">S<span></span></span><span>SpecDev<span class="brand-caption">工作台</span></span></a>
|
|
25
|
+
<div class="theme-switch" role="group" aria-label="页面主题"><button type="button" data-theme-choice="light" aria-pressed="false"><span aria-hidden="true">☼</span> 浅色</button><button type="button" data-theme-choice="dark" aria-pressed="true"><span aria-hidden="true">☾</span> 深色</button></div>
|
|
26
|
+
</header>
|
|
27
|
+
<div class="page-content">
|
|
28
|
+
<header class="top">
|
|
29
|
+
<div>
|
|
30
|
+
<!-- 业务链接在取数前由 room.js 绑定(带上工作区标识);读取失败时也要能点回去。 -->
|
|
31
|
+
<p class="crumbs"><a href="/specdev-workbench/">项目首页</a> / <a id="bizLink" href="/specdev-workbench/business">业务</a> / <span>房间</span></p>
|
|
32
|
+
<h1 id="title">业务房间</h1>
|
|
33
|
+
<p class="sub" id="intro"></p>
|
|
34
|
+
<!-- 工作区行与三页同款:默认收起,展开见全路径(common.js renderRepoLine 填充)。 -->
|
|
35
|
+
<details class="workspace-details" id="workspaceDetails" hidden><summary id="workspaceLabel">工作区</summary><p id="repoLine"></p></details>
|
|
36
|
+
<!-- E9b:家具图鉴入口(普通页头/空态可见区,常驻可见;不请求业务接口)。
|
|
37
|
+
新标签打开并保留本页;workspace 由 common.js 经 data-ws-link 补全。 -->
|
|
38
|
+
<p class="furniture-entry-line"><a class="furniture-entry-link" data-ws-link="/specdev-workbench/furniture" href="/specdev-workbench/furniture" target="_blank" rel="noopener">家具图鉴 ↗</a></p>
|
|
39
|
+
</div>
|
|
40
|
+
<p id="status" class="status" data-kind="info">正在读取房间配置…</p>
|
|
41
|
+
</header>
|
|
42
|
+
<p id="errorBox" class="error" role="alert" hidden></p>
|
|
43
|
+
<section id="guideBox" class="guide" hidden></section>
|
|
44
|
+
<!-- 配置读到了但摆放校验没过:列出诊断(code/实例/中文原因),不建三维场景。 -->
|
|
45
|
+
<section id="diagPanel" class="guide room-diag" hidden aria-labelledby="diagHeading">
|
|
46
|
+
<h2 id="diagHeading">房间布置需要调整,暂不能显示</h2>
|
|
47
|
+
<p class="diagnostics-note">修好下面的问题后刷新本页即可;管理页只读,不会自动改配置。</p>
|
|
48
|
+
<ol id="diagList" class="problem-list"></ol>
|
|
49
|
+
</section>
|
|
50
|
+
<main id="main">
|
|
51
|
+
<!-- 三维视图占主要面积:场景成功创建后才显示(room.js 去掉 hidden)。 -->
|
|
52
|
+
<section id="roomStage" class="room-stage" hidden>
|
|
53
|
+
<div id="viewport" class="room-viewport" tabindex="-1" aria-label="三维房间视图:默认门外行走(WASD/方向键移动、Shift 加速、拖动环顾),可回总览拖动旋转、滚轮缩放,点击家具查看身份">
|
|
54
|
+
<div class="room-toolbar" role="group" aria-label="浏览方式">
|
|
55
|
+
<!-- 全窗口形态下页头(面包屑)被隐藏:返回业务页的入口常驻工具条,错误状态外也始终可用。
|
|
56
|
+
行走/总览/门按钮(P1c-2c-2)默认禁用,场景成功装配后才启用;当前模式的按钮呈禁用态。
|
|
57
|
+
"业务资料"(E3b-2;E9c 起含流程图)同样场景成功才启用:打开登记的完整资料目录,
|
|
58
|
+
家具绑定有误也能从这里读。 -->
|
|
59
|
+
<a id="backLink" class="room-back" href="/specdev-workbench/business">← 返回业务页</a>
|
|
60
|
+
<!-- E9b:图鉴入口常驻工具条(成功进入全窗口后页头入口已隐藏,从这里仍可打开);
|
|
61
|
+
新标签打开并保留房间页。 -->
|
|
62
|
+
<a id="furnitureToolbarLink" class="room-back" data-ws-link="/specdev-workbench/furniture" href="/specdev-workbench/furniture" target="_blank" rel="noopener">家具图鉴</a>
|
|
63
|
+
<button id="enterWalk" class="reset-button" type="button" disabled>继续行走</button>
|
|
64
|
+
<button id="resetView" class="reset-button" type="button" disabled>回到总览</button>
|
|
65
|
+
<button id="doorToggle" class="reset-button" type="button" disabled>开门</button>
|
|
66
|
+
<button id="bizDocs" class="reset-button" type="button" disabled>业务资料</button>
|
|
67
|
+
<p id="sceneHint" class="scene-hint" role="status" aria-live="polite">拖动环绕 · 滚轮缩放 · 点家具看身份</p>
|
|
68
|
+
</div>
|
|
69
|
+
<!-- 家具资料绑定有误(E3b-2):场景照常创建,这里给出可展开的诊断;
|
|
70
|
+
code/fieldPath/实例/中文原因全部 textContent 填充。 -->
|
|
71
|
+
<details id="bindingNote" class="binding-note" hidden>
|
|
72
|
+
<summary>家具资料绑定需要调整,仍可浏览房间</summary>
|
|
73
|
+
<ol id="bindingDiagList"></ol>
|
|
74
|
+
</details>
|
|
75
|
+
<!-- 点击家具后的身份一行(textContent 填充,不拼 HTML)。 -->
|
|
76
|
+
<p id="pickInfo" class="pick-info" role="status" hidden></p>
|
|
77
|
+
<p id="placeholderNote" class="placeholder-note">家具按房间配置加载,可包含正式资产与占位模型。</p>
|
|
78
|
+
<!-- 底座风格字幕(2026-09-28 作者令:照抄旧底座页面样式与文案,仅去掉数字编号;
|
|
79
|
+
结构与类名同 experiments/2026-09-27-空房间风格底座 的 .intro 区)。 -->
|
|
80
|
+
<aside id="styleCaption" class="intro" hidden>
|
|
81
|
+
<p id="captionEyebrow" class="eyebrow"></p>
|
|
82
|
+
<h1 id="captionTitle"></h1>
|
|
83
|
+
<p id="captionDesc"></p>
|
|
84
|
+
<div class="material-note"><span id="captionChip" class="material-chip"></span><span id="captionMaterial"></span></div>
|
|
85
|
+
</aside>
|
|
86
|
+
<!-- 昼夜切换(作者令保留):只有童话底座显示,默认晴昼;样式同旧页 .period-panel。 -->
|
|
87
|
+
<aside id="periodSwitch" class="period-panel" hidden>
|
|
88
|
+
<span class="small-label">窗外的时间</span>
|
|
89
|
+
<div class="period-switch" role="group" aria-label="昼夜氛围">
|
|
90
|
+
<button type="button" id="periodDay" aria-pressed="true">☀ 晴昼</button>
|
|
91
|
+
<button type="button" id="periodNight" aria-pressed="false">☾ 星夜</button>
|
|
92
|
+
</div>
|
|
93
|
+
</aside>
|
|
94
|
+
<div id="sceneFallback" class="scene-fallback" hidden>
|
|
95
|
+
<strong>房间暂时无法显示</strong>
|
|
96
|
+
<p id="sceneFallbackReason"></p>
|
|
97
|
+
<p>可刷新重试;返回业务页的链接不受影响。</p>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
<!-- 阅读覆盖层(E3b-2;E9c 扩展流程图):唯一的阅读面板,放在 viewport 外、roomStage 内——
|
|
101
|
+
阅读时背景视口加 inert,面板本身不受影响。结构与类名沿用建筑页 .material-*,
|
|
102
|
+
房间侧布局在 room.css。E9c:清单标"文档/流程图",图阅读页装进 #readerFrameHost
|
|
103
|
+
里的 iframe(reader.js 每次选图新建、切走移除);面板头有清单收缩与放大还原
|
|
104
|
+
(作者令 2026-10-01)。 -->
|
|
105
|
+
<div id="readerRoot" class="room-reader-root" hidden>
|
|
106
|
+
<section id="readerPanel" class="material-panel room-reader-panel" role="dialog" aria-modal="true" aria-labelledby="readerTitle">
|
|
107
|
+
<!-- 原生 Tab 从 iframe 子文档离开时落到守卫,由 reader.js 将焦点留在面板。 -->
|
|
108
|
+
<span id="readerFocusStart" class="reader-focus-guard" tabindex="0"></span>
|
|
109
|
+
<div class="material-head">
|
|
110
|
+
<div class="material-heading">
|
|
111
|
+
<p class="material-kind" id="readerKind">资料集合</p>
|
|
112
|
+
<h2 id="readerTitle"></h2>
|
|
113
|
+
</div>
|
|
114
|
+
<!-- DOM 序关闭钮在前(焦点循环首位与打开焦点一致),视觉上仍最右(room.css order)。
|
|
115
|
+
作者令(2026-10-01):清单可收起(看图时不占宽)、面板可放大(四周留边,
|
|
116
|
+
仍看得出在房间里,不是跳转页面)。reader.js 切换 root 的 data 属性。 -->
|
|
117
|
+
<button id="readerClose" class="material-close" type="button" aria-label="关闭阅读面板">×</button>
|
|
118
|
+
<div class="material-tools">
|
|
119
|
+
<button id="readerListToggle" class="material-tool" type="button" aria-pressed="false">收起清单</button>
|
|
120
|
+
<button id="readerSizeToggle" class="material-tool" type="button" aria-pressed="false">放大</button>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
<div class="material-body">
|
|
124
|
+
<div class="material-side">
|
|
125
|
+
<p id="readerListLabel" class="material-list-label">资料清单 <span id="readerCount"></span></p>
|
|
126
|
+
<ul id="readerList" class="material-list" hidden></ul>
|
|
127
|
+
<p id="readerEmpty" class="material-empty" hidden></p>
|
|
128
|
+
</div>
|
|
129
|
+
<div class="material-reader">
|
|
130
|
+
<p id="readerHint" class="material-reader-hint">选择一份资料开始阅读。</p>
|
|
131
|
+
<p id="readerDocTitle" class="material-reader-title" hidden></p>
|
|
132
|
+
<p id="readerStatus" class="material-reader-status" role="alert" hidden></p>
|
|
133
|
+
<div id="readerBody" class="material-reader-body" hidden></div>
|
|
134
|
+
<div id="readerFrameHost" class="material-reader-frame-host" hidden></div>
|
|
135
|
+
<p id="readerRetryLine" class="reader-retry-line" hidden><button id="readerRetry" class="reset-button" type="button">重试</button></p>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
<span id="readerFocusEnd" class="reader-focus-guard" tabindex="0"></span>
|
|
139
|
+
</section>
|
|
140
|
+
</div>
|
|
141
|
+
</section>
|
|
142
|
+
</main>
|
|
143
|
+
</div>
|
|
144
|
+
<script type="module" src="/specdev-workbench/assets/room.js"></script>
|
|
145
|
+
</body>
|
|
146
|
+
</html>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN" data-theme="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>业务展示 · SpecDev 工作台</title>
|
|
7
|
+
<script src="/specdev-workbench/assets/theme.js"></script>
|
|
8
|
+
<link rel="stylesheet" href="/specdev-workbench/assets/style.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body class="showcase-page">
|
|
11
|
+
<a class="skip-link" href="#main">跳到主要内容</a>
|
|
12
|
+
<header class="app-bar">
|
|
13
|
+
<a class="brand" data-home-link href="/specdev-workbench/" aria-label="SpecDev 项目首页"><span class="brand-mark" aria-hidden="true">S<span></span></span><span>SpecDev<span class="brand-caption">工作台</span></span></a>
|
|
14
|
+
<div class="theme-switch" role="group" aria-label="页面主题"><button type="button" data-theme-choice="light" aria-pressed="false"><span aria-hidden="true">☼</span> 浅色</button><button type="button" data-theme-choice="dark" aria-pressed="true"><span aria-hidden="true">☾</span> 深色</button></div>
|
|
15
|
+
</header>
|
|
16
|
+
<div class="page-content">
|
|
17
|
+
<header class="top">
|
|
18
|
+
<div>
|
|
19
|
+
<p class="crumbs"><a href="/specdev-workbench/">项目首页</a> / <span>业务展示</span></p>
|
|
20
|
+
<h1 id="title">业务展示</h1>
|
|
21
|
+
<p class="sub" id="intro"></p>
|
|
22
|
+
<!-- 工作区行与三页同款:默认收起,展开见全路径(common.js renderRepoLine 填充)。 -->
|
|
23
|
+
<details class="workspace-details" id="workspaceDetails" hidden><summary id="workspaceLabel">工作区</summary><p id="repoLine"></p></details>
|
|
24
|
+
</div>
|
|
25
|
+
<p id="status" class="status" data-kind="info">正在读取项目…</p>
|
|
26
|
+
</header>
|
|
27
|
+
<p id="errorBox" class="error" hidden></p>
|
|
28
|
+
<section id="guideBox" class="guide" hidden></section>
|
|
29
|
+
<!-- 格式切换固定吸顶:进页默认列表,选择记入本地存储。 -->
|
|
30
|
+
<nav id="viewSwitch" class="view-switch" role="group" aria-label="展示格式" hidden>
|
|
31
|
+
<button type="button" data-view="list" aria-pressed="true">列表</button>
|
|
32
|
+
<button type="button" data-view="star" aria-pressed="false">星图</button>
|
|
33
|
+
<button type="button" data-view="sphere" aria-pressed="false">球阵</button>
|
|
34
|
+
<button type="button" id="sphereStart" class="sphere-start" hidden>开始旋转</button>
|
|
35
|
+
</nav>
|
|
36
|
+
<main id="main">
|
|
37
|
+
<section id="viewList" class="showcase-view cards home-cards" aria-label="列表视图"></section>
|
|
38
|
+
<section id="viewStar" class="showcase-view" aria-label="星图视图" hidden>
|
|
39
|
+
<div id="starBox" class="star-box"></div>
|
|
40
|
+
<p class="view-note">星图:每个业务一颗主星,次星是它登记的流程图;点星进对应页面。位置按业务 id 稳定分配,刷新不变。</p>
|
|
41
|
+
</section>
|
|
42
|
+
<section id="viewSphere" class="showcase-view" aria-label="球阵视图" hidden>
|
|
43
|
+
<div id="sphereBox" class="sphere-box"></div>
|
|
44
|
+
<p class="view-note">球阵:业务与流程图分布在球面上,大球是业务、小球是图;点球进对应页面。切走即停渲染。</p>
|
|
45
|
+
</section>
|
|
46
|
+
</main>
|
|
47
|
+
</div>
|
|
48
|
+
<script type="module" src="/specdev-workbench/assets/showcase.js"></script>
|
|
49
|
+
</body>
|
|
50
|
+
</html>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN" data-theme="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>选择项目 · SpecDev 工作台</title>
|
|
7
|
+
<script src="/specdev-workbench/assets/theme.js"></script>
|
|
8
|
+
<link rel="stylesheet" href="/specdev-workbench/assets/style.css">
|
|
9
|
+
<link rel="stylesheet" href="/specdev-workbench/assets/workspaces.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body class="workspaces-page">
|
|
12
|
+
<a class="skip-link" href="#main">跳到主要内容</a>
|
|
13
|
+
<header class="app-bar">
|
|
14
|
+
<a class="brand" href="/specdev-workbench/workspaces"><span class="brand-mark" aria-hidden="true">S<span></span></span><span>SpecDev<span class="brand-caption">工作台</span></span></a>
|
|
15
|
+
<div class="theme-switch" role="group" aria-label="页面主题">
|
|
16
|
+
<button type="button" data-theme-choice="light" aria-pressed="false">☼ 浅色</button>
|
|
17
|
+
<button type="button" data-theme-choice="dark" aria-pressed="true">☾ 深色</button>
|
|
18
|
+
</div>
|
|
19
|
+
</header>
|
|
20
|
+
<main id="main" class="workspaces-main">
|
|
21
|
+
<h1>选择项目</h1>
|
|
22
|
+
<p class="workspaces-intro">选择一个 DSH 工作区,进入 SpecDev 工作台</p>
|
|
23
|
+
<p id="workspaceStatus" role="status">正在读取项目清单…</p>
|
|
24
|
+
<p id="workspaceError" class="error" role="alert" hidden></p>
|
|
25
|
+
<ul id="workspaceList" class="workspace-list" aria-label="项目清单" aria-busy="true"></ul>
|
|
26
|
+
<p id="workspaceEmpty" hidden>还没有工作区,请先回 DSH 创建工作区,再刷新此页。</p>
|
|
27
|
+
<button id="workspaceRetry" type="button" hidden>重试</button>
|
|
28
|
+
<p id="workspaceFallback" hidden><a href="/specdev-workbench/">打开手动配置入口</a></p>
|
|
29
|
+
</main>
|
|
30
|
+
<script src="/specdev-workbench/assets/workspaces.js" defer></script>
|
|
31
|
+
</body>
|
|
32
|
+
</html>
|