@objectstack/plugin-approvals 17.0.0-rc.0 → 17.0.0-rc.1

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +439 -0
  2. package/dist/index.d.mts +2304 -3491
  3. package/dist/index.d.ts +2304 -3491
  4. package/dist/index.js +116 -43
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +114 -41
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +16 -9
  9. package/.turbo/turbo-build.log +0 -22
  10. package/scripts/i18n-extract.config.ts +0 -38
  11. package/src/action-link-pages.ts +0 -102
  12. package/src/approval-actor-impersonation.test.ts +0 -330
  13. package/src/approval-node.test.ts +0 -356
  14. package/src/approval-node.ts +0 -196
  15. package/src/approval-revise.test.ts +0 -418
  16. package/src/approval-service.test.ts +0 -2858
  17. package/src/approval-service.ts +0 -3617
  18. package/src/approvals-plugin.ts +0 -294
  19. package/src/approver-cross-org.integration.test.ts +0 -206
  20. package/src/approver-org-scope.test.ts +0 -201
  21. package/src/approver-org-scope.ts +0 -261
  22. package/src/index.ts +0 -42
  23. package/src/lifecycle-hooks.ts +0 -201
  24. package/src/nav-contribution.test.ts +0 -50
  25. package/src/record-lock-schedule-run.integration.test.ts +0 -206
  26. package/src/status-mirror-cascade.integration.test.ts +0 -224
  27. package/src/sys-approval-action.object.ts +0 -149
  28. package/src/sys-approval-approver.object.ts +0 -85
  29. package/src/sys-approval-delegation.object.test.ts +0 -42
  30. package/src/sys-approval-delegation.object.ts +0 -142
  31. package/src/sys-approval-request.object.test.ts +0 -116
  32. package/src/sys-approval-request.object.ts +0 -413
  33. package/src/sys-approval-token.object.ts +0 -101
  34. package/src/translations/bundle-ownership.test.ts +0 -48
  35. package/src/translations/en.objects.generated.ts +0 -311
  36. package/src/translations/es-ES.objects.generated.ts +0 -311
  37. package/src/translations/index.ts +0 -23
  38. package/src/translations/ja-JP.objects.generated.ts +0 -311
  39. package/src/translations/zh-CN.objects.generated.ts +0 -311
  40. package/tsconfig.json +0 -10
