aitable-workflow-cli 0.1.28 → 0.1.29-beta.1790736949347
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/dist/assistant/assets/index-BA6il19d.css +1 -0
- package/dist/assistant/assets/{index-B3LvYfRW.js → index-BMzAOp70.js} +31 -31
- package/dist/assistant/index.html +2 -2
- package/dist/chunk-BBP5RVFU.js +15 -0
- package/dist/cli.js +180 -73
- package/dist/{config-ui-server-4SVD42Z3.js → config-ui-server-UWELHUH4.js} +1 -1
- package/dist/web/assets/index-Bnmnydwk.css +1 -0
- package/dist/web/assets/index-Dbs1xWB9.js +331 -0
- package/dist/web/index.html +2 -2
- package/dist/web/install.ps1 +173 -0
- package/dist/web/install.sh +188 -0
- package/package.json +3 -3
- package/templates/ai-native-sdlc/.env.example +11 -0
- package/templates/ai-native-sdlc/aitable-workflow.config.yml +47 -0
- package/templates/ai-native-sdlc/coding-agents.config.json +17 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-15-ai-native-sdlc-dual-staff-implementation-plan.md +150 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-15-ai-native-sdlc-dual-staff.md +213 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-16-domain-role-notification-routing.md +36 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-16-execution-resume-and-cr-loop.md +29 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-16-project-handoff.md +148 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-17-prd-code-context-and-readable-prompts.md +37 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-21-plan-merge-sync-and-agent-source.md +19 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-21-sdlc-base-ref-and-review-notification.md +18 -0
- package/templates/ai-native-sdlc/docs/plans/2026-09-29-borrow-from-joe-design.md +943 -0
- package/templates/ai-native-sdlc/lib/artifacts.ts +126 -0
- package/templates/ai-native-sdlc/lib/recipe-config.ts +34 -0
- package/templates/ai-native-sdlc/lib/recipe-helpers.ts +595 -0
- package/templates/ai-native-sdlc/npmrc +1 -0
- package/templates/ai-native-sdlc/package.json +19 -0
- package/templates/ai-native-sdlc/profile/profile.yml +115 -0
- package/templates/ai-native-sdlc/setup/module-config.seed.json +37 -0
- package/templates/ai-native-sdlc/test/artifacts.test.ts +72 -0
- package/templates/ai-native-sdlc/test/recipe-helpers.test.ts +931 -0
- package/templates/ai-native-sdlc/tsconfig.json +17 -0
- package/templates/ai-native-sdlc/workflows/.gitkeep +3 -0
- package/templates/ai-native-sdlc/workflows/execution/automations/blocked-questions-dev.json +91 -0
- package/templates/ai-native-sdlc/workflows/execution/automations/blocked-questions.json +91 -0
- package/templates/ai-native-sdlc/workflows/execution/automations/cr-review-dev.json +80 -0
- package/templates/ai-native-sdlc/workflows/execution/automations/cr-review.json +81 -0
- package/templates/ai-native-sdlc/workflows/execution/automations/resume-answers.json +42 -0
- package/templates/ai-native-sdlc/workflows/execution/automations/spec-review-dev.json +138 -0
- package/templates/ai-native-sdlc/workflows/execution/recipes/coding.recipe.ts +161 -0
- package/templates/ai-native-sdlc/workflows/execution/recipes/prd-review.recipe.ts +200 -0
- package/templates/ai-native-sdlc/workflows/execution/recipes/prd.recipe.ts +163 -0
- package/templates/ai-native-sdlc/workflows/execution/recipes/review.recipe.ts +257 -0
- package/templates/ai-native-sdlc/workflows/execution/recipes/spec-review.recipe.ts +242 -0
- package/templates/ai-native-sdlc/workflows/execution/recipes/spec.recipe.ts +173 -0
- package/templates/ai-native-sdlc/workflows/execution/workflow.yml +79 -0
- package/templates/ai-native-sdlc/workflows/intake/automations/accept-intake.json +101 -0
- package/templates/ai-native-sdlc/workflows/intake/recipes/classify-module.recipe.ts +133 -0
- package/templates/ai-native-sdlc/workflows/intake/recipes/create-change.recipe.ts +94 -0
- package/templates/ai-native-sdlc/workflows/intake/recipes/mechanical-deduplicate.recipe.ts +33 -0
- package/templates/ai-native-sdlc/workflows/intake/workflow.yml +62 -0
- package/templates/ai-native-sdlc/workspaces/dev/AGENTS.md +69 -0
- package/templates/ai-native-sdlc/workspaces/pm/AGENTS.md +48 -0
- package/templates/ai-native-sdlc/workspaces/reviewer/AGENTS.md +79 -0
- package/dist/assistant/assets/index-CCEHOkkJ.css +0 -1
- package/dist/chunk-YDJTCQW4.js +0 -15
- package/dist/web/assets/index-DPc2WOdp.css +0 -1
- package/dist/web/assets/index-HTw8K38o.js +0 -332
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"lib": ["ES2022"],
|
|
5
|
+
"module": "ESNext",
|
|
6
|
+
"moduleResolution": "Bundler",
|
|
7
|
+
"types": ["node"],
|
|
8
|
+
"strict": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"isolatedModules": true,
|
|
12
|
+
"forceConsistentCasingInFileNames": true,
|
|
13
|
+
"resolveJsonModule": true,
|
|
14
|
+
"noEmit": true
|
|
15
|
+
},
|
|
16
|
+
"include": ["lib/**/*.ts", "workflows/**/*.ts", "test/**/*.ts"]
|
|
17
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "workflow-dsl/v1",
|
|
3
|
+
"name": "Dev 阶段阻塞问答通知",
|
|
4
|
+
"description": "Dev 阶段有待回答的 AI 问题时,按模块通知 Dev负责人填写人工答复。",
|
|
5
|
+
"trigger": "start",
|
|
6
|
+
"_tables": {
|
|
7
|
+
"module_config": {
|
|
8
|
+
"name": "模块配置表",
|
|
9
|
+
"fields": [
|
|
10
|
+
{ "name": "模块名称", "type": "text" },
|
|
11
|
+
{ "name": "模块说明", "type": "text" },
|
|
12
|
+
{ "name": "典型例子", "type": "text" },
|
|
13
|
+
{ "name": "PM负责人", "type": "user" },
|
|
14
|
+
{ "name": "Dev负责人", "type": "user" }
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"steps": {
|
|
19
|
+
"start": {
|
|
20
|
+
"type": "WhenRecordUpdated",
|
|
21
|
+
"next": "find_module",
|
|
22
|
+
"data": {
|
|
23
|
+
"sheetId": "<sheetId>",
|
|
24
|
+
"updatedFields": ["<状态_fieldId>", "<AI问题_fieldId>", "<当前角色_fieldId>"],
|
|
25
|
+
"where": {
|
|
26
|
+
"and": [
|
|
27
|
+
{
|
|
28
|
+
"left": "<状态_fieldId>",
|
|
29
|
+
"op": "EQ",
|
|
30
|
+
"right": { "option": "<状态_blocked_optionId>" }
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"left": "<当前角色_fieldId>",
|
|
34
|
+
"op": "EQ",
|
|
35
|
+
"right": { "option": "<当前角色_Dev_optionId>" }
|
|
36
|
+
},
|
|
37
|
+
{ "left": "<AI问题_fieldId>", "op": "EXIST" }
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"find_module": {
|
|
43
|
+
"type": "FindRecords",
|
|
44
|
+
"next": "notify_each_dev_owner",
|
|
45
|
+
"data": {
|
|
46
|
+
"sheetId": "<module_config_sheetId>",
|
|
47
|
+
"where": {
|
|
48
|
+
"left": "<module_config_模块名称_fieldId>",
|
|
49
|
+
"op": "EQ",
|
|
50
|
+
"right": { "ref": "$.start.<模块_fieldId>" }
|
|
51
|
+
},
|
|
52
|
+
"outputFields": ["<module_config_Dev负责人_fieldId>"],
|
|
53
|
+
"terminateIfNotFound": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"notify_each_dev_owner": {
|
|
57
|
+
"type": "Loop",
|
|
58
|
+
"loopEntry": "send",
|
|
59
|
+
"next": null,
|
|
60
|
+
"data": {
|
|
61
|
+
"mode": "array",
|
|
62
|
+
"items": { "ref": "$.find_module.records[*]" },
|
|
63
|
+
"maxRuns": 20
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"send": {
|
|
67
|
+
"type": "SendMessage",
|
|
68
|
+
"next": null,
|
|
69
|
+
"data": {
|
|
70
|
+
"title": "待人工答复",
|
|
71
|
+
"content": [
|
|
72
|
+
{ "text": "需求:" },
|
|
73
|
+
{ "ref": "$.start.<需求_fieldId>", "title": "需求" },
|
|
74
|
+
{ "text": "\n请在该变更的「人工答复」中按问题编号填写答复:\n" },
|
|
75
|
+
{ "ref": "$.start.<AI问题_fieldId>", "title": "AI问题" }
|
|
76
|
+
],
|
|
77
|
+
"buttons": [
|
|
78
|
+
{
|
|
79
|
+
"name": "去填写",
|
|
80
|
+
"color": "blue",
|
|
81
|
+
"action": {
|
|
82
|
+
"type": "link",
|
|
83
|
+
"url": { "ref": "$.start.rowUrl.<表格视图_viewId>" }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"to": { "users": [{ "ref": "$.notify_each_dev_owner.item.<module_config_Dev负责人_fieldId>" }] }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "workflow-dsl/v1",
|
|
3
|
+
"name": "阻塞问答通知",
|
|
4
|
+
"description": "PM 阶段有待回答的 AI 问题时,按模块通知 PM负责人填写人工答复。",
|
|
5
|
+
"trigger": "start",
|
|
6
|
+
"_tables": {
|
|
7
|
+
"module_config": {
|
|
8
|
+
"name": "模块配置表",
|
|
9
|
+
"fields": [
|
|
10
|
+
{ "name": "模块名称", "type": "text" },
|
|
11
|
+
{ "name": "模块说明", "type": "text" },
|
|
12
|
+
{ "name": "典型例子", "type": "text" },
|
|
13
|
+
{ "name": "PM负责人", "type": "user" },
|
|
14
|
+
{ "name": "Dev负责人", "type": "user" }
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"steps": {
|
|
19
|
+
"start": {
|
|
20
|
+
"type": "WhenRecordUpdated",
|
|
21
|
+
"next": "find_module",
|
|
22
|
+
"data": {
|
|
23
|
+
"sheetId": "<sheetId>",
|
|
24
|
+
"updatedFields": ["<状态_fieldId>", "<AI问题_fieldId>", "<当前角色_fieldId>"],
|
|
25
|
+
"where": {
|
|
26
|
+
"and": [
|
|
27
|
+
{
|
|
28
|
+
"left": "<状态_fieldId>",
|
|
29
|
+
"op": "EQ",
|
|
30
|
+
"right": { "option": "<状态_blocked_optionId>" }
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"left": "<当前角色_fieldId>",
|
|
34
|
+
"op": "EQ",
|
|
35
|
+
"right": { "option": "<当前角色_PM_optionId>" }
|
|
36
|
+
},
|
|
37
|
+
{ "left": "<AI问题_fieldId>", "op": "EXIST" }
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"find_module": {
|
|
43
|
+
"type": "FindRecords",
|
|
44
|
+
"next": "notify_each_pm_owner",
|
|
45
|
+
"data": {
|
|
46
|
+
"sheetId": "<module_config_sheetId>",
|
|
47
|
+
"where": {
|
|
48
|
+
"left": "<module_config_模块名称_fieldId>",
|
|
49
|
+
"op": "EQ",
|
|
50
|
+
"right": { "ref": "$.start.<模块_fieldId>" }
|
|
51
|
+
},
|
|
52
|
+
"outputFields": ["<module_config_PM负责人_fieldId>"],
|
|
53
|
+
"terminateIfNotFound": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"notify_each_pm_owner": {
|
|
57
|
+
"type": "Loop",
|
|
58
|
+
"loopEntry": "send",
|
|
59
|
+
"next": null,
|
|
60
|
+
"data": {
|
|
61
|
+
"mode": "array",
|
|
62
|
+
"items": { "ref": "$.find_module.records[*]" },
|
|
63
|
+
"maxRuns": 20
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"send": {
|
|
67
|
+
"type": "SendMessage",
|
|
68
|
+
"next": null,
|
|
69
|
+
"data": {
|
|
70
|
+
"title": "待人工答复",
|
|
71
|
+
"content": [
|
|
72
|
+
{ "text": "需求:" },
|
|
73
|
+
{ "ref": "$.start.<需求_fieldId>", "title": "需求" },
|
|
74
|
+
{ "text": "\n请在该变更的「人工答复」中按问题编号填写答复:\n" },
|
|
75
|
+
{ "ref": "$.start.<AI问题_fieldId>", "title": "AI问题" }
|
|
76
|
+
],
|
|
77
|
+
"buttons": [
|
|
78
|
+
{
|
|
79
|
+
"name": "去填写",
|
|
80
|
+
"color": "blue",
|
|
81
|
+
"action": {
|
|
82
|
+
"type": "link",
|
|
83
|
+
"url": { "ref": "$.start.rowUrl.<表格视图_viewId>" }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"to": { "users": [{ "ref": "$.notify_each_pm_owner.item.<module_config_PM负责人_fieldId>" }] }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "workflow-dsl/v1",
|
|
3
|
+
"name": "评审 CR 待审通知",
|
|
4
|
+
"description": "评审阶段存在待审 CR 时,按模块通知 Dev负责人。",
|
|
5
|
+
"trigger": "start",
|
|
6
|
+
"_tables": {
|
|
7
|
+
"module_config": {
|
|
8
|
+
"name": "模块配置表",
|
|
9
|
+
"fields": [
|
|
10
|
+
{ "name": "模块名称", "type": "text" },
|
|
11
|
+
{ "name": "模块说明", "type": "text" },
|
|
12
|
+
{ "name": "典型例子", "type": "text" },
|
|
13
|
+
{ "name": "PM负责人", "type": "user" },
|
|
14
|
+
{ "name": "Dev负责人", "type": "user" }
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"steps": {
|
|
19
|
+
"start": {
|
|
20
|
+
"type": "WhenRecordUpdated",
|
|
21
|
+
"next": "find_module",
|
|
22
|
+
"data": {
|
|
23
|
+
"sheetId": "<sheetId>",
|
|
24
|
+
"updatedFields": ["<当前CR链接_fieldId>", "<当前阶段_fieldId>", "<评审进展_fieldId>"],
|
|
25
|
+
"where": {
|
|
26
|
+
"and": [
|
|
27
|
+
{
|
|
28
|
+
"left": "<当前阶段_fieldId>",
|
|
29
|
+
"op": "EQ",
|
|
30
|
+
"right": { "option": "<当前阶段_评审_optionId>" }
|
|
31
|
+
},
|
|
32
|
+
{ "left": "<当前CR链接_fieldId>", "op": "EXIST" }
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"find_module": {
|
|
38
|
+
"type": "FindRecords",
|
|
39
|
+
"next": "notify_each_dev_owner",
|
|
40
|
+
"data": {
|
|
41
|
+
"sheetId": "<module_config_sheetId>",
|
|
42
|
+
"where": {
|
|
43
|
+
"left": "<module_config_模块名称_fieldId>",
|
|
44
|
+
"op": "EQ",
|
|
45
|
+
"right": { "ref": "$.start.<模块_fieldId>" }
|
|
46
|
+
},
|
|
47
|
+
"outputFields": ["<module_config_Dev负责人_fieldId>"],
|
|
48
|
+
"terminateIfNotFound": true
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"notify_each_dev_owner": {
|
|
52
|
+
"type": "Loop",
|
|
53
|
+
"loopEntry": "send",
|
|
54
|
+
"next": null,
|
|
55
|
+
"data": {
|
|
56
|
+
"mode": "array",
|
|
57
|
+
"items": { "ref": "$.find_module.records[*]" },
|
|
58
|
+
"maxRuns": 20
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"send": {
|
|
62
|
+
"type": "SendMessage",
|
|
63
|
+
"next": null,
|
|
64
|
+
"data": {
|
|
65
|
+
"title": "CR待审",
|
|
66
|
+
"content": [
|
|
67
|
+
{ "text": "需求:" },
|
|
68
|
+
{ "ref": "$.start.<需求_fieldId>", "title": "需求" },
|
|
69
|
+
{ "text": "\n当前阶段:" },
|
|
70
|
+
{ "ref": "$.start.<当前阶段_fieldId>", "title": "当前阶段" },
|
|
71
|
+
{ "text": "\n" },
|
|
72
|
+
{ "ref": "$.start.<评审进展_fieldId>" },
|
|
73
|
+
{ "text": "\n评审链接:\n" },
|
|
74
|
+
{ "ref": "$.start.<当前CR链接_fieldId>", "title": "待评审 CR" }
|
|
75
|
+
],
|
|
76
|
+
"to": { "users": [{ "ref": "$.notify_each_dev_owner.item.<module_config_Dev负责人_fieldId>" }] }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "workflow-dsl/v1",
|
|
3
|
+
"name": "PRD CR 待审通知",
|
|
4
|
+
"description": "PRD 阶段存在待审 CR 时,按模块通知 PM负责人。",
|
|
5
|
+
"trigger": "start",
|
|
6
|
+
"_tables": {
|
|
7
|
+
"module_config": {
|
|
8
|
+
"name": "模块配置表",
|
|
9
|
+
"fields": [
|
|
10
|
+
{ "name": "模块名称", "type": "text" },
|
|
11
|
+
{ "name": "模块说明", "type": "text" },
|
|
12
|
+
{ "name": "典型例子", "type": "text" },
|
|
13
|
+
{ "name": "PM负责人", "type": "user" },
|
|
14
|
+
{ "name": "Dev负责人", "type": "user" }
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"steps": {
|
|
19
|
+
"start": {
|
|
20
|
+
"type": "WhenRecordUpdated",
|
|
21
|
+
"next": "find_module",
|
|
22
|
+
"data": {
|
|
23
|
+
"sheetId": "<sheetId>",
|
|
24
|
+
"updatedFields": ["<当前CR链接_fieldId>", "<当前阶段_fieldId>", "<评审进展_fieldId>"],
|
|
25
|
+
"where": {
|
|
26
|
+
"and": [
|
|
27
|
+
{
|
|
28
|
+
"left": "<当前阶段_fieldId>",
|
|
29
|
+
"op": "EQ",
|
|
30
|
+
"right": { "option": "<当前阶段_PRD 评审_optionId>" }
|
|
31
|
+
},
|
|
32
|
+
{ "left": "<当前CR链接_fieldId>", "op": "EXIST" }
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"find_module": {
|
|
38
|
+
"type": "FindRecords",
|
|
39
|
+
"next": "notify_each_pm_owner",
|
|
40
|
+
"data": {
|
|
41
|
+
"sheetId": "<module_config_sheetId>",
|
|
42
|
+
"where": {
|
|
43
|
+
"left": "<module_config_模块名称_fieldId>",
|
|
44
|
+
"op": "EQ",
|
|
45
|
+
"right": { "ref": "$.start.<模块_fieldId>" }
|
|
46
|
+
},
|
|
47
|
+
"outputFields": ["<module_config_PM负责人_fieldId>"],
|
|
48
|
+
"terminateIfNotFound": true
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"notify_each_pm_owner": {
|
|
52
|
+
"type": "Loop",
|
|
53
|
+
"loopEntry": "send",
|
|
54
|
+
"next": null,
|
|
55
|
+
"data": {
|
|
56
|
+
"mode": "array",
|
|
57
|
+
"items": { "ref": "$.find_module.records[*]" },
|
|
58
|
+
"maxRuns": 20
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"send": {
|
|
62
|
+
"type": "SendMessage",
|
|
63
|
+
"next": null,
|
|
64
|
+
"data": {
|
|
65
|
+
"title": "CR待审",
|
|
66
|
+
"content": [
|
|
67
|
+
{ "text": "需求:" },
|
|
68
|
+
{ "ref": "$.start.<需求_fieldId>", "title": "需求" },
|
|
69
|
+
{ "text": "\n当前阶段:" },
|
|
70
|
+
{ "ref": "$.start.<当前阶段_fieldId>", "title": "当前阶段" },
|
|
71
|
+
{ "text": "\n评审通过并合并后,才会进入下一步" },
|
|
72
|
+
{ "text": "\n" },
|
|
73
|
+
{ "ref": "$.start.<评审进展_fieldId>" },
|
|
74
|
+
{ "text": "\n评审链接:\n" },
|
|
75
|
+
{ "ref": "$.start.<当前CR链接_fieldId>", "title": "待评审 CR" }
|
|
76
|
+
],
|
|
77
|
+
"to": { "users": [{ "ref": "$.notify_each_pm_owner.item.<module_config_PM负责人_fieldId>" }] }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "workflow-dsl/v1",
|
|
3
|
+
"name": "人工答复续跑",
|
|
4
|
+
"description": "真人填写人工答复后恢复同一变更的既有当前步骤,具体答复完整性仍由 recipe 校验。",
|
|
5
|
+
"trigger": "start",
|
|
6
|
+
"steps": {
|
|
7
|
+
"start": {
|
|
8
|
+
"type": "WhenRecordUpdated",
|
|
9
|
+
"next": "resume",
|
|
10
|
+
"data": {
|
|
11
|
+
"sheetId": "<sheetId>",
|
|
12
|
+
"updatedFields": ["<人工答复_fieldId>"],
|
|
13
|
+
"where": {
|
|
14
|
+
"and": [
|
|
15
|
+
{
|
|
16
|
+
"left": "<状态_fieldId>",
|
|
17
|
+
"op": "EQ",
|
|
18
|
+
"right": { "option": "<状态_blocked_optionId>" }
|
|
19
|
+
},
|
|
20
|
+
{ "left": "<AI问题_fieldId>", "op": "EXIST" },
|
|
21
|
+
{ "left": "<人工答复_fieldId>", "op": "EXIST" }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"resume": {
|
|
27
|
+
"type": "UpdateRecord",
|
|
28
|
+
"next": null,
|
|
29
|
+
"data": {
|
|
30
|
+
"sheetId": "<sheetId>",
|
|
31
|
+
"target": {
|
|
32
|
+
"type": "previous",
|
|
33
|
+
"step": "start",
|
|
34
|
+
"rowId": { "ref": "$.start.rowId" }
|
|
35
|
+
},
|
|
36
|
+
"values": {
|
|
37
|
+
"<状态_fieldId>": { "option": "<状态_active_optionId>" }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "workflow-dsl/v1",
|
|
3
|
+
"name": "技术方案评审 CR 待审通知",
|
|
4
|
+
"description": "技术方案评审阶段存在待审 CR 时,按模块通知 Dev负责人。",
|
|
5
|
+
"trigger": "start",
|
|
6
|
+
"_tables": {
|
|
7
|
+
"module_config": {
|
|
8
|
+
"name": "模块配置表",
|
|
9
|
+
"fields": [
|
|
10
|
+
{
|
|
11
|
+
"name": "模块名称",
|
|
12
|
+
"type": "text"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "模块说明",
|
|
16
|
+
"type": "text"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "典型例子",
|
|
20
|
+
"type": "text"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "PM负责人",
|
|
24
|
+
"type": "user"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "Dev负责人",
|
|
28
|
+
"type": "user"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"steps": {
|
|
34
|
+
"start": {
|
|
35
|
+
"type": "WhenRecordUpdated",
|
|
36
|
+
"next": "find_module",
|
|
37
|
+
"data": {
|
|
38
|
+
"sheetId": "<sheetId>",
|
|
39
|
+
"updatedFields": [
|
|
40
|
+
"<当前CR链接_fieldId>",
|
|
41
|
+
"<当前阶段_fieldId>",
|
|
42
|
+
"<评审进展_fieldId>"
|
|
43
|
+
],
|
|
44
|
+
"where": {
|
|
45
|
+
"and": [
|
|
46
|
+
{
|
|
47
|
+
"left": "<当前阶段_fieldId>",
|
|
48
|
+
"op": "EQ",
|
|
49
|
+
"right": {
|
|
50
|
+
"option": "<当前阶段_技术方案评审_optionId>"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"left": "<当前CR链接_fieldId>",
|
|
55
|
+
"op": "EXIST"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"find_module": {
|
|
62
|
+
"type": "FindRecords",
|
|
63
|
+
"next": "notify_each_dev_owner",
|
|
64
|
+
"data": {
|
|
65
|
+
"sheetId": "<module_config_sheetId>",
|
|
66
|
+
"where": {
|
|
67
|
+
"left": "<module_config_模块名称_fieldId>",
|
|
68
|
+
"op": "EQ",
|
|
69
|
+
"right": {
|
|
70
|
+
"ref": "$.start.<模块_fieldId>"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"outputFields": [
|
|
74
|
+
"<module_config_Dev负责人_fieldId>"
|
|
75
|
+
],
|
|
76
|
+
"terminateIfNotFound": true
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"notify_each_dev_owner": {
|
|
80
|
+
"type": "Loop",
|
|
81
|
+
"loopEntry": "send",
|
|
82
|
+
"next": null,
|
|
83
|
+
"data": {
|
|
84
|
+
"mode": "array",
|
|
85
|
+
"items": {
|
|
86
|
+
"ref": "$.find_module.records[*]"
|
|
87
|
+
},
|
|
88
|
+
"maxRuns": 20
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"send": {
|
|
92
|
+
"type": "SendMessage",
|
|
93
|
+
"next": null,
|
|
94
|
+
"data": {
|
|
95
|
+
"title": "CR待审",
|
|
96
|
+
"content": [
|
|
97
|
+
{
|
|
98
|
+
"text": "需求:"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"ref": "$.start.<需求_fieldId>",
|
|
102
|
+
"title": "需求"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"text": "\n当前阶段:"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"ref": "$.start.<当前阶段_fieldId>",
|
|
109
|
+
"title": "当前阶段"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"text": "\n评审通过并合并后,才会进入下一步"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"text": "\n"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"ref": "$.start.<评审进展_fieldId>"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"text": "\n评审链接:\n"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"ref": "$.start.<当前CR链接_fieldId>",
|
|
125
|
+
"title": "待评审 CR"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"to": {
|
|
129
|
+
"users": [
|
|
130
|
+
{
|
|
131
|
+
"ref": "$.notify_each_dev_owner.item.<module_config_Dev负责人_fieldId>"
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|