nayota-show-sdk 1.3.77 → 1.3.78
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/AI_EXECUTABLE_TASKS.md +558 -0
- package/API_LEVEL_V2_IMPLEMENTATION_CHECKLIST.md +886 -0
- package/SDK_MIGRATION_PLAN.md +464 -0
- package/api/upload.js +78 -2
- package/api/upload.test.js +81 -0
- package/package.json +1 -1
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
# nayota-show-sdk 迁移到 nayota-impossible-pro 的 AI 可执行开发任务单
|
|
2
|
+
|
|
3
|
+
## 1. 任务目标
|
|
4
|
+
|
|
5
|
+
把 `nayota-show-sdk` 从“默认面向 `nayota-impossible-pro-orgin` 单后端”的实现,改造成“可同时接入 `nayota-impossible-pro` 正式接口和兼容接口”的 SDK。
|
|
6
|
+
|
|
7
|
+
本任务的目标不是重写后端,也不是恢复所有旧接口,而是在**不破坏新后端正式运行边界**的前提下,完成 SDK 兼容层建设。
|
|
8
|
+
|
|
9
|
+
## 2. 总体约束
|
|
10
|
+
|
|
11
|
+
开发时必须遵守以下约束:
|
|
12
|
+
|
|
13
|
+
- 不修改 `nayota-impossible-pro` 的正式运行边界
|
|
14
|
+
- 不要求把旧展示模块重新挂回 `nayota-impossible-pro/server/routes/index.route.js`
|
|
15
|
+
- 不把新后端退回到 Mongo/Mongoose 风格主链
|
|
16
|
+
- `nayota-show-sdk` 对外 API 名称保持不变
|
|
17
|
+
- SDK 对调用方继续兼容 `_id`
|
|
18
|
+
- 新增代码尽量集中在 `config/`、`utils/`、`api/` 内
|
|
19
|
+
- 先做 SDK 层适配,不做后端侵入式改造
|
|
20
|
+
|
|
21
|
+
## 3. 已确认的模块分层
|
|
22
|
+
|
|
23
|
+
### 3.1 Formal 模块
|
|
24
|
+
|
|
25
|
+
这些模块优先走 `nayota-impossible-pro` 正式 `/api`:
|
|
26
|
+
|
|
27
|
+
- `systeminfo`
|
|
28
|
+
- `router`
|
|
29
|
+
- `bmsRole`
|
|
30
|
+
- `bmsRouter`
|
|
31
|
+
- `tag`
|
|
32
|
+
- `svglib`
|
|
33
|
+
- `relationPlatform`
|
|
34
|
+
- `components`
|
|
35
|
+
- `application`
|
|
36
|
+
- `upload`
|
|
37
|
+
- `appRouter`
|
|
38
|
+
- `userDevice`
|
|
39
|
+
- `line`
|
|
40
|
+
- `inspectionPoints`
|
|
41
|
+
- `patrolPoints`
|
|
42
|
+
- `inspectionTask`
|
|
43
|
+
- `inspectionTaskSub`
|
|
44
|
+
- `product`
|
|
45
|
+
- `reservation`
|
|
46
|
+
- `sensor`
|
|
47
|
+
- `scadaProject`
|
|
48
|
+
- `maintenancePlan`
|
|
49
|
+
- `maintenanceRecord`
|
|
50
|
+
- `sensorStatusConfig`
|
|
51
|
+
|
|
52
|
+
### 3.2 Compat/Fallback 模块
|
|
53
|
+
|
|
54
|
+
这些模块不能假定正式后端一定有,需要走兼容接口或 fallback:
|
|
55
|
+
|
|
56
|
+
- `alarmProgress`
|
|
57
|
+
- `alarmRecord`
|
|
58
|
+
- `area`
|
|
59
|
+
- `areaClass`
|
|
60
|
+
- `datavDatas`
|
|
61
|
+
- `datavForms`
|
|
62
|
+
- `departs`
|
|
63
|
+
- `deviceClass`
|
|
64
|
+
- `devices`
|
|
65
|
+
- `video`
|
|
66
|
+
- `view`
|
|
67
|
+
|
|
68
|
+
### 3.3 暂不开发模块
|
|
69
|
+
|
|
70
|
+
这些模块本轮不做正式迁移,只保留明确错误提示能力:
|
|
71
|
+
|
|
72
|
+
- `attendanceRecord`
|
|
73
|
+
- `workSchedule`
|
|
74
|
+
- `energyCalculation`
|
|
75
|
+
- `energyConsumption`
|
|
76
|
+
|
|
77
|
+
## 4. 交付物
|
|
78
|
+
|
|
79
|
+
本轮开发完成后,应至少交付:
|
|
80
|
+
|
|
81
|
+
- 可同时支持 `formalServer` 与 `compatServer` 的 SDK 配置
|
|
82
|
+
- 统一的 `_id/id` 兼容工具
|
|
83
|
+
- formal 请求客户端
|
|
84
|
+
- compat 请求客户端
|
|
85
|
+
- missing-endpoint fallback 工具
|
|
86
|
+
- 至少 5 个核心模块完成接入改造
|
|
87
|
+
- 对暂不开发模块给出清晰错误
|
|
88
|
+
- 文档更新
|
|
89
|
+
|
|
90
|
+
## 5. 执行顺序
|
|
91
|
+
|
|
92
|
+
必须按以下顺序执行,不要跳步。
|
|
93
|
+
|
|
94
|
+
### 阶段 1:基础设施
|
|
95
|
+
|
|
96
|
+
先完成配置层与工具层,禁止在没有工具层的情况下分散修改 API 文件。
|
|
97
|
+
|
|
98
|
+
### 阶段 2:核心正式模块
|
|
99
|
+
|
|
100
|
+
优先迁移:
|
|
101
|
+
|
|
102
|
+
- `reservation`
|
|
103
|
+
- `maintenancePlan`
|
|
104
|
+
- `maintenanceRecord`
|
|
105
|
+
- `userDevice`
|
|
106
|
+
- `router`
|
|
107
|
+
|
|
108
|
+
### 阶段 3:fallback 模块样板
|
|
109
|
+
|
|
110
|
+
优先迁移:
|
|
111
|
+
|
|
112
|
+
- `departs`
|
|
113
|
+
- `devices`
|
|
114
|
+
|
|
115
|
+
### 阶段 4:冻结模块处理
|
|
116
|
+
|
|
117
|
+
给以下模块增加明确错误或占位说明:
|
|
118
|
+
|
|
119
|
+
- `attendanceRecord`
|
|
120
|
+
- `workSchedule`
|
|
121
|
+
- `energyCalculation`
|
|
122
|
+
- `energyConsumption`
|
|
123
|
+
|
|
124
|
+
### 阶段 5:README 补充
|
|
125
|
+
|
|
126
|
+
补充新的配置方式与模块接入说明。
|
|
127
|
+
|
|
128
|
+
## 6. 具体任务
|
|
129
|
+
|
|
130
|
+
## Task 1: 改造 SDK 配置
|
|
131
|
+
|
|
132
|
+
### 目标
|
|
133
|
+
|
|
134
|
+
让 SDK 支持双服务地址。
|
|
135
|
+
|
|
136
|
+
### 修改文件
|
|
137
|
+
|
|
138
|
+
- `config/urlcfg.js`
|
|
139
|
+
|
|
140
|
+
### 要求
|
|
141
|
+
|
|
142
|
+
- 保留现有 `showServer`
|
|
143
|
+
- 新增 `formalServer`
|
|
144
|
+
- 新增 `compatServer`
|
|
145
|
+
- 新增 `getFormalUrl()`
|
|
146
|
+
- 新增 `getCompatUrl()`
|
|
147
|
+
- 保持旧调用方式可用
|
|
148
|
+
|
|
149
|
+
### 兼容规则
|
|
150
|
+
|
|
151
|
+
- 若只传 `showServer`,则 `formalServer = showServer`
|
|
152
|
+
- 若未传 `compatServer`,compat 模块调用时不能静默失败,必须给出清晰错误
|
|
153
|
+
|
|
154
|
+
### 验收标准
|
|
155
|
+
|
|
156
|
+
- 原有 `NayotaSdk.config({ showServer })` 仍可执行
|
|
157
|
+
- 新增 `formalServer` 与 `compatServer` 后能被请求层读取
|
|
158
|
+
|
|
159
|
+
## Task 2: 新增 ID 兼容工具
|
|
160
|
+
|
|
161
|
+
### 目标
|
|
162
|
+
|
|
163
|
+
统一处理 `id/_id`、引用对象和引用数组。
|
|
164
|
+
|
|
165
|
+
### 新增文件
|
|
166
|
+
|
|
167
|
+
- `utils/id-compat.js`
|
|
168
|
+
|
|
169
|
+
### 需要实现的函数
|
|
170
|
+
|
|
171
|
+
- `attachLegacyId(value)`
|
|
172
|
+
- `normalizeOutgoingIds(value)`
|
|
173
|
+
- `normalizeRef(value)`
|
|
174
|
+
- `normalizeRefArray(value)`
|
|
175
|
+
|
|
176
|
+
### 规则
|
|
177
|
+
|
|
178
|
+
#### `attachLegacyId`
|
|
179
|
+
|
|
180
|
+
- 如果对象有 `id` 但没有 `_id`,补 `_id = id`
|
|
181
|
+
- 递归处理数组和对象
|
|
182
|
+
|
|
183
|
+
#### `normalizeOutgoingIds`
|
|
184
|
+
|
|
185
|
+
- 如果对象有 `_id`,出参请求前转成 `id`
|
|
186
|
+
- 不要覆盖已经存在的 `id`
|
|
187
|
+
|
|
188
|
+
#### `normalizeRef`
|
|
189
|
+
|
|
190
|
+
- 输入为字符串,原样返回
|
|
191
|
+
- 输入为 `{ _id }` 或 `{ id }`,返回对应 id
|
|
192
|
+
- 其他情况原样返回或返回 `null`
|
|
193
|
+
|
|
194
|
+
#### `normalizeRefArray`
|
|
195
|
+
|
|
196
|
+
- 把 `Array<object|string>` 统一转为 `Array<string>`
|
|
197
|
+
- 自动过滤空值
|
|
198
|
+
|
|
199
|
+
### 验收标准
|
|
200
|
+
|
|
201
|
+
- 更新类接口能接受 `data._id`
|
|
202
|
+
- 嵌套对象里出现的 `id/_id` 能递归处理
|
|
203
|
+
- 设备/角色/children 这类引用数组能归一化
|
|
204
|
+
|
|
205
|
+
## Task 3: 改造 formal 请求客户端
|
|
206
|
+
|
|
207
|
+
### 目标
|
|
208
|
+
|
|
209
|
+
把当前主请求层升级为可自动处理 `id/_id`。
|
|
210
|
+
|
|
211
|
+
### 修改文件
|
|
212
|
+
|
|
213
|
+
- `utils/http-config.js`
|
|
214
|
+
- `utils/http-config-form.js`
|
|
215
|
+
|
|
216
|
+
### 要求
|
|
217
|
+
|
|
218
|
+
- 请求前调用 `normalizeOutgoingIds`
|
|
219
|
+
- 响应后调用 `attachLegacyId`
|
|
220
|
+
- 保留 token 处理逻辑
|
|
221
|
+
- `baseURL` 改为读取 `getFormalUrl()`
|
|
222
|
+
|
|
223
|
+
### 验收标准
|
|
224
|
+
|
|
225
|
+
- formal 接口返回 `id` 时,SDK 使用方能拿到 `_id`
|
|
226
|
+
- 旧模块传 `_id` 更新不会丢 id
|
|
227
|
+
|
|
228
|
+
## Task 4: 新增 compat 请求客户端
|
|
229
|
+
|
|
230
|
+
### 目标
|
|
231
|
+
|
|
232
|
+
提供独立的兼容请求通道。
|
|
233
|
+
|
|
234
|
+
### 新增文件
|
|
235
|
+
|
|
236
|
+
- `utils/http-config-compat.js`
|
|
237
|
+
- `utils/http-config-compat-form.js`
|
|
238
|
+
|
|
239
|
+
### 要求
|
|
240
|
+
|
|
241
|
+
- 结构尽量与 formal 客户端一致
|
|
242
|
+
- `baseURL` 来自 `getCompatUrl()`
|
|
243
|
+
- 若未配置 compat 地址,则抛清晰错误
|
|
244
|
+
- 同样支持 token、`normalizeOutgoingIds`、`attachLegacyId`
|
|
245
|
+
|
|
246
|
+
### 错误文案要求
|
|
247
|
+
|
|
248
|
+
错误里要明确指出:
|
|
249
|
+
|
|
250
|
+
- 当前模块需要 `compatServer`
|
|
251
|
+
- 当前未配置 compat 服务地址
|
|
252
|
+
|
|
253
|
+
### 验收标准
|
|
254
|
+
|
|
255
|
+
- compat 请求链可以独立工作
|
|
256
|
+
- 未配置 compat 地址时错误清晰
|
|
257
|
+
|
|
258
|
+
## Task 5: 新增 fallback 工具
|
|
259
|
+
|
|
260
|
+
### 目标
|
|
261
|
+
|
|
262
|
+
让模块可以先尝试 formal,缺接口时回退到 compat。
|
|
263
|
+
|
|
264
|
+
### 新增文件
|
|
265
|
+
|
|
266
|
+
- `utils/request-fallback.js`
|
|
267
|
+
|
|
268
|
+
### 需要实现的函数
|
|
269
|
+
|
|
270
|
+
- `isMissingEndpoint(error)`
|
|
271
|
+
- `requestWithMissingEndpointFallback(primaryRequest, fallbackRequest)`
|
|
272
|
+
|
|
273
|
+
### 规则
|
|
274
|
+
|
|
275
|
+
- `404` 和 `501` 视为缺接口
|
|
276
|
+
- 只有缺接口才触发 fallback
|
|
277
|
+
- 鉴权错误、参数错误、500 不允许 fallback 掩盖
|
|
278
|
+
|
|
279
|
+
### 验收标准
|
|
280
|
+
|
|
281
|
+
- formal 404 时会改走 compat
|
|
282
|
+
- formal 401/500 时不会偷偷 fallback
|
|
283
|
+
|
|
284
|
+
## Task 6: 建立模块路由策略表
|
|
285
|
+
|
|
286
|
+
### 目标
|
|
287
|
+
|
|
288
|
+
不要把“哪个模块走 formal / compat / fallback / disabled”写死在每个 API 文件里。
|
|
289
|
+
|
|
290
|
+
### 新增文件
|
|
291
|
+
|
|
292
|
+
- `utils/module-route-policy.js`
|
|
293
|
+
|
|
294
|
+
### 至少导出
|
|
295
|
+
|
|
296
|
+
- `FORMAL_MODULES`
|
|
297
|
+
- `FALLBACK_MODULES`
|
|
298
|
+
- `DISABLED_MODULES`
|
|
299
|
+
|
|
300
|
+
### 验收标准
|
|
301
|
+
|
|
302
|
+
- 后续 API 文件能基于该策略统一接入
|
|
303
|
+
- 文档和代码中的模块分类一致
|
|
304
|
+
|
|
305
|
+
## Task 7: 改造 reservation 模块
|
|
306
|
+
|
|
307
|
+
### 目标
|
|
308
|
+
|
|
309
|
+
把 `reservation` 接到正式接口,并完成 `_id/id` 兼容。
|
|
310
|
+
|
|
311
|
+
### 修改文件
|
|
312
|
+
|
|
313
|
+
- `api/reservation.js`
|
|
314
|
+
|
|
315
|
+
### 关键要求
|
|
316
|
+
|
|
317
|
+
- `updateOne(data)` 不能只用 `data._id`
|
|
318
|
+
- 必须兼容 `data._id || data.id`
|
|
319
|
+
- 保留 `getReservationsByDepart`
|
|
320
|
+
- 默认走 formal
|
|
321
|
+
|
|
322
|
+
### 验收标准
|
|
323
|
+
|
|
324
|
+
- `list/create/getOne/updateOne/deleteOne/deleteMany/getReservationsByDepart` 均可用
|
|
325
|
+
- 更新接口接受 `_id`
|
|
326
|
+
- 返回对象含 `_id`
|
|
327
|
+
|
|
328
|
+
## Task 8: 改造 maintenancePlan 模块
|
|
329
|
+
|
|
330
|
+
### 目标
|
|
331
|
+
|
|
332
|
+
把设备和传感器引用数组归一化后再请求正式后端。
|
|
333
|
+
|
|
334
|
+
### 修改文件
|
|
335
|
+
|
|
336
|
+
- `api/maintenancePlan.js`
|
|
337
|
+
|
|
338
|
+
### 关键要求
|
|
339
|
+
|
|
340
|
+
- `devices` 支持 `['id']` 或 `[{_id:'id'}]`
|
|
341
|
+
- `sensors` 支持 `['id']` 或 `[{_id:'id'}]`
|
|
342
|
+
- `updateOne` 支持 `_id || id`
|
|
343
|
+
|
|
344
|
+
### 验收标准
|
|
345
|
+
|
|
346
|
+
- create/update 时引用数组被正确转成 id 数组
|
|
347
|
+
- 返回数据继续兼容 `_id`
|
|
348
|
+
|
|
349
|
+
## Task 9: 改造 maintenanceRecord 模块
|
|
350
|
+
|
|
351
|
+
### 目标
|
|
352
|
+
|
|
353
|
+
对正式模块完成基础 `id/_id` 兼容。
|
|
354
|
+
|
|
355
|
+
### 修改文件
|
|
356
|
+
|
|
357
|
+
- `api/maintenanceRecord.js`
|
|
358
|
+
|
|
359
|
+
### 要求
|
|
360
|
+
|
|
361
|
+
- `updateOne` 支持 `_id || id`
|
|
362
|
+
- 保留现有自定义接口
|
|
363
|
+
|
|
364
|
+
### 验收标准
|
|
365
|
+
|
|
366
|
+
- 增删改查正常
|
|
367
|
+
- 批量接口不因 `id/_id` 差异出错
|
|
368
|
+
|
|
369
|
+
## Task 10: 改造 userDevice 模块
|
|
370
|
+
|
|
371
|
+
### 目标
|
|
372
|
+
|
|
373
|
+
处理数组字段与文本/JSON 字段的兼容。
|
|
374
|
+
|
|
375
|
+
### 修改文件
|
|
376
|
+
|
|
377
|
+
- `api/userDevice.js`
|
|
378
|
+
|
|
379
|
+
### 关键字段
|
|
380
|
+
|
|
381
|
+
- `devices`
|
|
382
|
+
- `apps`
|
|
383
|
+
- `areas`
|
|
384
|
+
- `departs`
|
|
385
|
+
- `showFields`
|
|
386
|
+
- `detailParams`
|
|
387
|
+
- `airConditionerEnergyData`
|
|
388
|
+
|
|
389
|
+
### 要求
|
|
390
|
+
|
|
391
|
+
- 引用数组统一转为字符串数组
|
|
392
|
+
- `updateOne` 支持 `_id || id`
|
|
393
|
+
- 不在 SDK 里强行改变返回结构类型,只做最小兼容
|
|
394
|
+
|
|
395
|
+
### 验收标准
|
|
396
|
+
|
|
397
|
+
- create/update 不因对象数组而失败
|
|
398
|
+
- 返回对象带 `_id`
|
|
399
|
+
|
|
400
|
+
## Task 11: 改造 router 模块
|
|
401
|
+
|
|
402
|
+
### 目标
|
|
403
|
+
|
|
404
|
+
适配树结构模块的 children/roles 引用数组。
|
|
405
|
+
|
|
406
|
+
### 修改文件
|
|
407
|
+
|
|
408
|
+
- `api/router.js`
|
|
409
|
+
|
|
410
|
+
### 要求
|
|
411
|
+
|
|
412
|
+
- `children` 可传字符串数组或对象数组
|
|
413
|
+
- `roles` 可传字符串数组或对象数组
|
|
414
|
+
- `updateOne` 支持 `_id || id`
|
|
415
|
+
|
|
416
|
+
### 验收标准
|
|
417
|
+
|
|
418
|
+
- 结构更新时 children/roles 被正确归一
|
|
419
|
+
- 查询返回继续兼容 `_id`
|
|
420
|
+
|
|
421
|
+
## Task 12: 改造 departs 模块为 fallback 模板
|
|
422
|
+
|
|
423
|
+
### 目标
|
|
424
|
+
|
|
425
|
+
为未正式接入模块建立标准 fallback 模式。
|
|
426
|
+
|
|
427
|
+
### 修改文件
|
|
428
|
+
|
|
429
|
+
- `api/departs.js`
|
|
430
|
+
|
|
431
|
+
### 要求
|
|
432
|
+
|
|
433
|
+
- 先走 formal
|
|
434
|
+
- 缺接口时走 compat
|
|
435
|
+
- 不再把 fallback 逻辑散落到模块内部实现细节中
|
|
436
|
+
|
|
437
|
+
### 验收标准
|
|
438
|
+
|
|
439
|
+
- formal 有接口时优先走 formal
|
|
440
|
+
- formal 缺接口时自动走 compat
|
|
441
|
+
|
|
442
|
+
## Task 13: 改造 devices 模块为 fallback 模板
|
|
443
|
+
|
|
444
|
+
### 目标
|
|
445
|
+
|
|
446
|
+
建立第二个 fallback 参考实现。
|
|
447
|
+
|
|
448
|
+
### 修改文件
|
|
449
|
+
|
|
450
|
+
- `api/devices.js`
|
|
451
|
+
|
|
452
|
+
### 要求
|
|
453
|
+
|
|
454
|
+
- `getOne/updateOne/deleteOne/deleteMany` 支持 fallback
|
|
455
|
+
- 批量接口若 formal 缺失,可拆成 compat 多次请求
|
|
456
|
+
- `updateOne` 支持 `_id || id`
|
|
457
|
+
|
|
458
|
+
### 验收标准
|
|
459
|
+
|
|
460
|
+
- formal 缺接口时兼容链路能工作
|
|
461
|
+
- 批量兼容逻辑可用
|
|
462
|
+
|
|
463
|
+
## Task 14: 给冻结模块增加明确错误
|
|
464
|
+
|
|
465
|
+
### 目标
|
|
466
|
+
|
|
467
|
+
避免 AI 或调用方误以为这些模块已经正式可用。
|
|
468
|
+
|
|
469
|
+
### 修改文件
|
|
470
|
+
|
|
471
|
+
- `api/attendanceRecord.js`
|
|
472
|
+
- `api/workSchedule.js`
|
|
473
|
+
- `api/energyCalculation.js`
|
|
474
|
+
- `api/energyConsumption.js`
|
|
475
|
+
|
|
476
|
+
### 要求
|
|
477
|
+
|
|
478
|
+
- 保持模块导出存在
|
|
479
|
+
- 调用时抛出清晰错误
|
|
480
|
+
- 错误中说明该模块当前不在正式迁移范围内
|
|
481
|
+
|
|
482
|
+
### 示例
|
|
483
|
+
|
|
484
|
+
```js
|
|
485
|
+
throw new Error('[nayota-show-sdk] workSchedule is not available on nayota-impossible-pro formal runtime.')
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
### 验收标准
|
|
489
|
+
|
|
490
|
+
- 不会静默返回假数据
|
|
491
|
+
- 错误文案清晰、可定位
|
|
492
|
+
|
|
493
|
+
## Task 15: 更新 README
|
|
494
|
+
|
|
495
|
+
### 目标
|
|
496
|
+
|
|
497
|
+
让使用方知道新配置方式和模块边界。
|
|
498
|
+
|
|
499
|
+
### 修改文件
|
|
500
|
+
|
|
501
|
+
- `README.md`
|
|
502
|
+
|
|
503
|
+
### 需要补充
|
|
504
|
+
|
|
505
|
+
- `formalServer`
|
|
506
|
+
- `compatServer`
|
|
507
|
+
- fallback 机制
|
|
508
|
+
- 哪些模块走正式链路
|
|
509
|
+
- 哪些模块依赖 compat
|
|
510
|
+
- 哪些模块暂不支持
|
|
511
|
+
|
|
512
|
+
### 验收标准
|
|
513
|
+
|
|
514
|
+
- 新使用方式有示例
|
|
515
|
+
- 老配置兼容规则有说明
|
|
516
|
+
|
|
517
|
+
## 7. 每个任务完成后必须自检
|
|
518
|
+
|
|
519
|
+
每完成一个任务,至少检查:
|
|
520
|
+
|
|
521
|
+
- 是否破坏了现有导出名称
|
|
522
|
+
- 是否保留了旧 `_id` 兼容
|
|
523
|
+
- 是否把请求路由来源写对
|
|
524
|
+
- 是否把 fallback 触发条件控制在 404/501
|
|
525
|
+
- 是否引入了新的破坏性默认行为
|
|
526
|
+
|
|
527
|
+
## 8. 推荐实现策略
|
|
528
|
+
|
|
529
|
+
AI 实施时推荐采用“小步提交”方式:
|
|
530
|
+
|
|
531
|
+
1. 先完成 `Task 1-6`
|
|
532
|
+
2. 再完成 `Task 7-11`
|
|
533
|
+
3. 再完成 `Task 12-13`
|
|
534
|
+
4. 最后完成 `Task 14-15`
|
|
535
|
+
|
|
536
|
+
不要一口气同时改完全部 API 文件。
|
|
537
|
+
|
|
538
|
+
## 9. 本任务单对应的上游分析文档
|
|
539
|
+
|
|
540
|
+
执行时应同时参考:
|
|
541
|
+
|
|
542
|
+
- [SDK_MIGRATION_PLAN.md](./SDK_MIGRATION_PLAN.md)
|
|
543
|
+
|
|
544
|
+
如果任务单和分析文档冲突,以任务单中的模块边界和开发顺序为准;如果发现边界本身错误,应先修正文档,再继续开发。
|
|
545
|
+
|
|
546
|
+
## 10. 建议给 AI 的执行提示词
|
|
547
|
+
|
|
548
|
+
可直接把下面这段发给 AI:
|
|
549
|
+
|
|
550
|
+
```text
|
|
551
|
+
你现在在 nayota-sdk/nayota-show-sdk 仓库中工作。
|
|
552
|
+
目标是按照 AI_EXECUTABLE_TASKS.md 执行 SDK 迁移。
|
|
553
|
+
严格按任务顺序执行,先做 Task 1-6,再做 Task 7-11。
|
|
554
|
+
不要修改 nayota-impossible-pro 的正式运行边界,不要恢复旧模块到正式主链。
|
|
555
|
+
保留 nayota-show-sdk 对外 API 名称不变,统一兼容 _id/id。
|
|
556
|
+
每完成一个任务都做最小自检,并汇报改动文件与验收结果。
|
|
557
|
+
```
|
|
558
|
+
|