@yss123/cage-cli 0.3.2 → 0.4.0
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/README.md +1 -1
- package/dist/analyze.js +3 -0
- package/dist/analyze.js.map +1 -1
- package/dist/capabilities.js +10 -0
- package/dist/capabilities.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js.map +1 -1
- package/dist/context.js +2 -2
- package/dist/context.js.map +1 -1
- package/dist/doctor.js +1 -1
- package/dist/doctor.js.map +1 -1
- package/dist/findings.d.ts +1 -1
- package/dist/findings.js +2 -2
- package/dist/findings.js.map +1 -1
- package/dist/graph-business.d.ts +11 -8
- package/dist/graph-business.js +16 -16
- package/dist/graph-business.js.map +1 -1
- package/dist/graph-relations.js +3 -5
- package/dist/graph-relations.js.map +1 -1
- package/dist/impact.js +1 -4
- package/dist/impact.js.map +1 -1
- package/dist/ontology-names.d.ts +17 -0
- package/dist/ontology-names.js +42 -0
- package/dist/ontology-names.js.map +1 -0
- package/dist/sync.d.ts +5 -1
- package/dist/sync.js +16 -9
- package/dist/sync.js.map +1 -1
- package/graph-ui/app.js +3 -2
- package/graph-ui/business.js +11 -3
- package/graph-ui/graph-business.js +16 -16
- package/graph-ui/graph-relations.js +3 -5
- package/package.json +6 -6
- package/templates/app/.agents/skills/cage-development/SKILL.md +1 -1
- package/templates/app/AGENTS.md +12 -9
- package/templates/app/README.md +2 -2
- package/templates/app/apps/api/package.json +2 -2
- package/templates/app/apps/web/package.json +3 -1
- package/templates/app/apps/web/src/app/styles/global.css +12 -11
- package/templates/app/apps/web/src/main.tsx +18 -7
- package/templates/app/apps/web/src/shared/lib/error-message.ts +1 -1
- package/templates/app/apps/web/src/shared/ui/approval-member-picker.tsx +1 -1
- package/templates/app/cage.config.json +2 -1
- package/templates/app/docs/README.md +6 -4
- package/templates/app/docs/development/README.md +21 -5
- package/templates/app/docs/development/examples/note/note.ts +8 -4
- package/templates/app/docs/development/examples/purchase-example.md +5 -5
- package/templates/app/docs/development/getting-started/architecture.md +5 -5
- package/templates/app/docs/development/getting-started/workflow.md +17 -23
- package/templates/app/docs/development/guides/approvals.md +4 -4
- package/templates/app/docs/development/guides/business-collaboration.md +3 -1
- package/templates/app/docs/development/guides/frontend-ui.md +30 -0
- package/templates/app/docs/development/guides/intelligence.md +14 -12
- package/templates/app/docs/development/guides/ontology-modeling.md +83 -0
- package/templates/app/docs/development/guides/recipes.md +28 -14
- package/templates/app/docs/development/guides/relations.md +31 -8
- package/templates/app/docs/development/reference/commenting.md +7 -4
- package/templates/app/docs/development/reference/primitives.md +5 -3
- package/templates/app/docs/development/skills/cage-development/SKILL.md +30 -20
- package/templates/app/docs/development/tools/diagnostics.md +4 -1
- package/templates/app/docs/development/tools/ontology-context.md +1 -1
- package/templates/app/docs/development/tools/troubleshooting.md +3 -3
- package/templates/app/docs/errors/CAGE-APPR-007.md +1 -1
- package/templates/app/docs/errors/CAGE-GRANT-001.md +18 -12
- package/templates/app/docs/errors/CAGE-GRANT-002.md +2 -2
- package/templates/app/docs/errors/CAGE-GRANT-003.md +3 -3
- package/templates/app/docs/errors/CAGE-ONTOLOGY-001.md +52 -0
- package/templates/app/docs/errors/CAGE-STATE-003.md +1 -1
- package/templates/app/docs/errors/CAGE-SYNC-001.md +2 -2
- package/templates/app/docs/errors/README.md +7 -1
- package/templates/app/docs/errors/runtime.md +1 -1
- package/templates/app/package.json +3 -3
- package/templates/app/packages/contracts/package.json +1 -1
- package/templates/app/packages/contracts/src/aggregates/role/index.ts +2 -2
- package/templates/app/packages/contracts/src/aggregates/user/index.ts +3 -3
- package/templates/app/packages/domain/package.json +5 -5
- package/templates/app/packages/domain/src/modules/purchase/approval-members.ts +1 -1
- package/templates/app/packages/domain/src/modules/purchase/approvals.ts +2 -2
- package/templates/app/packages/domain/src/modules/purchase/intelligence.test.ts +4 -4
- package/templates/app/packages/domain/src/modules/purchase/purchase-order.test.ts +10 -17
- package/templates/app/packages/domain/src/modules/purchase/purchase-order.ts +4 -5
- package/templates/app/packages/domain/src/workflows/purchase-process.ts +1 -1
- package/templates/blank/.agents/skills/cage-development/SKILL.md +1 -1
- package/templates/blank/AGENTS.md +12 -9
- package/templates/blank/apps/api/package.json +1 -1
- package/templates/blank/apps/web/package.json +3 -1
- package/templates/blank/apps/web/src/app/styles/global.css +6 -5
- package/templates/blank/apps/web/src/main.tsx +18 -7
- package/templates/blank/cage.config.json +1 -0
- package/templates/blank/docs/README.md +6 -4
- package/templates/blank/docs/development/README.md +21 -5
- package/templates/blank/docs/development/examples/note/note.ts +8 -4
- package/templates/blank/docs/development/examples/purchase-example.md +5 -5
- package/templates/blank/docs/development/getting-started/architecture.md +5 -5
- package/templates/blank/docs/development/getting-started/workflow.md +17 -23
- package/templates/blank/docs/development/guides/approvals.md +4 -4
- package/templates/blank/docs/development/guides/business-collaboration.md +3 -1
- package/templates/blank/docs/development/guides/frontend-ui.md +30 -0
- package/templates/blank/docs/development/guides/intelligence.md +14 -12
- package/templates/blank/docs/development/guides/ontology-modeling.md +83 -0
- package/templates/blank/docs/development/guides/recipes.md +28 -14
- package/templates/blank/docs/development/guides/relations.md +31 -8
- package/templates/blank/docs/development/reference/commenting.md +7 -4
- package/templates/blank/docs/development/reference/primitives.md +5 -3
- package/templates/blank/docs/development/skills/cage-development/SKILL.md +30 -20
- package/templates/blank/docs/development/tools/diagnostics.md +4 -1
- package/templates/blank/docs/development/tools/ontology-context.md +1 -1
- package/templates/blank/docs/development/tools/troubleshooting.md +3 -3
- package/templates/blank/docs/errors/CAGE-APPR-007.md +1 -1
- package/templates/blank/docs/errors/CAGE-GRANT-001.md +18 -12
- package/templates/blank/docs/errors/CAGE-GRANT-002.md +2 -2
- package/templates/blank/docs/errors/CAGE-GRANT-003.md +3 -3
- package/templates/blank/docs/errors/CAGE-ONTOLOGY-001.md +52 -0
- package/templates/blank/docs/errors/CAGE-STATE-003.md +1 -1
- package/templates/blank/docs/errors/CAGE-SYNC-001.md +2 -2
- package/templates/blank/docs/errors/README.md +7 -1
- package/templates/blank/docs/errors/runtime.md +1 -1
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/styles/global.css +12 -11
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/main.tsx +18 -7
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/lib/error-message.ts +1 -1
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/approval-member-picker.tsx +1 -1
- package/templates/blank/docs/examples/purchase-admin/cage.config.json +2 -1
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/role/index.ts +2 -2
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/user/index.ts +3 -3
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/approval-members.ts +1 -1
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/approvals.ts +2 -2
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/intelligence.test.ts +4 -4
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/purchase-order.test.ts +10 -17
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/purchase-order.ts +4 -5
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/workflows/purchase-process.ts +1 -1
- package/templates/blank/package.json +3 -3
- package/templates/blank/packages/contracts/package.json +1 -1
- package/templates/blank/packages/contracts/src/aggregates/role/index.ts +2 -2
- package/templates/blank/packages/contracts/src/aggregates/user/index.ts +3 -3
- package/templates/blank/packages/domain/package.json +5 -5
package/dist/impact.js
CHANGED
|
@@ -194,16 +194,13 @@ export function impact(base, head, files, tests = [], projectTestFiles = []) {
|
|
|
194
194
|
const headById = new Map(head.nodes.map((n) => [n.id, n]));
|
|
195
195
|
for (const c of diff.changed) {
|
|
196
196
|
if (c.after.kind === 'field') {
|
|
197
|
-
const ceilings = head.edges.filter((e) => e.kind === 'uses' && e.to === c.after.id && String(e.as).includes('ceiling'));
|
|
198
|
-
if (ceilings.length)
|
|
199
|
-
confirm.push(`角色上的审批额度参数是否按 ${c.after.id} 的新口径调整`);
|
|
200
197
|
if (c.before.attrs.description !== c.after.attrs.description)
|
|
201
198
|
confirm.push(`${c.after.id} 的口径说明变了:下游报表、外部系统是否同步`);
|
|
202
199
|
}
|
|
203
200
|
}
|
|
204
201
|
for (const n of diff.added) {
|
|
205
202
|
if (n.kind === 'command')
|
|
206
|
-
confirm.push(`新能力点 ${n.id}
|
|
203
|
+
confirm.push(`新能力点 ${n.id} 由超级管理员自动拥有,普通角色需要在 /admin 显式授权`);
|
|
207
204
|
}
|
|
208
205
|
for (const n of [...affected].map((id) => headById.get(id)).filter((x) => !!x)) {
|
|
209
206
|
if (n.kind === 'outbound' && !start.has(n.id))
|
package/dist/impact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact.js","sourceRoot":"","sources":["../src/impact.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"impact.js","sourceRoot":"","sources":["../src/impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 检查应用本体中可直接命名的业务节点,供 analyze 统一接入 check、gen、verify 和图谱。
|
|
3
|
+
* 名称取自与图谱相同的声明文案及 graph.labels;字段和状态仅借所属聚合定位,不伪造成员行号。
|
|
4
|
+
* 只报告当前项目可定位的声明,依赖包由其维护者负责;完整性不证明名称含义或业务关系正确。
|
|
5
|
+
*/
|
|
6
|
+
import type { CageConfig } from './config.js';
|
|
7
|
+
import type { Finding } from './findings.js';
|
|
8
|
+
import type { GraphPresentation } from './graph-presentation.js';
|
|
9
|
+
import type { Ontology } from './ontology.js';
|
|
10
|
+
/**
|
|
11
|
+
* 检查当前应用声明是否有非空的结构化业务名称,缺失时保留稳定节点 key 和源码定位。
|
|
12
|
+
* @param cfg graph.naming 为 required 时产生错误;缺省或 warn 时只警告,兼容旧应用。
|
|
13
|
+
* @param graph 已抽取本体;本函数不会变更节点、关系、标识或哈希。
|
|
14
|
+
* @param presentation 与图谱同一次抽取产生的名称,配置短标题优先于声明文案。
|
|
15
|
+
* @returns 每个缺名节点一条 CAGE-ONTOLOGY-001;不推断语言、不从注释或前端反推业务名称。
|
|
16
|
+
*/
|
|
17
|
+
export declare function checkOntologyNames(cfg: CageConfig, graph: Ontology, presentation: GraphPresentation): Finding[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** 支持结构化名称的节点及其真实填写位置;没有通用 description 的协作节点不强加不存在的选项。 */
|
|
2
|
+
const namingSources = {
|
|
3
|
+
aggregate: 'aggregate 的 description',
|
|
4
|
+
field: '字段的 .describe(...) 或关系选项 description',
|
|
5
|
+
state: '所属聚合的 states(..., { labels: { 状态标识: 业务名称 } })',
|
|
6
|
+
command: 'command 的 description',
|
|
7
|
+
event: 'event 第三个参数中的 description',
|
|
8
|
+
query: 'query 的 description',
|
|
9
|
+
job: 'job 的 description',
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* 检查当前应用声明是否有非空的结构化业务名称,缺失时保留稳定节点 key 和源码定位。
|
|
13
|
+
* @param cfg graph.naming 为 required 时产生错误;缺省或 warn 时只警告,兼容旧应用。
|
|
14
|
+
* @param graph 已抽取本体;本函数不会变更节点、关系、标识或哈希。
|
|
15
|
+
* @param presentation 与图谱同一次抽取产生的名称,配置短标题优先于声明文案。
|
|
16
|
+
* @returns 每个缺名节点一条 CAGE-ONTOLOGY-001;不推断语言、不从注释或前端反推业务名称。
|
|
17
|
+
*/
|
|
18
|
+
export function checkOntologyNames(cfg, graph, presentation) {
|
|
19
|
+
const aggregates = new Map(graph.nodes.filter(node => node.kind === 'aggregate').map(node => [node.id, node]));
|
|
20
|
+
return graph.nodes.flatMap((node) => {
|
|
21
|
+
const source = namingSources[node.kind];
|
|
22
|
+
if (!source)
|
|
23
|
+
return [];
|
|
24
|
+
// 成员节点没有独立源码位置;只回到当前应用的聚合声明,不检查框架依赖的默认生命周期。
|
|
25
|
+
const owner = node.kind === 'field' || node.kind === 'state' ? aggregates.get(node.id.split('.')[0]) : node;
|
|
26
|
+
if (!owner?.file)
|
|
27
|
+
return [];
|
|
28
|
+
const key = `${node.kind}:${node.id}`;
|
|
29
|
+
// 与 nodeLabel 一致地选择展示来源,但不能把最后回退的机器 ID 当作已经填写的名称。
|
|
30
|
+
const label = presentation.labels[key] || node.attrs.title || node.attrs.description;
|
|
31
|
+
if (typeof label === 'string' && label.trim())
|
|
32
|
+
return [];
|
|
33
|
+
return [{
|
|
34
|
+
code: 'CAGE-ONTOLOGY-001',
|
|
35
|
+
severity: cfg.graph?.naming === 'required' ? 'error' : 'warning',
|
|
36
|
+
at: `${owner.file}${owner.line ? `:${owner.line}` : ''}`,
|
|
37
|
+
reason: `${key} 缺少结构化业务名称,图谱只能显示机器标识。${owner !== node ? '位置指向所属聚合,请在其中查找该成员。' : ''}`,
|
|
38
|
+
fix: `按用户业务用语填写${source};已有声明可用 cage.config.json 的 graph.labels[${JSON.stringify(key)}] 覆盖。普通注释和页面文案不会被抽取,填写位置与验收见 docs/development/guides/ontology-modeling.md。`,
|
|
39
|
+
}];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ontology-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology-names.js","sourceRoot":"","sources":["../src/ontology-names.ts"],"names":[],"mappings":"AAUA,0DAA0D;AAC1D,MAAM,aAAa,GAA6C;IAC9D,SAAS,EAAE,yBAAyB;IACpC,KAAK,EAAE,sCAAsC;IAC7C,KAAK,EAAE,+CAA+C;IACtD,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,2BAA2B;IAClC,KAAK,EAAE,qBAAqB;IAC5B,GAAG,EAAE,mBAAmB;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAe,EAAE,KAAe,EAAE,YAA+B;IAClG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/G,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAa,EAAE;QAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,4CAA4C;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5G,IAAI,CAAC,KAAK,EAAE,IAAI;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACtC,kDAAkD;QAClD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QACzD,OAAO,CAAC;gBACN,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBAChE,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxD,MAAM,EAAE,GAAG,GAAG,yBAAyB,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpF,GAAG,EAAE,YAAY,MAAM,2CAA2C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4EAA4E;aAClK,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/sync.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { type CageConfig } from './config.js';
|
|
2
2
|
import type { Finding } from './findings.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* 当前 CLI 版本的项目约束与资料入口,由 create/sync/upgrade 写入 AGENTS 托管区。
|
|
5
|
+
* 工作顺序由唯一 Skill 正文维护,这里保留必须遵守的边界和编码前的理解要求,
|
|
6
|
+
* 避免另写一套实施流程;该文本只指导 agent,不启用服务、不改变授权或数据库。
|
|
7
|
+
*/
|
|
4
8
|
export declare const managedBlock: string;
|
|
5
9
|
/**
|
|
6
10
|
* 将现有文档中的唯一托管区替换为目标版本,返回完整文本而不写文件。
|
package/dist/sync.js
CHANGED
|
@@ -8,7 +8,11 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
8
8
|
import { dirname } from 'node:path';
|
|
9
9
|
import { abs } from './config.js';
|
|
10
10
|
import { VERSION } from './version.js';
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* 当前 CLI 版本的项目约束与资料入口,由 create/sync/upgrade 写入 AGENTS 托管区。
|
|
13
|
+
* 工作顺序由唯一 Skill 正文维护,这里保留必须遵守的边界和编码前的理解要求,
|
|
14
|
+
* 避免另写一套实施流程;该文本只指导 agent,不启用服务、不改变授权或数据库。
|
|
15
|
+
*/
|
|
12
16
|
export const managedBlock = `<!-- cage:begin v${VERSION} -->
|
|
13
17
|
## Cage 业务开发约定(框架托管)
|
|
14
18
|
|
|
@@ -16,7 +20,7 @@ export const managedBlock = `<!-- cage:begin v${VERSION} -->
|
|
|
16
20
|
|
|
17
21
|
本项目使用 \`@yss123/cage-*\`,业务写在本项目。先读项目说明指定的教材;独立项目默认入口是 \`docs/development/README.md\`。
|
|
18
22
|
|
|
19
|
-
开始 Cage 业务开发或排错时,加载 \`docs/development/skills/cage-development/SKILL.md
|
|
23
|
+
开始 Cage 业务开发或排错时,加载 \`docs/development/skills/cage-development/SKILL.md\`,统一按“理解需求 → 澄清 → 查证能力 → 说明实现映射 → 编码 → 验收”工作。首次学习配合 \`docs/development/getting-started/first-feature.md\`;已熟悉时只读受影响专题,普通样式/文案改动无需重走业务建模。
|
|
20
24
|
|
|
21
25
|
支持 Agent Skills 的工具可发现 \`.agents/skills/cage-development\`;其他工具直接读取上述 Markdown,使用相同流程。教材随框架版本分发,均为本地文件,不需要额外服务、模型或索引。框架仓库范例使用项目说明指定的规范教材位置。
|
|
22
26
|
|
|
@@ -27,13 +31,13 @@ export const managedBlock = `<!-- cage:begin v${VERSION} -->
|
|
|
27
31
|
- 角色、能力、数据范围、调用身份与业务约束分别建模。前端 can() 只影响显示,新增能力不自动授给生产角色;审批选人不授予能力。
|
|
28
32
|
- 页面依赖生成契约及客户端。表单、弹窗等临时状态留在前端;正式业务数据和流程结果通过服务端读写。实际记录不能用模拟仓储或固定统计替代。
|
|
29
33
|
|
|
30
|
-
###
|
|
34
|
+
### 编码前的依据
|
|
35
|
+
|
|
36
|
+
业务疑点按 \`docs/development/guides/business-collaboration.md\` 提出选项、影响和推荐,让用户选择;沿用已明确的规则与授权。API 和当前行为由 agent 查证,普通技术方案自行决定;等待业务答案时推进独立部分。
|
|
37
|
+
|
|
38
|
+
写代码前按 Skill 简述“已确认规则 → 已查证的 Cage 能力 → 修改位置 → 验收结果”,具体设计见 \`docs/development/guides/recipes.md\`。能力与签名查 \`cage capabilities\`,现有业务查 \`cage context\` 并阅读源码。未知规则和能力缺口不能靠猜测、编造 API 或复制示例填补;已明确的部分直接实施,不另设技术方案批准。
|
|
31
39
|
|
|
32
|
-
|
|
33
|
-
2. 不熟悉的 API 先按手册任务目录定位,用本地文件搜索查术语,再执行 \`pnpm exec cage capabilities 符号 --format json\` 核对当前版本签名;\`cage context "业务关键词"\` 定位当前应用。未命中不代表不支持,不发明方法或返回字段。
|
|
34
|
-
3. 涉及已有领域含义变化,先 \`pnpm exec cage snapshot save before-change\` 保存本体基线,或使用真实 Git 基线。修改声明与导出,运行 check/gen,审查契约和迁移草稿。生成物不手改,已执行迁移不可改写。
|
|
35
|
-
4. 页面使用真实契约,处理业务失败、版本冲突、会话与缓存;多页面使用独立 URL,列表筛选/分页进入查询参数。按 \`docs/development/guides/routing.md\` 验收深链接、刷新、登录回跳和无权限行为。
|
|
36
|
-
5. 出错保留 code/at/reason/fix,查 \`docs/errors/README.md\` 与 \`docs/development/tools/troubleshooting.md\`;从真实调用逐层定位。不得放宽权限、删约束或关闭门禁来掩盖问题。
|
|
40
|
+
涉及领域建模先读 \`docs/development/guides/ontology-modeling.md\`:说明对象含义、关系方向/基数、状态及动作前后结果,再写真实声明。聚合/字段/命令等填写结构化描述,每个状态填写 labels;中文注释和前端文案不会自动成为本体名称。处理本次声明的 CAGE-ONTOLOGY-001,并按业务例子核对关系和触发链;名称完整不能证明业务正确。自然语言、文档、表格和原型都是输入,不能由模板或页面布局代替业务判断。
|
|
37
41
|
|
|
38
42
|
遇到原生 AI、AI 审批或随页助理,先读 \`docs/development/guides/intelligence.md\`,核对已有能力及应用启用状态。审批、文件、关系、数据传输等专题由 Skill 按需引导,不重建框架已有运行时。
|
|
39
43
|
|
|
@@ -41,12 +45,15 @@ export const managedBlock = `<!-- cage:begin v${VERSION} -->
|
|
|
41
45
|
|
|
42
46
|
- 所有手写代码遵守 \`docs/development/reference/commenting.md\`:文件职责与调用链、导出 API/字段、复杂分支的中文说明,写清做什么、为什么、怎样完成及实际边界;随代码更新。生成物注释从生成器维护。
|
|
43
47
|
- domain 按 modules/workflows/integrations/shared 组织,Web 按 app/modules/shared 组织。模块通过 index.ts 公开入口组合,前端不导入 domain、数据库或内核运行时;不关闭 modular 目录门禁。
|
|
48
|
+
- 领域含义修改前保留本体或真实 Git 基线;修改声明后运行 check/gen,审查契约和迁移草稿。生成物不手改,已执行迁移不可改写;具体命令见 \`docs/development/getting-started/workflow.md\`。
|
|
49
|
+
- 页面处理业务失败、版本冲突、会话与缓存;多页面使用独立 URL,筛选/分页进入查询参数,按 \`docs/development/guides/routing.md\` 实际验收。
|
|
44
50
|
- 新项目启动步骤见 \`docs/development/getting-started/workflow.md\`。使用已有 PostgreSQL 和项目 .env;init 准备账号,migrate 更新结构,bootstrap 显式初始化组织,dev 启动进程。普通业务不新增连接池或管理 Docker。
|
|
45
51
|
- 不输出或提交 .env、数据库密码、Cookie 密钥及初始化凭据。API 与 worker 使用一致的 domain,修改配置后按实际需要重启。
|
|
52
|
+
- 出错保留 code/at/reason/fix,查 \`docs/errors/README.md\` 与 \`docs/development/tools/troubleshooting.md\`;不得放宽权限、删约束或关闭门禁来掩盖问题。
|
|
46
53
|
|
|
47
54
|
### 完成依据
|
|
48
55
|
|
|
49
|
-
|
|
56
|
+
对照编码前的业务规则逐项验收,验证与改动匹配。check/gen/typecheck/build 证明各自检查范围;业务读写还需独立读取结果,权限需直接请求验证,审批需待办与结论,文件需实际内容,异步需任务终态,页面需浏览器操作。
|
|
50
57
|
|
|
51
58
|
\`pnpm verify\` 汇总门禁;\`verify --skip-tests\` 不代表完整通过。诊断用 \`cage doctor\`、\`timeline\`、\`explain\`,具体前提见 \`docs/development/tools/diagnostics.md\`。交付分别说明通过、跳过、未执行及剩余配置;文档和可逆小改动不反复执行全量数据库回归。
|
|
52
59
|
<!-- cage:end -->`;
|
package/dist/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAmB,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAmB,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2CrC,CAAC;AAEnB;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAM,GAAG,YAAY;IACrE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAM,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACxG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,GAAe,EAAE,KAAK,GAAG,KAAK;IACjD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,KAAK;QACP,OAAO;YACL;gBACE,IAAI,EAAE,eAAe;gBACrB,EAAE,EAAE,WAAW;gBACf,MAAM,EAAE,WAAW;gBACnB,GAAG,EAAE,wBAAwB;aAC9B;SACF,CAAC;IACJ,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
package/graph-ui/app.js
CHANGED
|
@@ -952,9 +952,10 @@ function renderInspector() {
|
|
|
952
952
|
? node.attrs.from.map(stateName).join('、')
|
|
953
953
|
: stateName(String(node.attrs.from)));
|
|
954
954
|
row('目标状态', node.attrs.to ? stateName(String(node.attrs.to)) : '保持当前状态');
|
|
955
|
+
// 调用身份不等于具体触发来源;只有审批绑定关系才能证明某命令承接审批结论。
|
|
955
956
|
const actors = {
|
|
956
957
|
user: '用户',
|
|
957
|
-
process: '
|
|
958
|
+
process: '内部流程',
|
|
958
959
|
external: '外部系统',
|
|
959
960
|
job: '定时任务',
|
|
960
961
|
reaction: '事件反应',
|
|
@@ -1081,7 +1082,7 @@ function detailValue(key, value) {
|
|
|
1081
1082
|
return ['kind', 'sensitive'].includes(key) ? (types[String(value)] ?? String(value)) : String(value);
|
|
1082
1083
|
}
|
|
1083
1084
|
/**
|
|
1084
|
-
*
|
|
1085
|
+
* 将约束中文解释委托共享业务规则,保证技术详情和业务地图使用同一字段口径。
|
|
1085
1086
|
*/
|
|
1086
1087
|
function constraintLabel(name, aggregateId) {
|
|
1087
1088
|
return businessConstraintLabel(name, aggregateId, snapshot.presentation.labels);
|
package/graph-ui/business.js
CHANGED
|
@@ -258,7 +258,7 @@ export function renderBusiness(host, model, snapshot, actions) {
|
|
|
258
258
|
host.append(objects, h('p', 'business-scene-description', block.description ||
|
|
259
259
|
(block.processes.length
|
|
260
260
|
? '选择完整业务流程,沿主线查看阶段、分支与关联。'
|
|
261
|
-
: '
|
|
261
|
+
: '按业务对象查看完整生命周期;允许的操作及其调用身份分别标明。')));
|
|
262
262
|
if (journeys.length) {
|
|
263
263
|
const grid = h('div', 'business-flow-grid business-journeys');
|
|
264
264
|
for (const journey of journeys) {
|
|
@@ -332,8 +332,15 @@ export function renderBusiness(host, model, snapshot, actions) {
|
|
|
332
332
|
}
|
|
333
333
|
host.append(controls, h('p', 'business-process-legend', '绿色箭头:业务走向 · 棕色箭头:展开的其他分支 · 虚线:涉及的业务对象'));
|
|
334
334
|
}
|
|
335
|
-
else if (lifecycle)
|
|
335
|
+
else if (lifecycle) {
|
|
336
336
|
host.append(h('p', 'business-process-legend', '根据真实状态迁移整理,展示允许的操作;具体执行条件请点击查看。'));
|
|
337
|
+
// 标签缺失只影响阅读,不等于状态不存在;保留原标识,并把补充文案的原因单独说明。
|
|
338
|
+
// 按真实对象归属统计,避免把其他对象的同名状态算入当前生命周期。
|
|
339
|
+
const unnamed = model.nodes.filter((node) => node.kind === 'state' && businessOwner(model, node)?.key === flow.key &&
|
|
340
|
+
!labels[node.key] && !node.attrs.title && !node.attrs.description);
|
|
341
|
+
if (unnamed.length)
|
|
342
|
+
host.append(h('p', 'source-note', `${unnamed.length} 个状态尚未配置业务名称,当前显示原始标识。`));
|
|
343
|
+
}
|
|
337
344
|
const steps = flattenBusinessSteps(root);
|
|
338
345
|
const approvals = new Map(steps.flatMap((step) => {
|
|
339
346
|
const flow = approvalFlowForStep(model, step, labels);
|
|
@@ -480,9 +487,10 @@ export function renderBusiness(host, model, snapshot, actions) {
|
|
|
480
487
|
section('什么时候执行', `${selected.label}${selected.note ? `。${selected.note}` : ''}`);
|
|
481
488
|
if (node.kind === 'command') {
|
|
482
489
|
const rules = section('执行条件');
|
|
490
|
+
// process 是调用身份,不能仅凭这个值声称操作一定由审批触发。
|
|
483
491
|
const actors = {
|
|
484
492
|
user: '用户',
|
|
485
|
-
process: '
|
|
493
|
+
process: '内部流程',
|
|
486
494
|
external: '外部系统',
|
|
487
495
|
job: '定时任务',
|
|
488
496
|
reaction: '自动处理',
|
|
@@ -155,19 +155,18 @@ export function businessBlocks(model, labels = {}, showSystem = false) {
|
|
|
155
155
|
});
|
|
156
156
|
return [...blocks.values()].sort((a, b) => Number(a.system) - Number(b.system) || b.flows.length - a.flows.length || a.id.localeCompare(b.id));
|
|
157
157
|
}
|
|
158
|
-
/** 业务页面缺少文案时明确提示补充,不用程序标识替代业务名称。完整本体仍保留标识。 */
|
|
159
158
|
/**
|
|
160
|
-
*
|
|
159
|
+
* 按显示覆盖、声明标题、描述、原始标识的顺序选择业务阅读名称。
|
|
160
|
+
* 与完整本体共用名称规则,避免缺少文案时把不同状态或操作变成同一个“待命名”节点;
|
|
161
|
+
* 不从标识或源码注释猜测业务含义,新建入口仍使用业务阅读专用文案。
|
|
161
162
|
* @param node 展示节点。
|
|
162
|
-
* @param labels
|
|
163
|
-
* @returns
|
|
163
|
+
* @param labels 声明文案与 graph.labels 合并后的显示映射。
|
|
164
|
+
* @returns 阅读标题,不修改节点、实际标识或业务规则,也不执行 IO。
|
|
164
165
|
*/
|
|
165
166
|
export function businessLabel(node, labels = {}) {
|
|
166
167
|
if (node.kind === 'entry')
|
|
167
168
|
return '新建业务';
|
|
168
|
-
|
|
169
|
-
return nodeLabel(node, labels);
|
|
170
|
-
return `待命名${{ aggregate: '业务对象', command: '操作', state: '状态', process: '流程', stage: '阶段', event: '业务结果', reaction: '自动处理', approval: '审批', inbound: '外部通知', outbound: '外部同步', query: '查询', job: '定时处理' }[node.kind] ?? '声明'}`;
|
|
169
|
+
return nodeLabel(node, labels);
|
|
171
170
|
}
|
|
172
171
|
/**
|
|
173
172
|
* 优先返回板块显式流程并保持源码顺序;没有流程规格时返回有状态迁移的对象供生命周期阅读。
|
|
@@ -252,8 +251,10 @@ export function traceBusinessLifecycle(model, object, labels) {
|
|
|
252
251
|
const repeated = seen.has(node.key);
|
|
253
252
|
const action = via[0];
|
|
254
253
|
const actor = (action?.attrs.invokedBy ?? []);
|
|
254
|
+
// invokedBy 只声明允许的调用身份,process 本身不能证明存在审批绑定。
|
|
255
|
+
// 生命周期沿状态迁移展示操作;具体审批通过/驳回语义由触发链中的 binds 关系解释。
|
|
255
256
|
const label = action
|
|
256
|
-
? `${actor.includes('user') ? '人工' : actor.includes('external') ? '外部通知' : actor.includes('process') ? '
|
|
257
|
+
? `${actor.includes('user') ? '人工' : actor.includes('external') ? '外部通知' : actor.includes('process') ? '内部流程' : '业务操作'} · ${businessLabel(action, labels)}`
|
|
257
258
|
: '生命周期起点';
|
|
258
259
|
const step = {
|
|
259
260
|
id: repeated ? `${parent}>${node.key}` : node.key,
|
|
@@ -365,21 +366,23 @@ export function flattenBusinessSteps(root) {
|
|
|
365
366
|
return [root, ...root.children.flatMap(flattenBusinessSteps)];
|
|
366
367
|
}
|
|
367
368
|
/**
|
|
368
|
-
* 把命令 from/to
|
|
369
|
+
* 把命令 from/to 转成状态迁移摘要,供操作卡片、流程节点和详情复用。
|
|
370
|
+
* 优先读取所属聚合的状态显示名,缺失时保留当前命令内可区分的状态标识;
|
|
371
|
+
* 不从状态标识推测中文含义,也不把多个无标签状态合并成同一占位词。
|
|
369
372
|
* @param node 非命令返回空字符串。
|
|
370
|
-
* @param labels
|
|
371
|
-
* @returns 允许起始状态与目标,to=null
|
|
373
|
+
* @param labels 状态声明标签与 graph.labels 合并后的显示映射。
|
|
374
|
+
* @returns 允许起始状态与目标,to=null 描述保持当前状态;不修改节点或执行命令。
|
|
372
375
|
*/
|
|
373
376
|
export function businessStateSummary(node, labels) {
|
|
374
377
|
if (node.kind !== 'command')
|
|
375
378
|
return '';
|
|
376
379
|
const owner = node.id.slice(0, node.id.lastIndexOf('.'));
|
|
377
|
-
const name = (s) => (s === 'new' ? '新建' : (labels[`state:${owner}.${s}`]
|
|
380
|
+
const name = (s) => (s === 'new' ? '新建' : (labels[`state:${owner}.${s}`] || s));
|
|
378
381
|
const from = (Array.isArray(node.attrs.from) ? node.attrs.from : [node.attrs.from]);
|
|
379
382
|
return `${from.filter(Boolean).map(name).join(' / ')} → ${node.attrs.to == null ? '保持当前状态' : name(String(node.attrs.to))}`;
|
|
380
383
|
}
|
|
381
384
|
/**
|
|
382
|
-
*
|
|
385
|
+
* 把已知约束名翻译为业务提示,并解析职责分离字段。
|
|
383
386
|
* @param name 内核约束标识。
|
|
384
387
|
* @param owner 所属聚合 ID。
|
|
385
388
|
* @param labels 字段中文标签。
|
|
@@ -387,9 +390,6 @@ export function businessStateSummary(node, labels) {
|
|
|
387
390
|
*/
|
|
388
391
|
export function businessConstraintLabel(name, owner, labels) {
|
|
389
392
|
const field = (id) => labels[`field:${owner}.${id}`] ?? id;
|
|
390
|
-
const ceiling = /^ceiling\((.+)\)$/.exec(name);
|
|
391
|
-
if (ceiling)
|
|
392
|
-
return `${field(ceiling[1])}不超过审批额度`;
|
|
393
393
|
const sod = /^sod\.notSameAs\((.+)\)$/.exec(name);
|
|
394
394
|
if (sod)
|
|
395
395
|
return `审批人与${field(sod[1])}不同`;
|
|
@@ -111,11 +111,9 @@ export function explainEdge(edge, model, labels = {}) {
|
|
|
111
111
|
return result('映射外发字段', '外部同步数据', `“${a}”的 fields 声明包含“${b}”对应的字段名;抽取器将它关联到发出事件的聚合中同名字段。`, '用于核对外发字段范围和字段变更的同步影响;具体取值及转换由事件载荷与 map 函数决定。', [`${from.id}.fields 包含 ${field}`, `同名聚合字段:${to.id}`]);
|
|
112
112
|
if (as.startsWith('约束 ')) {
|
|
113
113
|
const rule = as.slice(3);
|
|
114
|
-
const purpose = rule.startsWith('
|
|
115
|
-
?
|
|
116
|
-
:
|
|
117
|
-
? `用于校验调用人与“${b}”记录的人不同,避免同一人完成需要分离的职责。`
|
|
118
|
-
: `该约束读取“${b}”执行命令前的业务检查;字段变更时应一起复核约束。`;
|
|
114
|
+
const purpose = rule.startsWith('sod.notSameAs(')
|
|
115
|
+
? `用于校验调用人与“${b}”记录的人不同,避免同一人完成需要分离的职责。`
|
|
116
|
+
: `该约束读取“${b}”执行命令前的业务检查;字段变更时应一起复核约束。`;
|
|
119
117
|
return result('执行约束检查', '命令校验依赖', `“${a}”声明的约束 ${rule} 使用“${b}”。`, purpose, [
|
|
120
118
|
`${from.id}.constraints → ${rule}`,
|
|
121
119
|
`约束 fields 包含 ${field}`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yss123/cage-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "cage 命令行:init、gen、check、graph、context、impact、test、verify、budget、sync、upgrade、dev、migrate",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"typescript": "~5.9.3",
|
|
32
32
|
"vitest": "^4.1.12",
|
|
33
33
|
"zod": "^4.1.5",
|
|
34
|
-
"@yss123/cage-admin": "0.
|
|
35
|
-
"@yss123/cage-
|
|
36
|
-
"@yss123/cage-ontology": "0.
|
|
37
|
-
"@yss123/cage-lint": "0.
|
|
38
|
-
"@yss123/cage-
|
|
34
|
+
"@yss123/cage-admin": "0.4.0",
|
|
35
|
+
"@yss123/cage-kernel": "0.4.0",
|
|
36
|
+
"@yss123/cage-ontology": "0.4.0",
|
|
37
|
+
"@yss123/cage-lint": "0.4.0",
|
|
38
|
+
"@yss123/cage-testkit": "0.4.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/pg": "^8.15.5"
|
|
@@ -6,5 +6,5 @@ description: 使用 Cage 框架开发、修改和排查业务应用。适用于
|
|
|
6
6
|
<!-- 由 scripts/sync-agent-skill.ts 生成;教学正文只在 docs/development 维护。 -->
|
|
7
7
|
|
|
8
8
|
加载本技能后,先阅读[完整框架开发方法](../../../docs/development/skills/cage-development/SKILL.md),再根据其中的任务选择表读取相关专题。
|
|
9
|
-
|
|
9
|
+
正文规定先理解需求、提出疑问与建议、查证框架,再说明实现映射、编码和验收;不要只凭本入口的摘要开始编写业务。
|
|
10
10
|
当前项目的业务要求与 AGENTS.md 仍适用,框架维护任务遵守仓库的包边界。
|
package/templates/app/AGENTS.md
CHANGED
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
本节位于托管区之外,cage sync 会保留。下面的托管区提供框架工作方法。
|
|
12
12
|
|
|
13
|
-
<!-- cage:begin v0.
|
|
13
|
+
<!-- cage:begin v0.4.0 -->
|
|
14
14
|
## Cage 业务开发约定(框架托管)
|
|
15
15
|
|
|
16
16
|
### 学习与任务入口
|
|
17
17
|
|
|
18
18
|
本项目使用 `@yss123/cage-*`,业务写在本项目。先读项目说明指定的教材;独立项目默认入口是 `docs/development/README.md`。
|
|
19
19
|
|
|
20
|
-
开始 Cage 业务开发或排错时,加载 `docs/development/skills/cage-development/SKILL.md
|
|
20
|
+
开始 Cage 业务开发或排错时,加载 `docs/development/skills/cage-development/SKILL.md`,统一按“理解需求 → 澄清 → 查证能力 → 说明实现映射 → 编码 → 验收”工作。首次学习配合 `docs/development/getting-started/first-feature.md`;已熟悉时只读受影响专题,普通样式/文案改动无需重走业务建模。
|
|
21
21
|
|
|
22
22
|
支持 Agent Skills 的工具可发现 `.agents/skills/cage-development`;其他工具直接读取上述 Markdown,使用相同流程。教材随框架版本分发,均为本地文件,不需要额外服务、模型或索引。框架仓库范例使用项目说明指定的规范教材位置。
|
|
23
23
|
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
- 角色、能力、数据范围、调用身份与业务约束分别建模。前端 can() 只影响显示,新增能力不自动授给生产角色;审批选人不授予能力。
|
|
29
29
|
- 页面依赖生成契约及客户端。表单、弹窗等临时状态留在前端;正式业务数据和流程结果通过服务端读写。实际记录不能用模拟仓储或固定统计替代。
|
|
30
30
|
|
|
31
|
-
###
|
|
31
|
+
### 编码前的依据
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
业务疑点按 `docs/development/guides/business-collaboration.md` 提出选项、影响和推荐,让用户选择;沿用已明确的规则与授权。API 和当前行为由 agent 查证,普通技术方案自行决定;等待业务答案时推进独立部分。
|
|
34
|
+
|
|
35
|
+
写代码前按 Skill 简述“已确认规则 → 已查证的 Cage 能力 → 修改位置 → 验收结果”,具体设计见 `docs/development/guides/recipes.md`。能力与签名查 `cage capabilities`,现有业务查 `cage context` 并阅读源码。未知规则和能力缺口不能靠猜测、编造 API 或复制示例填补;已明确的部分直接实施,不另设技术方案批准。
|
|
36
|
+
|
|
37
|
+
涉及领域建模先读 `docs/development/guides/ontology-modeling.md`:说明对象含义、关系方向/基数、状态及动作前后结果,再写真实声明。聚合/字段/命令等填写结构化描述,每个状态填写 labels;中文注释和前端文案不会自动成为本体名称。处理本次声明的 CAGE-ONTOLOGY-001,并按业务例子核对关系和触发链;名称完整不能证明业务正确。自然语言、文档、表格和原型都是输入,不能由模板或页面布局代替业务判断。
|
|
38
38
|
|
|
39
39
|
遇到原生 AI、AI 审批或随页助理,先读 `docs/development/guides/intelligence.md`,核对已有能力及应用启用状态。审批、文件、关系、数据传输等专题由 Skill 按需引导,不重建框架已有运行时。
|
|
40
40
|
|
|
@@ -42,12 +42,15 @@
|
|
|
42
42
|
|
|
43
43
|
- 所有手写代码遵守 `docs/development/reference/commenting.md`:文件职责与调用链、导出 API/字段、复杂分支的中文说明,写清做什么、为什么、怎样完成及实际边界;随代码更新。生成物注释从生成器维护。
|
|
44
44
|
- domain 按 modules/workflows/integrations/shared 组织,Web 按 app/modules/shared 组织。模块通过 index.ts 公开入口组合,前端不导入 domain、数据库或内核运行时;不关闭 modular 目录门禁。
|
|
45
|
+
- 领域含义修改前保留本体或真实 Git 基线;修改声明后运行 check/gen,审查契约和迁移草稿。生成物不手改,已执行迁移不可改写;具体命令见 `docs/development/getting-started/workflow.md`。
|
|
46
|
+
- 页面处理业务失败、版本冲突、会话与缓存;多页面使用独立 URL,筛选/分页进入查询参数,按 `docs/development/guides/routing.md` 实际验收。
|
|
45
47
|
- 新项目启动步骤见 `docs/development/getting-started/workflow.md`。使用已有 PostgreSQL 和项目 .env;init 准备账号,migrate 更新结构,bootstrap 显式初始化组织,dev 启动进程。普通业务不新增连接池或管理 Docker。
|
|
46
48
|
- 不输出或提交 .env、数据库密码、Cookie 密钥及初始化凭据。API 与 worker 使用一致的 domain,修改配置后按实际需要重启。
|
|
49
|
+
- 出错保留 code/at/reason/fix,查 `docs/errors/README.md` 与 `docs/development/tools/troubleshooting.md`;不得放宽权限、删约束或关闭门禁来掩盖问题。
|
|
47
50
|
|
|
48
51
|
### 完成依据
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
对照编码前的业务规则逐项验收,验证与改动匹配。check/gen/typecheck/build 证明各自检查范围;业务读写还需独立读取结果,权限需直接请求验证,审批需待办与结论,文件需实际内容,异步需任务终态,页面需浏览器操作。
|
|
51
54
|
|
|
52
55
|
`pnpm verify` 汇总门禁;`verify --skip-tests` 不代表完整通过。诊断用 `cage doctor`、`timeline`、`explain`,具体前提见 `docs/development/tools/diagnostics.md`。交付分别说明通过、跳过、未执行及剩余配置;文档和可逆小改动不反复执行全量数据库回归。
|
|
53
56
|
<!-- cage:end -->
|
package/templates/app/README.md
CHANGED
|
@@ -57,12 +57,12 @@ pnpm dev
|
|
|
57
57
|
前端使用 React Router:工作台 `/workspace`,采购列表 `/procurement/orders`,单据详情 `/procurement/orders/:id`,审批 `/approvals`,库存 `/inventory`,登录 `/login`。单号和审批待办可直接打开详情;刷新、前进后退和登录回跳保留页面地址。新增页面与部署按[路由和浏览器验收指南](docs/development/guides/routing.md)执行;Nginx 示例见 [deploy/nginx.conf](deploy/nginx.conf)。
|
|
58
58
|
|
|
59
59
|
1. 管理员在“库存台账”登记 `A-01` 等物料。
|
|
60
|
-
2. 进入 `/admin/`
|
|
60
|
+
2. 进入 `/admin/` 创建采购员、经理,分别分配采购命令、审批能力和所需数据范围。
|
|
61
61
|
3. 把经理设为采购员所在部门的负责人。提单人与审批人必须不同。
|
|
62
62
|
4. 为需要选人的采购参与者授予 `ApprovalMember.read` 与该聚合 `all` 范围,通过 `ApprovalMember.create` 登记审批协作人的公开业务姓名与专业领域;名录不授予实际审批能力。
|
|
63
63
|
5. 采购员新建采购单,可开启专业复核并选择 1–5 人;草稿使用 `PurchaseOrder.setReviewers` 调整名单,提交时重新校验。worker 先执行 AI 材料预审;未配置模型或模型失败时按声明转人工接管。
|
|
64
64
|
6. AI 预审/人工接管之后进入经理节点;启用专业复核时,经理后由所选人员全部会签。经理、专业和财务节点开放转办、委派归还和前置/后置/并行加签。
|
|
65
|
-
7. 超过 50,000 元的采购继续进入财务共享候选池,需另建 code 为 `finance`
|
|
65
|
+
7. 超过 50,000 元的采购继续进入财务共享候选池,需另建 code 为 `finance` 的角色并给实际用户配置权限和范围;财务必须先领取,恰好 50,000 元跳过该步骤。
|
|
66
66
|
8. 全部必签完成后,最终审批命令同事务生成库存锁;worker 调用 fake ERP 并回写单号。取消单据或收到 ERP 收货回调后异步释放锁;回调需要 `ERP_WEBHOOK_SECRET` 对原始 JSON 的 HMAC-SHA256 签名。
|
|
67
67
|
|
|
68
68
|
`Inventory.available` 是演示台账数量。本例验证库存锁生命周期,尚未实现仓库级的并发扣减、实物库存及退货核算。
|
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
"typecheck": "tsc --noEmit"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
+
"@ant-design/icons": "^6.3.4",
|
|
11
12
|
"@app/contracts": "workspace:*",
|
|
12
13
|
"@tanstack/react-query": "^5.87.1",
|
|
13
|
-
"@yss123/cage-client": "0.
|
|
14
|
+
"@yss123/cage-client": "0.4.0",
|
|
15
|
+
"antd": "^6.7.0",
|
|
14
16
|
"react": "^19.1.1",
|
|
15
17
|
"react-dom": "^19.1.1",
|
|
16
18
|
"react-markdown": "^10.1.0",
|