@@ -1,311 +0,0 @@
1
- // Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
2
-
3
- /**
4
- * Auto-generated by 'os i18n extract' for locale 'ja-JP'.
5
- * Edit translations in place; re-run extract (with --merge) to fill new gaps.
6
- * Do not hand-edit the structure — only the leaf string values.
7
- */
8
-
9
- import type { TranslationData } from '@objectstack/spec/system';
10
-
11
- export const jaJPObjects: NonNullable<TranslationData['objects']> = {
12
- sys_approval_request: {
13
- label: "承認リクエスト",
14
- pluralLabel: "承認リクエスト",
15
- description: "送信ごとに追跡されるライブ承認インスタンス",
16
- fields: {
17
- id: {
18
- label: "リクエスト ID"
19
- },
20
- organization_id: {
21
- label: "組織",
22
- help: "この承認リクエストを所有するテナント(送信者コンテキストから伝播)"
23
- },
24
- process_name: {
25
- label: "ソース",
26
- help: "リクエストの発生元 — ノード駆動の承認では `flow:<flowName|nodeId>`"
27
- },
28
- object_name: {
29
- label: "オブジェクト"
30
- },
31
- record_id: {
32
- label: "レコード ID"
33
- },
34
- submitter_id: {
35
- label: "送信者"
36
- },
37
- submitter_comment: {
38
- label: "送信者コメント"
39
- },
40
- status: {
41
- label: "ステータス",
42
- help: "リクエストのライフサイクル状態",
43
- options: {
44
- pending: "保留中",
45
- approved: "承認済み",
46
- rejected: "却下済み",
47
- recalled: "取り消し済み",
48
- returned: "差し戻し済み"
49
- }
50
- },
51
- current_step: {
52
- label: "現在のステップ",
53
- help: "承認待ちのステップの機械名"
54
- },
55
- current_step_index: {
56
- label: "現在のステップ番号"
57
- },
58
- pending_approvers: {
59
- label: "承認待ち承認者",
60
- help: "現在のステップを処理できるユーザー ID のカンマ区切りリスト"
61
- },
62
- payload_json: {
63
- label: "スナップショット",
64
- help: "送信時のレコードスナップショット"
65
- },
66
- flow_run_id: {
67
- label: "Flow Run",
68
- help: "Suspended automation run id this request gates (ADR-0019). The decision resumes it."
69
- },
70
- flow_node_id: {
71
- label: "Flow Node",
72
- help: "Approval node id within the flow that opened this request (ADR-0019)."
73
- },
74
- node_config_json: {
75
- label: "Node Config",
76
- help: "Snapshot of the Approval node config (approvers/behavior) for node-driven requests (ADR-0019)."
77
- },
78
- completed_at: {
79
- label: "完了日時"
80
- },
81
- created_at: {
82
- label: "作成日時"
83
- },
84
- updated_at: {
85
- label: "更新日時"
86
- }
87
- },
88
- _views: {
89
- my_pending: {
90
- label: "自分の保留中",
91
- emptyState: {
92
- title: "承認待ちはありません",
93
- message: "すべて処理済みです。あなたの承認を待つリクエストはありません。"
94
- }
95
- },
96
- submitted_by_me: {
97
- label: "自分が送信"
98
- },
99
- completed: {
100
- label: "完了済み"
101
- },
102
- all_requests: {
103
- label: "すべて"
104
- }
105
- },
106
- _actions: {
107
- approval_approve: {
108
- label: "承認",
109
- successMessage: "承認しました。",
110
- params: {
111
- comment: {
112
- label: "コメント"
113
- },
114
- attachments: {
115
- label: "添付ファイル"
116
- }
117
- }
118
- },
119
- approval_reject: {
120
- label: "却下",
121
- confirmText: "このリクエストを却下しますか?却下はすべての承認者に対して最終決定になります。",
122
- successMessage: "却下しました。",
123
- params: {
124
- comment: {
125
- label: "コメント"
126
- },
127
- attachments: {
128
- label: "添付ファイル"
129
- }
130
- }
131
- },
132
- approval_reassign: {
133
- label: "再割り当て",
134
- successMessage: "再割り当てしました。",
135
- params: {
136
- to: {
137
- label: "新しい承認者",
138
- helpText: "このステップを引き継ぐユーザー"
139
- },
140
- comment: {
141
- label: "コメント"
142
- }
143
- }
144
- },
145
- approval_send_back: {
146
- label: "差し戻し",
147
- successMessage: "修正のため差し戻しました。",
148
- params: {
149
- comment: {
150
- label: "理由"
151
- }
152
- }
153
- },
154
- approval_request_info: {
155
- label: "追加情報を依頼",
156
- successMessage: "追加情報を依頼しました。",
157
- params: {
158
- comment: {
159
- label: "何が必要ですか?"
160
- }
161
- }
162
- },
163
- approval_remind: {
164
- label: "リマインダー送信",
165
- successMessage: "リマインダーを送信しました。",
166
- params: {
167
- comment: {
168
- label: "メモ"
169
- }
170
- }
171
- },
172
- approval_recall: {
173
- label: "取り下げ",
174
- confirmText: "このリクエストを取り下げますか?承認者は操作できなくなり、レコードのロックが解除されます。",
175
- successMessage: "取り下げました。",
176
- params: {
177
- comment: {
178
- label: "コメント"
179
- }
180
- }
181
- },
182
- approval_resubmit: {
183
- label: "再提出",
184
- successMessage: "再提出しました。",
185
- params: {
186
- comment: {
187
- label: "何を変更しましたか?"
188
- }
189
- }
190
- }
191
- }
192
- },
193
- sys_approval_action: {
194
- label: "承認アクション",
195
- pluralLabel: "承認アクション",
196
- description: "承認アクションの追記専用監査証跡",
197
- fields: {
198
- id: {
199
- label: "アクション ID"
200
- },
201
- organization_id: {
202
- label: "組織",
203
- help: "このアクションを所有するテナント(親リクエストと同じ)"
204
- },
205
- request_id: {
206
- label: "リクエスト"
207
- },
208
- step_name: {
209
- label: "ステップ",
210
- help: "アクション時点のステップの機械名"
211
- },
212
- step_index: {
213
- label: "ステップ番号"
214
- },
215
- action: {
216
- label: "アクション",
217
- options: {
218
- submit: "申請",
219
- approve: "承認",
220
- reject: "却下",
221
- recall: "取消",
222
- escalate: "エスカレーション",
223
- reassign: "再割り当て",
224
- remind: "リマインダー",
225
- request_info: "追加情報依頼",
226
- comment: "コメント",
227
- revise: "差し戻し",
228
- resubmit: "再提出",
229
- ooo_substitute: "不在時代理"
230
- }
231
- },
232
- actor_id: {
233
- label: "操作者"
234
- },
235
- comment: {
236
- label: "コメント"
237
- },
238
- attachments: {
239
- label: "添付ファイル",
240
- help: "この操作を裏付けるファイル——署名済み契約書や証憑など(#3266)。"
241
- },
242
- created_at: {
243
- label: "作成日時"
244
- }
245
- },
246
- _views: {
247
- recent: {
248
- label: "最近",
249
- emptyState: {
250
- title: "承認操作はまだありません",
251
- message: "承認が進むと操作は自動的に記録されます。"
252
- }
253
- },
254
- by_actor: {
255
- label: "操作者別"
256
- },
257
- all_actions: {
258
- label: "すべて"
259
- }
260
- }
261
- },
262
- sys_approval_delegation: {
263
- label: "Approval Delegation",
264
- pluralLabel: "Approval Delegations",
265
- description: "Self-service out-of-office rule: route this user's approver slots to a delegate within a time window (#1322 M1).",
266
- fields: {
267
- id: {
268
- label: "Delegation ID"
269
- },
270
- delegator_id: {
271
- label: "Delegator",
272
- help: "The user going out of office; their individually-routed approver slots are rerouted while active."
273
- },
274
- delegate_id: {
275
- label: "Delegate",
276
- help: "The backup who receives the delegator's approvals while this rule is active. Acts under their own identity."
277
- },
278
- valid_from: {
279
- label: "Valid From",
280
- help: "Rule is inactive before this instant. Null = active immediately. Enforced at resolution time via isGrantActive (ADR-0091 D2 predicate) — never by a background job."
281
- },
282
- valid_until: {
283
- label: "Valid Until",
284
- help: "Rule is inactive AT and AFTER this instant (half-open [from, until), UTC). Null = never expires."
285
- },
286
- reason: {
287
- label: "Reason",
288
- help: "Why the delegation exists (e.g. \"Annual leave 5/26–5/30\"). Recorded on the substitution audit row."
289
- },
290
- organization_id: {
291
- label: "Organization",
292
- help: "Tenant that owns this rule; null = applies across tenants for this delegator."
293
- },
294
- created_at: {
295
- label: "Created At"
296
- },
297
- updated_at: {
298
- label: "Updated At"
299
- }
300
- },
301
- _views: {
302
- active: {
303
- label: "Active",
304
- emptyState: {
305
- title: "No delegations",
306
- message: "Declare an out-of-office delegation so approvals route to a backup while you are away."
307
- }
308
- }
309
- }
310
- }
311
- };
@@ -1,311 +0,0 @@
1
- // Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
2
-
3
- /**
4
- * Auto-generated by 'os i18n extract' for locale 'zh-CN'.
5
- * Edit translations in place; re-run extract (with --merge) to fill new gaps.
6
- * Do not hand-edit the structure — only the leaf string values.
7
- */
8
-
9
- import type { TranslationData } from '@objectstack/spec/system';
10
-
11
- export const zhCNObjects: NonNullable<TranslationData['objects']> = {
12
- sys_approval_request: {
13
- label: "审批请求",
14
- pluralLabel: "审批请求",
15
- description: "按提交记录跟踪的实时审批实例",
16
- fields: {
17
- id: {
18
- label: "请求 ID"
19
- },
20
- organization_id: {
21
- label: "组织",
22
- help: "拥有该审批请求的租户(从提交方上下文传播)"
23
- },
24
- process_name: {
25
- label: "来源",
26
- help: "请求来源 —— 节点驱动的审批为 `flow:<flowName|nodeId>`"
27
- },
28
- object_name: {
29
- label: "对象"
30
- },
31
- record_id: {
32
- label: "记录 ID"
33
- },
34
- submitter_id: {
35
- label: "提交人"
36
- },
37
- submitter_comment: {
38
- label: "提交备注"
39
- },
40
- status: {
41
- label: "状态",
42
- help: "请求的生命周期状态",
43
- options: {
44
- pending: "待处理",
45
- approved: "已批准",
46
- rejected: "已拒绝",
47
- recalled: "已撤回",
48
- returned: "已退回修改"
49
- }
50
- },
51
- current_step: {
52
- label: "当前步骤",
53
- help: "当前等待审批的步骤机器名称"
54
- },
55
- current_step_index: {
56
- label: "当前步骤索引"
57
- },
58
- pending_approvers: {
59
- label: "待审批人",
60
- help: "可在当前步骤执行操作的用户 ID,逗号分隔"
61
- },
62
- payload_json: {
63
- label: "快照",
64
- help: "提交时的记录快照"
65
- },
66
- flow_run_id: {
67
- label: "Flow Run",
68
- help: "Suspended automation run id this request gates (ADR-0019). The decision resumes it."
69
- },
70
- flow_node_id: {
71
- label: "Flow Node",
72
- help: "Approval node id within the flow that opened this request (ADR-0019)."
73
- },
74
- node_config_json: {
75
- label: "Node Config",
76
- help: "Snapshot of the Approval node config (approvers/behavior) for node-driven requests (ADR-0019)."
77
- },
78
- completed_at: {
79
- label: "完成时间"
80
- },
81
- created_at: {
82
- label: "创建时间"
83
- },
84
- updated_at: {
85
- label: "更新时间"
86
- }
87
- },
88
- _views: {
89
- my_pending: {
90
- label: "我的待办",
91
- emptyState: {
92
- title: "暂无待办审批",
93
- message: "全部处理完毕,没有等待你审批的请求。"
94
- }
95
- },
96
- submitted_by_me: {
97
- label: "我提交的"
98
- },
99
- completed: {
100
- label: "已完成"
101
- },
102
- all_requests: {
103
- label: "全部"
104
- }
105
- },
106
- _actions: {
107
- approval_approve: {
108
- label: "通过",
109
- successMessage: "已通过。",
110
- params: {
111
- comment: {
112
- label: "审批意见"
113
- },
114
- attachments: {
115
- label: "附件"
116
- }
117
- }
118
- },
119
- approval_reject: {
120
- label: "拒绝",
121
- confirmText: "拒绝该请求?拒绝对所有审批人立即生效。",
122
- successMessage: "已拒绝。",
123
- params: {
124
- comment: {
125
- label: "审批意见"
126
- },
127
- attachments: {
128
- label: "附件"
129
- }
130
- }
131
- },
132
- approval_reassign: {
133
- label: "转签",
134
- successMessage: "已转签。",
135
- params: {
136
- to: {
137
- label: "新审批人",
138
- helpText: "将此审批步骤转交给的用户"
139
- },
140
- comment: {
141
- label: "备注"
142
- }
143
- }
144
- },
145
- approval_send_back: {
146
- label: "退回修改",
147
- successMessage: "已退回修改。",
148
- params: {
149
- comment: {
150
- label: "原因"
151
- }
152
- }
153
- },
154
- approval_request_info: {
155
- label: "退回补充",
156
- successMessage: "已退回给申请人补充材料。",
157
- params: {
158
- comment: {
159
- label: "需要申请人补充什么?"
160
- }
161
- }
162
- },
163
- approval_remind: {
164
- label: "催办",
165
- successMessage: "已发送催办。",
166
- params: {
167
- comment: {
168
- label: "备注"
169
- }
170
- }
171
- },
172
- approval_recall: {
173
- label: "撤回",
174
- confirmText: "撤回该请求?撤回后审批人将无法继续处理,记录随即解锁。",
175
- successMessage: "已撤回。",
176
- params: {
177
- comment: {
178
- label: "备注"
179
- }
180
- }
181
- },
182
- approval_resubmit: {
183
- label: "重新提交",
184
- successMessage: "已重新提交。",
185
- params: {
186
- comment: {
187
- label: "你修改了什么?"
188
- }
189
- }
190
- }
191
- }
192
- },
193
- sys_approval_action: {
194
- label: "审批动作",
195
- pluralLabel: "审批动作",
196
- description: "追加写入的审批操作审计记录",
197
- fields: {
198
- id: {
199
- label: "动作 ID"
200
- },
201
- organization_id: {
202
- label: "组织",
203
- help: "拥有该动作的租户(与父请求保持一致)"
204
- },
205
- request_id: {
206
- label: "请求"
207
- },
208
- step_name: {
209
- label: "步骤",
210
- help: "执行该动作时对应步骤的机器名称"
211
- },
212
- step_index: {
213
- label: "步骤索引"
214
- },
215
- action: {
216
- label: "操作",
217
- options: {
218
- submit: "提交",
219
- approve: "批准",
220
- reject: "拒绝",
221
- recall: "撤回",
222
- escalate: "升级",
223
- reassign: "转签",
224
- remind: "催办",
225
- request_info: "要求补充材料",
226
- comment: "评论",
227
- revise: "退回修改",
228
- resubmit: "重新提交",
229
- ooo_substitute: "不在岗改派"
230
- }
231
- },
232
- actor_id: {
233
- label: "执行人"
234
- },
235
- comment: {
236
- label: "评论"
237
- },
238
- attachments: {
239
- label: "附件",
240
- help: "支持该操作的文件——例如已签署的合同或证明材料(#3266)。"
241
- },
242
- created_at: {
243
- label: "创建时间"
244
- }
245
- },
246
- _views: {
247
- recent: {
248
- label: "最近",
249
- emptyState: {
250
- title: "暂无审批操作记录",
251
- message: "审批推进时会自动记录操作。"
252
- }
253
- },
254
- by_actor: {
255
- label: "按执行人"
256
- },
257
- all_actions: {
258
- label: "全部"
259
- }
260
- }
261
- },
262
- sys_approval_delegation: {
263
- label: "审批委派",
264
- pluralLabel: "审批委派",
265
- description: "自助不在岗规则:在时间窗内把该用户的审批人槽位改派给候补人(#1322 M1)。",
266
- fields: {
267
- id: {
268
- label: "委派 ID"
269
- },
270
- delegator_id: {
271
- label: "委派人",
272
- help: "即将不在岗的用户;规则生效期间,路由到其个人的审批人槽位将被改派。"
273
- },
274
- delegate_id: {
275
- label: "候补人",
276
- help: "规则生效期间接收委派人审批的候补人。以其本人身份行使。"
277
- },
278
- valid_from: {
279
- label: "生效时间",
280
- help: "此刻之前规则不生效。留空 = 立即生效。在解析时通过 isGrantActive 强制(ADR-0091 D2 判定式)——绝不依赖后台任务。"
281
- },
282
- valid_until: {
283
- label: "失效时间",
284
- help: "此刻(含)及之后规则不生效(半开区间 [from, until),UTC)。留空 = 永不过期。"
285
- },
286
- reason: {
287
- label: "原因",
288
- help: "委派存在的原因(例如“年假 5/26–5/30”)。会记入改派审计行。"
289
- },
290
- organization_id: {
291
- label: "组织",
292
- help: "拥有此规则的租户;留空 = 对该委派人跨租户生效。"
293
- },
294
- created_at: {
295
- label: "创建时间"
296
- },
297
- updated_at: {
298
- label: "更新时间"
299
- }
300
- },
301
- _views: {
302
- active: {
303
- label: "生效中",
304
- emptyState: {
305
- title: "暂无委派",
306
- message: "声明一条不在岗委派,休假期间审批自动改派给候补人。"
307
- }
308
- }
309
- }
310
- }
311
- };
package/tsconfig.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "./dist",
5
- "rootDir": "./src",
6
- "types": ["node"]
7
- },
8
- "include": ["src/**/*"],
9
- "exclude": ["dist", "node_modules", "**/*.test.ts"]
10
- }