Browse Source

fix: 通过静态体检 —— 视图元素注册判重 + 种子读取走统一网络出口

- 五个视图 customElements.define 加 !customElements.get() 判重([E])
- sample-data.js 改走 utils/http.js 的 createHttp,不直连 fetch([6])
- 复验:五端渲染正常,[E] 与 [6](sample-data) 均通过
- 遗留:[6] 仍报 src/services/workshop-data.js —— 基线 d14d02f 既有,本轮未改
agent 1 day ago
parent
commit
24294789b2

+ 1 - 1
src/pages/view-class.js

@@ -111,4 +111,4 @@ export class ViewClass extends SampleViewBase {
   }
 }
 
-customElements.define('view-class', ViewClass);
+if (!customElements.get('view-class')) customElements.define('view-class', ViewClass);

+ 1 - 1
src/pages/view-cockpit.js

@@ -125,4 +125,4 @@ export class ViewCockpit extends SampleViewBase {
   }
 }
 
-customElements.define('view-cockpit', ViewCockpit);
+if (!customElements.get('view-cockpit')) customElements.define('view-cockpit', ViewCockpit);

+ 1 - 1
src/pages/view-coop.js

@@ -117,4 +117,4 @@ export class ViewCoop extends SampleViewBase {
   }
 }
 
-customElements.define('view-coop', ViewCoop);
+if (!customElements.get('view-coop')) customElements.define('view-coop', ViewCoop);

+ 1 - 1
src/pages/view-intel.js

@@ -99,4 +99,4 @@ export class ViewIntel extends SampleViewBase {
   }
 }
 
-customElements.define('view-intel', ViewIntel);
+if (!customElements.get('view-intel')) customElements.define('view-intel', ViewIntel);

+ 1 - 1
src/pages/view-review.js

@@ -100,4 +100,4 @@ export class ViewReview extends SampleViewBase {
   }
 }
 
-customElements.define('view-review', ViewReview);
+if (!customElements.get('view-review')) customElements.define('view-review', ViewReview);

+ 6 - 3
src/services/sample-data.js

@@ -9,6 +9,11 @@
  *      但底层不是生产写路径 —— 这是为了「抽屉能点,但不会动线上数据」。
  *   4. 提供 resetSample() 一键还原,演示前可清场。
  */
+import { createHttp } from '../utils/http.js';
+
+// 种子是静态文件,但同样走 services 的统一网络出口(视图层不 fetch、services 不直连 fetch)
+const seedHttp = createHttp({ base: '', appId: 'kf-sample' });
+
 const SEED_URL = new URL('../../data/preview-seed.json', import.meta.url).href;
 const LS_KEY = 'kf-sample::mutations::v1';
 export const SAMPLE_DATASET_VERSION = 'ksf.innovation-preview-seed.v1';
@@ -24,9 +29,7 @@ export function getCurrentModel() { return currentModel; }
 /** 读种子(浏览器端缓存;失败抛错,不兜底造数据) */
 export async function loadSeed() {
   if (seedCache) return seedCache;
-  const res = await fetch(SEED_URL, { cache: 'no-cache' });
-  if (!res.ok) throw new Error(`种子读取失败 HTTP ${res.status}`);
-  seedCache = await res.json();
+  seedCache = await seedHttp.get(SEED_URL);
   return seedCache;
 }