@mingfuyun/star-allinone 0.4.8 → 0.4.10
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/docs/README.md +16 -0
- package/docs/skills/README.md +13 -0
- package/docs/skills/dev-flow/gates.md +12 -0
- package/docs/skills/dev-flow/plan-template.md +62 -0
- package/docs/skills/dev-flow/session-protocol.md +51 -0
- package/docs/skills/dev-flow/swagger-gate.md +45 -0
- package/docs/skills/dev-flow/verify-commands.md +26 -0
- package/docs/skills/overview.md +63 -0
- package/docs/skills/prism-mock.md +219 -0
- package/package.json +2 -1
- package/scripts/cli.js +37 -0
- package/scripts/gen/doctor.js +35 -0
- package/skills/README.md +13 -7
- package/skills/shared/prism-mock/SKILL.md +36 -0
- package/skills/shared/prism-mock/references/example-prism-config.json +26 -0
- package/skills/shared/prism-mock/templates/.gitkeep +0 -0
package/docs/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# star-allinone 文档
|
|
2
|
+
|
|
3
|
+
技能与编排口径说明**只维护在本仓库**,不要在业务仓复制长文。
|
|
4
|
+
|
|
5
|
+
| 路径 | 内容 |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| [skills/](skills/README.md) | 各 shared skill 人读 / Agent 说明 |
|
|
8
|
+
| [skills/dev-flow/](skills/dev-flow/) | 编排口径资产(方案模板、SwaggerGate、Verify、会话协议、门禁) |
|
|
9
|
+
|
|
10
|
+
业务仓经 `pnpm exec star-allinone skills sync` 后,`docs/skills/<name>.md` 等会写入:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
.agents/skills/shared-<name>/references/guide.md
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
业务仓**不维护**技能相关 `docs/`;项目差异只写 `custom-entry/references/`。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Skills 文档索引
|
|
2
|
+
|
|
3
|
+
> **维护约定:** 技能说明只改本目录。业务仓删除技能相关 `docs/`,只读 sync 副本。
|
|
4
|
+
|
|
5
|
+
| 文档 | 对应 skill / 主题 | sync 后业务仓路径 |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| [overview.md](overview.md) | 入口与 shared/custom 总览 | `.agents/skills/shared-project-conventions/references/skills-overview.md` |
|
|
8
|
+
| [prism-mock.md](prism-mock.md) | `shared-prism-mock` | `.agents/skills/shared-prism-mock/references/guide.md` |
|
|
9
|
+
| [dev-flow/](dev-flow/) | 编排口径(方案模板 / SwaggerGate / Verify / 会话协议 / 门禁) | 先随能力包 docs 维护;日后迁入 `shared-dev-flow/references` |
|
|
10
|
+
|
|
11
|
+
配置示例(JSON):`skills/shared/prism-mock/references/example-prism-config.json`(随 skill sync)。
|
|
12
|
+
|
|
13
|
+
Agent 执行某 skill 时:先读该 skill 的 `SKILL.md`,再读其 `references/guide.md`(由 `docs/skills/<name>.md` 同步生成)。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 确认门禁口令
|
|
2
|
+
|
|
3
|
+
> 维护源:能力包 `docs/skills/dev-flow/gates.md`
|
|
4
|
+
> 跨仓统一;三道门禁**互不推断**。
|
|
5
|
+
|
|
6
|
+
| 门禁 | 口令(须字面接近) | 不可替代为 |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| 方案 | `确认方案` | 「确认」「OK」、提交/测发口令 |
|
|
9
|
+
| 提交 | `确认提交` / `确认提交并推送` | 方案确认、测发确认、「确认」单字 |
|
|
10
|
+
| 测发 | `确认推送流水线` / `发布测试环境` | push 成功、提交确认、方案确认 |
|
|
11
|
+
|
|
12
|
+
`确认方案` ≠ `确认提交` ≠ `确认推送流水线`
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# 实现方案模板(整单 flow)
|
|
2
|
+
|
|
3
|
+
> 维护源:能力包 `docs/skills/dev-flow/plan-template.md`
|
|
4
|
+
> 适用:所有接入 `$custom-entry` 的业务仓。整单在改业务代码前须填齐并等待 `确认方案`。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 必填字段
|
|
9
|
+
|
|
10
|
+
| 字段 | 说明 |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| 需求摘要 | 一句话目标 + 关键验收点 |
|
|
13
|
+
| 影响路径 | 预计改动的目录/模块(页面、Service、配置等) |
|
|
14
|
+
| 契约结论 | `无` / `有` / `不确定`(不确定则先问,见 [swagger-gate.md](swagger-gate.md)) |
|
|
15
|
+
| 有序 skill 清单 | 按执行顺序列出将委托的 skill / 动作(勿跳步) |
|
|
16
|
+
| 验证点 | 对照 [verify-commands.md](verify-commands.md) 本仓行 + 业务手测项 |
|
|
17
|
+
| 风险 | 公共组件、权限、数据兼容、测发范围等 |
|
|
18
|
+
| 非目标 | 明确不做的事,防止范围膨胀 |
|
|
19
|
+
| 门禁说明 | 本单将停在哪些确认点(方案 / 提交 / 测发) |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 输出骨架(可直接粘贴)
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
## 实现方案
|
|
27
|
+
|
|
28
|
+
**需求摘要:** …
|
|
29
|
+
|
|
30
|
+
**影响路径:**
|
|
31
|
+
- …
|
|
32
|
+
|
|
33
|
+
**契约结论:** 无 | 有 | 不确定
|
|
34
|
+
- 若有:分支类型(单接口 gen / 全量或增量同步 / + Prism 刷新)→ 见该仓 project-rules
|
|
35
|
+
|
|
36
|
+
**有序 skill 清单:**
|
|
37
|
+
1. …
|
|
38
|
+
2. …
|
|
39
|
+
|
|
40
|
+
**验证点:**
|
|
41
|
+
- [ ] …
|
|
42
|
+
- [ ] 本仓 Verify 命令(见 verify-commands)
|
|
43
|
+
|
|
44
|
+
**风险:** …
|
|
45
|
+
|
|
46
|
+
**非目标:** …
|
|
47
|
+
|
|
48
|
+
**门禁:** 确认方案 →(实现)→ 确认提交[并推送] →(可选)确认推送流水线
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 试填示例(虚构,星链语境)
|
|
54
|
+
|
|
55
|
+
**需求摘要:** 在 IP 回收列表增加「备注」筛选,对接已有 query 字段 `remark`。
|
|
56
|
+
**影响路径:** `src/pages/IPResource/IPRecycle/const.tsx`(及必要时页面)。
|
|
57
|
+
**契约结论:** 无(契约已含 `remark`,仅前端筛选项)。
|
|
58
|
+
**有序 skill 清单:** 1)直接改页面列配置(单点,非 flow 亦可)2)`pnpm typecheck`。
|
|
59
|
+
**验证点:** typecheck;列表搜索备注。
|
|
60
|
+
**风险:** 无 label 工具栏 placeholder 须符合 project-rules。
|
|
61
|
+
**非目标:** 不改公共 `MFProTable`;不测发。
|
|
62
|
+
**门禁:** 若走 flow 则 `确认方案`;入库时 `确认提交`。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# 会话协议(编排输出字段)
|
|
2
|
+
|
|
3
|
+
> 维护源:能力包 `docs/skills/dev-flow/session-protocol.md`
|
|
4
|
+
> 整单 / 长会话每轮至少带齐下列字段,便于人扫读与后续 `shared-dev-flow` 落状态。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 字段
|
|
9
|
+
|
|
10
|
+
| 字段 | 含义 |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| `phase` | 当前阶段枚举(见下) |
|
|
13
|
+
| `done` | 本轮已完成的动作(短列表) |
|
|
14
|
+
| `blocked` | 卡住原因;无则写 `无` |
|
|
15
|
+
| `next_action` | 下一步由谁做、做什么(含是否等待口令) |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## `phase` 枚举
|
|
20
|
+
|
|
21
|
+
| phase | 说明 |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| `intake` | 澄清需求 / 判定整单 vs 单点 |
|
|
24
|
+
| `plan` | 输出实现方案 |
|
|
25
|
+
| `await_plan` | 等待 `确认方案` |
|
|
26
|
+
| `swagger_gate` | 契约判定与同步 |
|
|
27
|
+
| `implement` | 按 skill 清单改代码 |
|
|
28
|
+
| `verify` | 跑 Verify 命令与手测点 |
|
|
29
|
+
| `await_commit` | 审阅提案后等待 `确认提交` |
|
|
30
|
+
| `await_publish` | 等待测发确认词 |
|
|
31
|
+
| `done` | 本单目标已完成(或用户终止) |
|
|
32
|
+
|
|
33
|
+
单点任务可只用子集(如 submit → `await_commit`)。
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 示例
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
phase: await_plan
|
|
41
|
+
done: 已输出实现方案(契约结论=无;清单 2 步)
|
|
42
|
+
blocked: 等待用户确认方案
|
|
43
|
+
next_action: 用户回复「确认方案」后进入 implement
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
phase: await_commit
|
|
48
|
+
done: typecheck 通过;已给出提交提案
|
|
49
|
+
blocked: 等待确认提交
|
|
50
|
+
next_action: 用户「确认提交」或「确认提交并推送」;勿推断测发
|
|
51
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SwaggerGate(契约变更判定)
|
|
2
|
+
|
|
3
|
+
> 维护源:能力包 `docs/skills/dev-flow/swagger-gate.md`
|
|
4
|
+
> 框架通用;**具体 skill 名、契约文件名见各仓** `custom-entry/references/project-rules.md`。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 判定优先级
|
|
9
|
+
|
|
10
|
+
1. **用户明确声明**(「契约没变」「swagger 已更新」「只 gen 这一个接口」)
|
|
11
|
+
2. **git diff / 工作区**是否改动本仓契约文件(见 `.star-allinone.json` → `openapi`)
|
|
12
|
+
3. 仍不确定 → **停问一句**,禁止猜测后跑全量脚本
|
|
13
|
+
|
|
14
|
+
不确定话术示例:
|
|
15
|
+
|
|
16
|
+
> 这次是「只生成单个 METHOD/path」还是「契约文件已更新,要全量/增量同步 Service」?
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 分支类型(通用)
|
|
21
|
+
|
|
22
|
+
| 分支类型 | 何时 | Agent 动作 |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| 跳过 | 契约结论 = 无 | 不跑契约同步 skill |
|
|
25
|
+
| 单接口 gen | 仅一个 `METHOD /path`(或 operationId) | 委托 `shared-api-to-service`;**禁止**全量脚本 |
|
|
26
|
+
| 全量或增量同步 | 整份契约更新 / 多接口重建 | 委托该仓「契约同步」custom skill |
|
|
27
|
+
| 可选 Prism 刷新 | 仓已启用 Prism,且用户要本地 mock 对齐 | 在同步后委托 `shared-prism-mock`(保留 overrides) |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 示例映射(本波试点,非能力上限)
|
|
32
|
+
|
|
33
|
+
| 仓 | 契约文件 | 单接口 | 全量/增量 | Prism |
|
|
34
|
+
| --- | --- | --- | --- | --- |
|
|
35
|
+
| 星链 `starlink-frontend` | `swagger.json` | `shared-api-to-service` | `custom-swagger-to-markdown`;swagger-sync = 全量后再 Prism | `shared-prism-mock`(`prism.enabled`) |
|
|
36
|
+
| 星眼 `starscope-frontend` | `openapi.json` | `shared-api-to-service` | `custom-openapi-update` | 本波未强制;有 runtime 后再接 |
|
|
37
|
+
| (后续星系仓) | 填本仓 `openapi` | 通常同上 | 填本仓 custom | 按配置 |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 硬约束
|
|
42
|
+
|
|
43
|
+
- 禁止用「单 path」触发全量/增量同步脚本。
|
|
44
|
+
- 禁止把某一仓的 skill 名写进 shared 状态机当唯一路径;编排只认**分支类型**,再读 overlay。
|
|
45
|
+
- 细节冲突时以**该仓** project-rules + intents 为准,并回写能力包示例表(发版)。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Verify 命令表
|
|
2
|
+
|
|
3
|
+
> 维护源:能力包 `docs/skills/dev-flow/verify-commands.md`
|
|
4
|
+
> **一行一仓**;新仓接入时追加行。失败默认**不允许**继续提交(除非用户明确豁免)。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 本波实测(2026-10-14)
|
|
9
|
+
|
|
10
|
+
| 仓 | 命令 | 硬门槛 | 大致耗时 | 备注 |
|
|
11
|
+
| --- | --- | --- | --- | --- |
|
|
12
|
+
| 星链 `starlink-frontend` | `pnpm typecheck` | 是 | ~4s | `tsc --noEmit`;本机通过 |
|
|
13
|
+
| 星链 | `pnpm exec star-allinone doctor` | 建议 | ~0.5s | 0 error;可能有 skills stale WARN,跟版后 sync |
|
|
14
|
+
| 星眼 `starscope-frontend` | `pnpm typecheck` | 是 | ~4–5s | 本机通过 |
|
|
15
|
+
| 星眼 | `pnpm exec star-allinone doctor` | 建议 | ~0.5s | 0 error;stale WARN 同左 |
|
|
16
|
+
| 星眼(规则补充) | `pnpm exec tsc --noEmit --baseUrl src/.umi` | 按需 | — | project-rules 写明;与 `pnpm typecheck` 二选一即可,编排优先 package script |
|
|
17
|
+
|
|
18
|
+
| (预留)新星系仓 | `pnpm typecheck` 或项目等价命令 | 是 | — | 接入时实测填耗时 |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 编排用法
|
|
23
|
+
|
|
24
|
+
- 整单 Verify 阶段:至少跑该仓「硬门槛 = 是」的命令。
|
|
25
|
+
- `doctor` 有 error 则先修配置/sync,再提交。
|
|
26
|
+
- lint 是否硬门槛:由各仓 project-rules 声明;本表未列则默认不强制。
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# 研发 Skills 使用指南
|
|
2
|
+
|
|
3
|
+
> 维护源:能力包 `docs/skills/overview.md`。业务仓勿复制长文。
|
|
4
|
+
|
|
5
|
+
`shared-*` 来自 `@mingfuyun/star-allinone`,经 `skills sync` 写入业务仓 `.agents/skills/`,**不要在业务仓直接改**。`custom-*` 由业务仓维护。领域规则:`.agents/skills/custom-entry/references/project-rules.md`。
|
|
6
|
+
|
|
7
|
+
## 整单 vs 单点
|
|
8
|
+
|
|
9
|
+
| | 整单(flow) | 单点 |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| 话术 | 「按流程做完:…」 | 「提交代码」「生成某接口」「发布测试环境」… |
|
|
12
|
+
| 先出方案 | 是,等 `确认方案` | 否(submit/publish 自带提案/确认) |
|
|
13
|
+
| 口径文档 | [dev-flow/](dev-flow/)(方案模板、SwaggerGate、Verify、会话字段、[gates.md](dev-flow/gates.md)) | 仍守各 skill 自身门禁 |
|
|
14
|
+
|
|
15
|
+
口令:`确认方案` ≠ `确认提交` ≠ `确认推送流水线`(详见 [dev-flow/gates.md](dev-flow/gates.md))。
|
|
16
|
+
|
|
17
|
+
## 用户入口
|
|
18
|
+
|
|
19
|
+
只使用 **`$custom-entry`**。不要直接 `$shared-*`,不要直接调用内部 `custom-*`(如全量 swagger / Prism 实现层)。适用**所有**接入能力包的星系业务仓;仓别差异在各仓 `custom-entry`。
|
|
20
|
+
|
|
21
|
+
| 经入口委托到 | 用途 |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| `shared-api-to-service` | 单个 `METHOD /path/` → 类型、Service、可选 JSON Mock |
|
|
24
|
+
| `shared-design-to-page` | 页面(标准列表内部跑 `gen page`) |
|
|
25
|
+
| `shared-review-and-submit` | 提交前审查,确认后再提交 |
|
|
26
|
+
| `shared-publish-test` | 明确要求测发后再跑;`git push` 后不要自动调用 |
|
|
27
|
+
| `shared-tracking` | 埋点接入与补齐 |
|
|
28
|
+
| `shared-prism-mock`(内部,若已 sync 且 `prism.enabled`) | 本地 Prism / `dev:mock` / overrides;说明见 [prism-mock.md](prism-mock.md) |
|
|
29
|
+
| 项目 `custom-*`(内部) | 如全量 swagger / OpenAPI 增量等,见各仓 `AGENTS.md` |
|
|
30
|
+
|
|
31
|
+
## 示例
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
使用 $custom-entry,为 GET /api/v1/devices/ 生成类型、Service 和 JSON Mock。
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
使用 $custom-entry,根据设计稿实现管理页面;缺少的 Service、类型一并生成。
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
使用 $custom-entry,对当前变更执行提交前审查。等我确认后再提交。
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
使用 $custom-entry,把当前分支发布到测试环境。
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
使用 $custom-entry,为 GET /api/v1/users/me 写 Prism mock override。
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
使用 $custom-entry。契约已更新,请重建相关 Service 并刷新 Prism mock(保留 overrides)。
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
本地 Prism 详见 [prism-mock.md](prism-mock.md)。接口契约使用**本仓库**自己的 OpenAPI / Swagger,不要复用其他项目的快照或流水线。
|
|
58
|
+
|
|
59
|
+
## 规范源
|
|
60
|
+
|
|
61
|
+
- 常驻:业务仓根 `AGENTS.md`
|
|
62
|
+
- 技能正文:能力包 `docs/skills/`(sync 副本在 `.agents/skills/shared-*/references/`)
|
|
63
|
+
- **禁止** `.cursor/rules`;**禁止** `~/.codex/skills` 全局 skill 作业务入口
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Prism Mock
|
|
2
|
+
|
|
3
|
+
> **维护源(唯一正文):** 能力包 `docs/skills/prism-mock.md`
|
|
4
|
+
> sync 后业务仓副本:`.agents/skills/shared-prism-mock/references/guide.md`
|
|
5
|
+
> 范围:仅 Prism 能力;**不含**整单 workflow / `shared-dev-flow`。
|
|
6
|
+
> 业务仓不维护 `docs/` 技能文档。
|
|
7
|
+
|
|
8
|
+
对话经 `$custom-entry` 委托本能力(收口完成后为 `shared-prism-mock`;过渡期星链可能仍为 `custom-prism-mock`)。人读与 Agent 均以本文为准。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. 目标
|
|
13
|
+
|
|
14
|
+
| 目标 | 说明 |
|
|
15
|
+
| --- | --- |
|
|
16
|
+
| 契约前置 | 后端未就绪时,按正式契约 + Service 类型把页面跑通 |
|
|
17
|
+
| 少侵入 | 不改页面 / `MFRequest` / `request.tsx`;只动 proxy 与 mock 产物 |
|
|
18
|
+
| 可协作 | 假数据进仓库(overrides)或可复现生成,不靠本机插件 |
|
|
19
|
+
| 可混跑 | 登录仍走真实 SSO;未进契约的接口仍打真实服务 |
|
|
20
|
+
|
|
21
|
+
非目标:替代完整联调、模拟有状态审批流、覆盖未进契约的模块。
|
|
22
|
+
|
|
23
|
+
### 分层
|
|
24
|
+
|
|
25
|
+
| 层 | 归属 | 内容 |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| 共享 skill + 本文 | 能力包 | Agent 流程、配置契约、(后续)接入模板 |
|
|
28
|
+
| 项目配置 | `.star-allinone.json` → `prism` | 端口、路径、信封、脚本名 |
|
|
29
|
+
| 运行时 | 业务仓 | proxy、gen、`dev:mock`、overrides **业务数据** |
|
|
30
|
+
| 入口 overlay | `$custom-entry` | 意图委托 |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. 日常怎么用
|
|
35
|
+
|
|
36
|
+
脚本名以配置 `prism.devScript` 为准(默认 `dev:mock`):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pnpm dev:mock # 生成契约 + Prism + 前端(MOCK=1)
|
|
40
|
+
# 全量真实后端:用项目既有脚本(如星链 pnpm test)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
典型会:
|
|
44
|
+
|
|
45
|
+
1. 跑 `prism.genScript` → 写出 `prism.generatedSpec`(gitignore,勿手改)
|
|
46
|
+
2. 启动 Prism 读该文件
|
|
47
|
+
3. 以 MOCK 启动前端,按规则分流 `/api`
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 3. 分流模型(`proxyIntegration: umi`)
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
浏览器 → /api/...
|
|
55
|
+
↓
|
|
56
|
+
应用 proxy(MOCK=1)
|
|
57
|
+
↓
|
|
58
|
+
├─ authPathPrefixes 命中 → 真实后端
|
|
59
|
+
├─ path ∈ 正式契约(openapi) → Prism 127.0.0.1:<mockPort>
|
|
60
|
+
└─ 其它 /api/** → 真实后端
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
| 组件 | 典型路径 | 作用 |
|
|
64
|
+
| --- | --- | --- |
|
|
65
|
+
| 分流 | `config/prism.ts` + 应用 proxy | Prism vs 真实 |
|
|
66
|
+
| 生成 | `prism.genScript` | TS / overrides → 生成契约 |
|
|
67
|
+
| 启动 | `package.json` → `prism.devScript` | 一键 |
|
|
68
|
+
| 人工数据 | `prism.overridesDir/**` | 定制接口 |
|
|
69
|
+
| Agent | `shared-prism-mock`(经 entry) | 见下文 A–E |
|
|
70
|
+
|
|
71
|
+
依赖:`@stoplight/prism-cli`、`concurrently`(通常为 devDependencies)。
|
|
72
|
+
|
|
73
|
+
兼容:前置依赖接口用 overrides;半 mock(同页 Prism + 真实);Chrome 插件不作为团队主路径。
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 4. `.star-allinone.json` → `prism`
|
|
78
|
+
|
|
79
|
+
未配置或 `enabled !== true` → Agent **不改业务代码**(可说明如何启用)。
|
|
80
|
+
|
|
81
|
+
复用顶层:`openapi`(正式契约)、`serviceDir`、`project`。
|
|
82
|
+
|
|
83
|
+
| 字段 | 默认 | 说明 |
|
|
84
|
+
| --- | --- | --- |
|
|
85
|
+
| `enabled` | — | 启用必为 `true` |
|
|
86
|
+
| `mockPort` | `4010` | 可用 `MOCK_PORT` 覆盖 |
|
|
87
|
+
| `generatedSpec` | `swagger.prism.json` | gen 输出 |
|
|
88
|
+
| `overridesDir` | `mock/overrides` | 人工假数据根目录 |
|
|
89
|
+
| `authPathPrefixes` | `[]` | 始终真实 |
|
|
90
|
+
| `skipOpenapiPathPrefixes` | — | 不写入生成契约 |
|
|
91
|
+
| `skipServiceDirNames` | `[]` | 扫描服务目录跳过 |
|
|
92
|
+
| `devScript` | `dev:mock` | |
|
|
93
|
+
| `genScript` | `scripts/prism/gen-prism-mock.mjs` | |
|
|
94
|
+
| `proxyIntegration` | `umi` | `umi` \| `other` |
|
|
95
|
+
| `envelope.*` | code/msg/data/`0` | 响应信封 |
|
|
96
|
+
| `mockSourceExtensionKey` | `x-mock-source` | 星链现状可用 `x-starlink-mock-source` |
|
|
97
|
+
|
|
98
|
+
示例 JSON:能力包内 `skills/shared/prism-mock/references/example-prism-config.json`。
|
|
99
|
+
|
|
100
|
+
### Agent 读配置
|
|
101
|
+
|
|
102
|
+
1. 先读 `.star-allinone.json`;无 `prism.enabled === true` 则停止写代码。
|
|
103
|
+
2. 契约路径只用顶层 `openapi`。
|
|
104
|
+
3. overrides:`{overridesDir}/<path-without-leading-slash>/<method>.json`,`{param}` → `id`。
|
|
105
|
+
4. 禁止抄他仓 `authPathPrefixes` / pipelineId。
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 5. 假数据优先级与 overrides
|
|
110
|
+
|
|
111
|
+
生成时:`override` > Service 返回类型(TS)> 契约 `schema`。
|
|
112
|
+
生成可去掉 `security`、放宽 required,**不会**改正式契约。
|
|
113
|
+
|
|
114
|
+
路径:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
{overridesDir}/<api-path>/<method>.json
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
例(默认 overridesDir):
|
|
121
|
+
|
|
122
|
+
| 接口 | 文件 |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| `GET /api/v1/system-configs` | `mock/overrides/api/v1/system-configs/get.json` |
|
|
125
|
+
| `GET /api/v1/users/me` | `mock/overrides/api/v1/users/me/get.json` |
|
|
126
|
+
| `GET /api/v1/ip-pools/{id}` | `mock/overrides/api/v1/ip-pools/id/get.json` |
|
|
127
|
+
|
|
128
|
+
完整信封推荐;也可只写 `data`。列表枚举等须与页面约定一致。
|
|
129
|
+
|
|
130
|
+
**不要:** 手改生成物;在正式契约写 mock examples;在页面/Service import 假数据;清空 overrides「刷新」。
|
|
131
|
+
|
|
132
|
+
查看:有 override 打开 JSON;否则看生成契约 examples;或 `curl` mock 端口。
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 6. 与 `shared-api-to-service` mock 的边界
|
|
137
|
+
|
|
138
|
+
| | Prism | api-to-service mock |
|
|
139
|
+
| --- | --- | --- |
|
|
140
|
+
| 目的 | 本地 Prism + 代理 | 单接口对话/文件 JSON |
|
|
141
|
+
| 假数据主路径 | `overridesDir` + 生成契约 | 非 Prism |
|
|
142
|
+
|
|
143
|
+
历史 `mock/api/**`(非 overrides)不得当作 Prism 源。
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 7. Agent 流程(A–E)
|
|
148
|
+
|
|
149
|
+
### A. 说明 / 排查
|
|
150
|
+
|
|
151
|
+
`pnpm <devScript>`;按分流表解释;不建议改页面/Service/插件主路径。
|
|
152
|
+
|
|
153
|
+
### B. 定制接口
|
|
154
|
+
|
|
155
|
+
确认 path 在正式契约 → 写 override → 重跑 devScript;可用 gen 校验来源标记。
|
|
156
|
+
|
|
157
|
+
### C. 刷新生成物
|
|
158
|
+
|
|
159
|
+
改 typings / `MFRequest` 泛型 → 重跑 gen/devScript。
|
|
160
|
+
|
|
161
|
+
### D. 初始化 / 接入
|
|
162
|
+
|
|
163
|
+
对齐清单:`prism` 配置、分流文件、proxy、gen/devScript、overrides、entry 委托。
|
|
164
|
+
(模板拷贝:后续迭代;当前以业务仓已有落地为准。)
|
|
165
|
+
|
|
166
|
+
验收:devScript 可起;契约接口可 curl;非 mock 脚本仍全真实。
|
|
167
|
+
|
|
168
|
+
### E. 契约更新后刷新
|
|
169
|
+
|
|
170
|
+
正式契约与 Service 已更新 → gen → **保留** overrides → 汇报计数与可能过期 path。
|
|
171
|
+
|
|
172
|
+
### 硬约束
|
|
173
|
+
|
|
174
|
+
- 禁止把流程抄进 `custom-*` 再改一版;差异用 `prism` + entry。
|
|
175
|
+
- 禁止改 `shared-*`。
|
|
176
|
+
- 单接口 Service → `shared-api-to-service`。
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 8. 对话示例(经 `$custom-entry`)
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
使用 $custom-entry。契约已更新,请重建 Service 并刷新 Prism mock(保留 overrides)。
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```text
|
|
187
|
+
使用 $custom-entry,检查并补齐本仓 Prism 能力(config/proxy/gen/devScript/overrides/委托),不要改业务页面。
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
```text
|
|
191
|
+
使用 $custom-entry,为 GET /api/v1/users/me 增加/更新 Prism override,数据如下:{ ... }
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 9. 验收清单
|
|
197
|
+
|
|
198
|
+
- [ ] `pnpm <devScript>` 可启动
|
|
199
|
+
- [ ] curl 契约内接口有预期 JSON
|
|
200
|
+
- [ ] 登录 / SSO 仍打真实服务
|
|
201
|
+
- [ ] 未进契约的接口仍打真实
|
|
202
|
+
- [ ] 非 mock 脚本行为与接入前一致
|
|
203
|
+
- [ ] 业务代码无新增 mock 分支
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 10. 收口步骤(仅 Prism)
|
|
208
|
+
|
|
209
|
+
| 步骤 | 动作 | 状态 |
|
|
210
|
+
| --- | --- | --- |
|
|
211
|
+
| P0 | 本文进 `docs/skills/`;skill 骨架;sync 写入 `references/guide.md` | ✅ |
|
|
212
|
+
| P1 | 业务仓写入 `prism` 配置段 | 待做 |
|
|
213
|
+
| P2 | 能力包 `templates/` 参数化运行时 | 待做 |
|
|
214
|
+
| P3 | 发版 → 业务仓升级 + sync | 待做(本地已可 sync) |
|
|
215
|
+
| P4 | entry 委托 `shared-prism-mock` | 待做 |
|
|
216
|
+
| P5 | 业务仓删除 `docs/` 技能文档,只读 sync 副本 | ✅ |
|
|
217
|
+
| P6 | 删除/瘦身 `custom-prism-mock`;回归 | 待做 |
|
|
218
|
+
|
|
219
|
+
**不做:** 整单 workflow、禅道、强制星眼接入。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mingfuyun/star-allinone",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.10",
|
|
4
4
|
"description": "星系运维前端能力包",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"files": [
|
|
30
30
|
"dist",
|
|
31
|
+
"docs",
|
|
31
32
|
"README.md",
|
|
32
33
|
"scripts/cli.js",
|
|
33
34
|
"scripts/gen",
|
package/scripts/cli.js
CHANGED
|
@@ -24,6 +24,8 @@ function usage() {
|
|
|
24
24
|
Run from a business project containing .star-allinone.json.
|
|
25
25
|
|
|
26
26
|
skills sync writes package skills/shared/* to <project>/.agents/skills/shared-*.
|
|
27
|
+
If docs/skills/<name>.md exists, it is copied to shared-<name>/references/guide.md.
|
|
28
|
+
docs/skills/overview.md is copied to shared-project-conventions/references/skills-overview.md.
|
|
27
29
|
It never writes ~/.codex/skills and never modifies custom-* skills.
|
|
28
30
|
If <project>/AGENTS.md is missing, it copies examples/AGENTS.md once.
|
|
29
31
|
|
|
@@ -121,6 +123,39 @@ function copyTree(source, target, variables, options, relativeRoot) {
|
|
|
121
123
|
}
|
|
122
124
|
}
|
|
123
125
|
|
|
126
|
+
function skillGuideSource(skillName) {
|
|
127
|
+
return path.join(root, 'docs', 'skills', `${skillName}.md`);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Copy pack docs/skills/<name>.md into synced skill as references/guide.md (single doc source). */
|
|
131
|
+
function copySkillGuideDoc(skillName, skillTarget, variables, options, relativeRoot) {
|
|
132
|
+
const source = skillGuideSource(skillName);
|
|
133
|
+
if (!fs.existsSync(source)) return;
|
|
134
|
+
const targetPath = path.join(skillTarget, 'references', 'guide.md');
|
|
135
|
+
const relativePath = path.relative(relativeRoot, targetPath);
|
|
136
|
+
console.log(`${options.dryRun ? '[dry-run] ' : ''}${relativePath} (from docs/skills/${skillName}.md)`);
|
|
137
|
+
if (options.dryRun) return;
|
|
138
|
+
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
|
|
139
|
+
const banner =
|
|
140
|
+
`<!-- 维护源:能力包 docs/skills/${skillName}.md — 勿在业务仓改此副本 -->\n\n`;
|
|
141
|
+
fs.writeFileSync(targetPath, banner + render(fs.readFileSync(source, 'utf8'), variables));
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function copySkillsOverviewDoc(destination, options) {
|
|
145
|
+
const source = path.join(root, 'docs', 'skills', 'overview.md');
|
|
146
|
+
if (!fs.existsSync(source)) return;
|
|
147
|
+
const conventions = path.join(destination, `${DEFAULT_PREFIX}project-conventions`);
|
|
148
|
+
if (!fs.existsSync(conventions) && !options.dryRun) return;
|
|
149
|
+
const targetPath = path.join(conventions, 'references', 'skills-overview.md');
|
|
150
|
+
const relativePath = path.relative(destination, targetPath);
|
|
151
|
+
console.log(`${options.dryRun ? '[dry-run] ' : ''}${relativePath} (from docs/skills/overview.md)`);
|
|
152
|
+
if (options.dryRun) return;
|
|
153
|
+
if (!fs.existsSync(conventions)) return;
|
|
154
|
+
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
|
|
155
|
+
const banner = '<!-- 维护源:能力包 docs/skills/overview.md — 勿在业务仓改此副本 -->\n\n';
|
|
156
|
+
fs.writeFileSync(targetPath, banner + fs.readFileSync(source, 'utf8'));
|
|
157
|
+
}
|
|
158
|
+
|
|
124
159
|
function copySkill(source, destination, skillName, prefix, variables, options) {
|
|
125
160
|
const publicName = publicSkillName(skillName, prefix);
|
|
126
161
|
if (publicName.startsWith(CUSTOM_PREFIX)) {
|
|
@@ -132,6 +167,7 @@ function copySkill(source, destination, skillName, prefix, variables, options) {
|
|
|
132
167
|
fs.mkdirSync(skillTarget, { recursive: true });
|
|
133
168
|
}
|
|
134
169
|
copyTree(source, skillTarget, { ...variables, sharedSkillName: publicName }, options, destination);
|
|
170
|
+
copySkillGuideDoc(skillName, skillTarget, { ...variables, sharedSkillName: publicName }, options, destination);
|
|
135
171
|
}
|
|
136
172
|
|
|
137
173
|
function pruneStaleShared(destination, prefix, syncedNames, options) {
|
|
@@ -178,6 +214,7 @@ function syncProject(options) {
|
|
|
178
214
|
for (const skillName of skills) {
|
|
179
215
|
copySkill(path.join(skillsRoot, skillName), destination, skillName, prefix, variables, options);
|
|
180
216
|
}
|
|
217
|
+
copySkillsOverviewDoc(destination, options);
|
|
181
218
|
pruneStaleShared(destination, prefix, syncedNames, options);
|
|
182
219
|
writeSyncStamp(destination, prefix, syncedNames, options);
|
|
183
220
|
seedAgentsMarkdown(target, options);
|
package/scripts/gen/doctor.js
CHANGED
|
@@ -15,6 +15,21 @@ const KNOWN_CONFIG_KEYS = new Set([
|
|
|
15
15
|
'publishPipelineId',
|
|
16
16
|
'sharedSkills',
|
|
17
17
|
'variables',
|
|
18
|
+
'prism',
|
|
19
|
+
]);
|
|
20
|
+
const PRISM_KNOWN_KEYS = new Set([
|
|
21
|
+
'enabled',
|
|
22
|
+
'mockPort',
|
|
23
|
+
'generatedSpec',
|
|
24
|
+
'overridesDir',
|
|
25
|
+
'authPathPrefixes',
|
|
26
|
+
'skipOpenapiPathPrefixes',
|
|
27
|
+
'skipServiceDirNames',
|
|
28
|
+
'devScript',
|
|
29
|
+
'genScript',
|
|
30
|
+
'proxyIntegration',
|
|
31
|
+
'envelope',
|
|
32
|
+
'mockSourceExtensionKey',
|
|
18
33
|
]);
|
|
19
34
|
const IGNORE_DIRS = new Set([
|
|
20
35
|
'node_modules',
|
|
@@ -167,6 +182,26 @@ function runDoctor(cwd, options = {}) {
|
|
|
167
182
|
findings.push(check(true, 'ok', `publishPipelineId ${config.publishPipelineId}`));
|
|
168
183
|
}
|
|
169
184
|
|
|
185
|
+
if (config.prism != null) {
|
|
186
|
+
if (typeof config.prism !== 'object' || Array.isArray(config.prism)) {
|
|
187
|
+
findings.push(check(false, 'error', 'Config "prism" must be an object'));
|
|
188
|
+
} else {
|
|
189
|
+
const unknownPrism = Object.keys(config.prism).filter((key) => !PRISM_KNOWN_KEYS.has(key));
|
|
190
|
+
if (unknownPrism.length) {
|
|
191
|
+
findings.push(check(false, 'warn', `Unknown prism keys: ${unknownPrism.join(', ')}`));
|
|
192
|
+
}
|
|
193
|
+
if (config.prism.enabled === true) {
|
|
194
|
+
findings.push(check(true, 'ok', 'prism.enabled true'));
|
|
195
|
+
} else if (config.prism.enabled === false) {
|
|
196
|
+
findings.push(check(true, 'ok', 'prism.enabled false'));
|
|
197
|
+
} else if (config.prism.enabled == null) {
|
|
198
|
+
findings.push(check(false, 'warn', 'prism present but "enabled" missing; shared-prism-mock will not edit code'));
|
|
199
|
+
} else {
|
|
200
|
+
findings.push(check(false, 'warn', 'prism.enabled should be boolean'));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
170
205
|
const tableFile = existsAny(root, [
|
|
171
206
|
'src/components/CommonTable/MFProTable.tsx',
|
|
172
207
|
'src/components/CommonTable/MFProTable.ts',
|
package/skills/README.md
CHANGED
|
@@ -50,17 +50,23 @@ Cursor / Codex 的常驻说明只放仓库根 `AGENTS.md`(模板见 `examples/
|
|
|
50
50
|
|
|
51
51
|
```text
|
|
52
52
|
@mingfuyun/star-allinone/
|
|
53
|
+
├── docs/skills/ # 技能说明唯一维护源(人读 + Agent)
|
|
54
|
+
│ ├── overview.md
|
|
55
|
+
│ └── prism-mock.md
|
|
53
56
|
└── skills/
|
|
54
57
|
└── shared/
|
|
55
|
-
├── api-to-service/
|
|
56
|
-
├── design-to-page/
|
|
57
|
-
├── review-and-submit/
|
|
58
|
-
├── publish-test/
|
|
59
|
-
├── tracking/
|
|
60
|
-
├──
|
|
61
|
-
|
|
58
|
+
├── api-to-service/
|
|
59
|
+
├── design-to-page/
|
|
60
|
+
├── review-and-submit/
|
|
61
|
+
├── publish-test/
|
|
62
|
+
├── tracking/
|
|
63
|
+
├── prism-mock/ # SKILL;正文 sync 自 docs/skills/prism-mock.md
|
|
64
|
+
├── project-conventions/
|
|
65
|
+
└── i-have-adhd/
|
|
62
66
|
```
|
|
63
67
|
|
|
68
|
+
技能长文只改 `docs/skills/`。`skills sync` 会把 `docs/skills/<name>.md` 写入业务仓 `shared-<name>/references/guide.md`,把 `overview.md` 写入 `shared-project-conventions/references/skills-overview.md`。业务仓不要再维护 `docs/prism-mock.md` 等长文副本。
|
|
69
|
+
|
|
64
70
|
公共入口写死两边已对齐的硬规则,例如:页面走 `MFRequest`、DTO 放 namespace typings、表格用业务仓 `@/components/CommonTable/MFProTable`(不要从包里找 `MFTablePro`)、`ProForm`、弹层从 `@mingfuyun/star-allinone` 导入 `BaseModal` / `CustomDrawer` / `HocModal`、`await` 必须 try/catch、禁止无说明的 `any`、React 18。
|
|
65
71
|
|
|
66
72
|
接入或升级后跑 `pnpm exec star-allinone doctor`。
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: {{sharedSkillName}}
|
|
3
|
+
description: >-
|
|
4
|
+
Internal. Local Prism mock: proxy routing, generated prism spec, mock/overrides, init scaffolding, and post-contract refresh. Prefer project $custom-entry. Use when user asks for Prism, dev:mock, 定制 mock, overrides, 初始化 Prism, swagger/OpenAPI 更新后刷新 mock, 契约前置, or Chrome mock 替代.
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Prism Mock(共享)
|
|
9
|
+
|
|
10
|
+
不是用户入口。业务仓对话经 `$custom-entry` 委托本 skill。
|
|
11
|
+
|
|
12
|
+
## 唯一文档
|
|
13
|
+
|
|
14
|
+
| 场景 | 路径 |
|
|
15
|
+
| --- | --- |
|
|
16
|
+
| **维护源(只改这里)** | 能力包 [`docs/skills/prism-mock.md`](../../../../docs/skills/prism-mock.md) |
|
|
17
|
+
| 业务仓 sync 后 | `.agents/skills/{{sharedSkillName}}/references/guide.md` |
|
|
18
|
+
|
|
19
|
+
配置示例:[references/example-prism-config.json](references/example-prism-config.json)
|
|
20
|
+
|
|
21
|
+
## 执行前
|
|
22
|
+
|
|
23
|
+
1. 完整 Read 上方「唯一文档」(业务仓读 `references/guide.md`;能力包开发读 `docs/skills/prism-mock.md`)。
|
|
24
|
+
2. 读业务仓 `.star-allinone.json`;仅当 `prism.enabled === true` 才改 Prism 相关代码。
|
|
25
|
+
3. 契约用顶层 `openapi`;脚本/目录用 `prism.*`。
|
|
26
|
+
|
|
27
|
+
## 硬约束(摘要)
|
|
28
|
+
|
|
29
|
+
- 禁止在业务仓维护技能 `docs/`;只读 sync 后的 `references/guide.md`。
|
|
30
|
+
- 禁止改 `shared-*`;禁止页面/Service 写死 mock 主路径;禁止手改生成物、清空 overrides。
|
|
31
|
+
- 单接口 Service → `shared-api-to-service`。
|
|
32
|
+
- **不包含**整单 workflow / `shared-dev-flow`。
|
|
33
|
+
|
|
34
|
+
## User-facing output
|
|
35
|
+
|
|
36
|
+
需要时可读 `.agents/skills/shared-i-have-adhd/i-have-adhd.md`。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project": "example-frontend",
|
|
3
|
+
"publicSkillPrefix": "shared-",
|
|
4
|
+
"serviceDir": "src/services",
|
|
5
|
+
"openapi": "swagger.json",
|
|
6
|
+
"publishPipelineId": "REPLACE_ME",
|
|
7
|
+
"prism": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"mockPort": 4010,
|
|
10
|
+
"generatedSpec": "swagger.prism.json",
|
|
11
|
+
"overridesDir": "mock/overrides",
|
|
12
|
+
"authPathPrefixes": ["/api/v1/auth/", "/oauth2/"],
|
|
13
|
+
"skipOpenapiPathPrefixes": ["/api/v1/auth/", "/oauth2"],
|
|
14
|
+
"skipServiceDirNames": ["SystemManagement"],
|
|
15
|
+
"devScript": "dev:mock",
|
|
16
|
+
"genScript": "scripts/prism/gen-prism-mock.mjs",
|
|
17
|
+
"proxyIntegration": "umi",
|
|
18
|
+
"envelope": {
|
|
19
|
+
"codeField": "code",
|
|
20
|
+
"messageFields": ["msg", "message"],
|
|
21
|
+
"dataField": "data",
|
|
22
|
+
"successCode": 0
|
|
23
|
+
},
|
|
24
|
+
"mockSourceExtensionKey": "x-mock-source"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
File without changes
|