progmune-runtime 3.7.21 → 3.7.23
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/CHANGELOG.md +33 -0
- package/README.md +10 -0
- package/README.zh-CN.md +10 -0
- package/dist/call-sequence.js +58 -4
- package/dist/call-sequence.test.js +55 -0
- package/dist/certify.js +20 -15
- package/dist/check.js +18 -0
- package/dist/decision-engine.js +26 -3
- package/dist/execute.js +84 -1
- package/dist/extract-ir-java.js +190 -27
- package/dist/extract-ir-java.test.js +163 -2
- package/dist/frameworks/spring-detector.js +27 -3
- package/dist/frameworks/spring-detector.test.js +73 -0
- package/dist/mcp-server.mjs +1 -0
- package/dist/policy/cli.js +8 -1
- package/dist/policy/engine.js +82 -18
- package/dist/policy/engine.test.js +135 -0
- package/dist/sdk.js +1 -1
- package/dist/ssg-validator.js +3 -0
- package/dist/trust/engine.js +66 -6
- package/dist/trust/protocol-rules-liveness.test.js +114 -0
- package/dist/trust/ssg-bridge.js +8 -2
- package/dist/trust/ssg-bridge.test.js +46 -0
- package/package.json +6 -3
- package/protocols.json +300 -152
- package/scripts/init-policy.js +49 -0
- package/templates/.progmune-policy.tier1.json +5 -0
- package/templates/.progmune-policy.tier2.json +9 -0
- package/templates/.progmune-policy.tier3.json +11 -0
package/protocols.json
CHANGED
|
@@ -127,7 +127,8 @@
|
|
|
127
127
|
"loginMutation.mutateAsync",
|
|
128
128
|
"signIn",
|
|
129
129
|
"logIn"
|
|
130
|
-
]
|
|
130
|
+
],
|
|
131
|
+
"status": "confirmed"
|
|
131
132
|
},
|
|
132
133
|
"generate_jwt": {
|
|
133
134
|
"namespace": "auth",
|
|
@@ -143,7 +144,8 @@
|
|
|
143
144
|
"SignJWT",
|
|
144
145
|
"auth.generateToken",
|
|
145
146
|
"auth.issueToken"
|
|
146
|
-
]
|
|
147
|
+
],
|
|
148
|
+
"status": "confirmed"
|
|
147
149
|
},
|
|
148
150
|
"create_session": {
|
|
149
151
|
"namespace": "auth",
|
|
@@ -162,7 +164,8 @@
|
|
|
162
164
|
"express-session",
|
|
163
165
|
"cookie-session",
|
|
164
166
|
"auth.createSession"
|
|
165
|
-
]
|
|
167
|
+
],
|
|
168
|
+
"status": "confirmed"
|
|
166
169
|
},
|
|
167
170
|
"revoke_token": {
|
|
168
171
|
"namespace": "auth",
|
|
@@ -181,7 +184,8 @@
|
|
|
181
184
|
"jwt.revoke",
|
|
182
185
|
"auth.revokeToken",
|
|
183
186
|
"auth.blacklistToken"
|
|
184
|
-
]
|
|
187
|
+
],
|
|
188
|
+
"status": "confirmed"
|
|
185
189
|
},
|
|
186
190
|
"logout": {
|
|
187
191
|
"namespace": "auth",
|
|
@@ -200,7 +204,8 @@
|
|
|
200
204
|
"req.logout",
|
|
201
205
|
"auth.logout",
|
|
202
206
|
"auth.signOut"
|
|
203
|
-
]
|
|
207
|
+
],
|
|
208
|
+
"status": "confirmed"
|
|
204
209
|
},
|
|
205
210
|
"open_file": {
|
|
206
211
|
"namespace": "file",
|
|
@@ -215,7 +220,8 @@
|
|
|
215
220
|
"fs.createReadStream",
|
|
216
221
|
"fs.createWriteStream",
|
|
217
222
|
"fs.promises.open"
|
|
218
|
-
]
|
|
223
|
+
],
|
|
224
|
+
"status": "confirmed"
|
|
219
225
|
},
|
|
220
226
|
"read_file": {
|
|
221
227
|
"namespace": "file",
|
|
@@ -227,7 +233,8 @@
|
|
|
227
233
|
"aliases": [
|
|
228
234
|
"stream.read",
|
|
229
235
|
"fs.createReadStream"
|
|
230
|
-
]
|
|
236
|
+
],
|
|
237
|
+
"status": "confirmed"
|
|
231
238
|
},
|
|
232
239
|
"write_file": {
|
|
233
240
|
"namespace": "file",
|
|
@@ -239,7 +246,8 @@
|
|
|
239
246
|
"aliases": [
|
|
240
247
|
"stream.write",
|
|
241
248
|
"fs.createWriteStream"
|
|
242
|
-
]
|
|
249
|
+
],
|
|
250
|
+
"status": "confirmed"
|
|
243
251
|
},
|
|
244
252
|
"close_file": {
|
|
245
253
|
"namespace": "file",
|
|
@@ -257,7 +265,8 @@
|
|
|
257
265
|
"fs.promises.close",
|
|
258
266
|
"stream.end",
|
|
259
267
|
"stream.destroy"
|
|
260
|
-
]
|
|
268
|
+
],
|
|
269
|
+
"status": "confirmed"
|
|
261
270
|
},
|
|
262
271
|
"connect_db": {
|
|
263
272
|
"namespace": "db",
|
|
@@ -278,7 +287,8 @@
|
|
|
278
287
|
"sequelize.authenticate",
|
|
279
288
|
"knex.initialize",
|
|
280
289
|
"db.connect"
|
|
281
|
-
]
|
|
290
|
+
],
|
|
291
|
+
"status": "confirmed"
|
|
282
292
|
},
|
|
283
293
|
"query_db": {
|
|
284
294
|
"namespace": "db",
|
|
@@ -339,7 +349,8 @@
|
|
|
339
349
|
"pg.*",
|
|
340
350
|
"drizzle.*",
|
|
341
351
|
"orm.*"
|
|
342
|
-
]
|
|
352
|
+
],
|
|
353
|
+
"status": "confirmed"
|
|
343
354
|
},
|
|
344
355
|
"disconnect_db": {
|
|
345
356
|
"namespace": "db",
|
|
@@ -368,7 +379,8 @@
|
|
|
368
379
|
"connection.close",
|
|
369
380
|
"pool.end",
|
|
370
381
|
"pool.close"
|
|
371
|
-
]
|
|
382
|
+
],
|
|
383
|
+
"status": "confirmed"
|
|
372
384
|
},
|
|
373
385
|
"extractIR": {
|
|
374
386
|
"namespace": "dev_pipeline",
|
|
@@ -379,7 +391,8 @@
|
|
|
379
391
|
"invalidate": [
|
|
380
392
|
"IR_STALE"
|
|
381
393
|
],
|
|
382
|
-
"description": "从源码提取 IR → 产出 IR_EXTRACTED 状态"
|
|
394
|
+
"description": "从源码提取 IR → 产出 IR_EXTRACTED 状态",
|
|
395
|
+
"status": "confirmed"
|
|
383
396
|
},
|
|
384
397
|
"validateAction": {
|
|
385
398
|
"namespace": "dev_pipeline",
|
|
@@ -389,7 +402,8 @@
|
|
|
389
402
|
"post_states": [
|
|
390
403
|
"ACTION_VALIDATED"
|
|
391
404
|
],
|
|
392
|
-
"description": "校验单个动作合法性 → 需要 IR 已提取"
|
|
405
|
+
"description": "校验单个动作合法性 → 需要 IR 已提取",
|
|
406
|
+
"status": "confirmed"
|
|
393
407
|
},
|
|
394
408
|
"validateActionSequence": {
|
|
395
409
|
"namespace": "dev_pipeline",
|
|
@@ -402,7 +416,8 @@
|
|
|
402
416
|
"invalidate": [
|
|
403
417
|
"ACTION_VALIDATED"
|
|
404
418
|
],
|
|
405
|
-
"description": "批量校验动作序列 → 需要动作已验证,校验后消耗"
|
|
419
|
+
"description": "批量校验动作序列 → 需要动作已验证,校验后消耗",
|
|
420
|
+
"status": "confirmed"
|
|
406
421
|
},
|
|
407
422
|
"emitCode": {
|
|
408
423
|
"namespace": "dev_pipeline",
|
|
@@ -415,7 +430,8 @@
|
|
|
415
430
|
"invalidate": [
|
|
416
431
|
"SEQUENCE_VALIDATED"
|
|
417
432
|
],
|
|
418
|
-
"description": "编译动作序列为目标代码 → 需要序列已验证"
|
|
433
|
+
"description": "编译动作序列为目标代码 → 需要序列已验证",
|
|
434
|
+
"status": "confirmed"
|
|
419
435
|
},
|
|
420
436
|
"recordSession": {
|
|
421
437
|
"namespace": "dev_pipeline",
|
|
@@ -428,55 +444,64 @@
|
|
|
428
444
|
"invalidate": [
|
|
429
445
|
"CODE_EMITTED"
|
|
430
446
|
],
|
|
431
|
-
"description": "保存执行会话到语料库 → 需要代码已生成"
|
|
447
|
+
"description": "保存执行会话到语料库 → 需要代码已生成",
|
|
448
|
+
"status": "confirmed"
|
|
432
449
|
},
|
|
433
450
|
"compute_hash": {
|
|
434
451
|
"namespace": "stateless",
|
|
435
452
|
"pre_states": [],
|
|
436
453
|
"post_states": [],
|
|
437
|
-
"description": "计算输入数据的哈希摘要 —— 纯函数/幂等"
|
|
454
|
+
"description": "计算输入数据的哈希摘要 —— 纯函数/幂等",
|
|
455
|
+
"status": "confirmed"
|
|
438
456
|
},
|
|
439
457
|
"validate_schema": {
|
|
440
458
|
"namespace": "stateless",
|
|
441
459
|
"pre_states": [],
|
|
442
460
|
"post_states": [],
|
|
443
|
-
"description": "对数据做 Schema 校验 —— 无副作用"
|
|
461
|
+
"description": "对数据做 Schema 校验 —— 无副作用",
|
|
462
|
+
"status": "confirmed"
|
|
444
463
|
},
|
|
445
464
|
"sanitize_input": {
|
|
446
465
|
"namespace": "stateless",
|
|
447
466
|
"pre_states": [],
|
|
448
467
|
"post_states": [],
|
|
449
|
-
"description": "清理用户输入,去除危险字符"
|
|
468
|
+
"description": "清理用户输入,去除危险字符",
|
|
469
|
+
"status": "confirmed"
|
|
450
470
|
},
|
|
451
471
|
"verify_checksum": {
|
|
452
472
|
"namespace": "stateless",
|
|
453
473
|
"pre_states": [],
|
|
454
474
|
"post_states": [],
|
|
455
|
-
"description": "通过校验和验证数据完整性"
|
|
475
|
+
"description": "通过校验和验证数据完整性",
|
|
476
|
+
"status": "confirmed"
|
|
456
477
|
},
|
|
457
478
|
"encode_payload": {
|
|
458
479
|
"namespace": "stateless",
|
|
459
480
|
"pre_states": [],
|
|
460
481
|
"post_states": [],
|
|
461
|
-
"description": "将数据编码为 base64 / wire format"
|
|
482
|
+
"description": "将数据编码为 base64 / wire format",
|
|
483
|
+
"status": "confirmed"
|
|
462
484
|
},
|
|
463
485
|
"decode_payload": {
|
|
464
486
|
"namespace": "stateless",
|
|
465
487
|
"pre_states": [],
|
|
466
488
|
"post_states": [],
|
|
467
|
-
"description": "从 wire format 解码回原始数据"
|
|
489
|
+
"description": "从 wire format 解码回原始数据",
|
|
490
|
+
"status": "confirmed"
|
|
468
491
|
},
|
|
469
492
|
"compress_buffer": {
|
|
470
493
|
"namespace": "stateless",
|
|
471
494
|
"pre_states": [],
|
|
472
495
|
"post_states": [],
|
|
473
|
-
"description": "压缩数据缓冲区"
|
|
496
|
+
"description": "压缩数据缓冲区",
|
|
497
|
+
"status": "confirmed"
|
|
474
498
|
},
|
|
475
499
|
"decompress_buffer": {
|
|
476
500
|
"namespace": "stateless",
|
|
477
501
|
"pre_states": [],
|
|
478
502
|
"post_states": [],
|
|
479
|
-
"description": "解压数据缓冲区"
|
|
503
|
+
"description": "解压数据缓冲区",
|
|
504
|
+
"status": "confirmed"
|
|
480
505
|
},
|
|
481
506
|
"begin_tx": {
|
|
482
507
|
"namespace": "transaction",
|
|
@@ -496,7 +521,8 @@
|
|
|
496
521
|
"knex.transaction",
|
|
497
522
|
"mongoose.startSession",
|
|
498
523
|
"pg.Client.query"
|
|
499
|
-
]
|
|
524
|
+
],
|
|
525
|
+
"status": "confirmed"
|
|
500
526
|
},
|
|
501
527
|
"commit_tx": {
|
|
502
528
|
"namespace": "transaction",
|
|
@@ -518,7 +544,8 @@
|
|
|
518
544
|
"sequelize.commit",
|
|
519
545
|
"knex.commit",
|
|
520
546
|
"mongoose.commitTransaction"
|
|
521
|
-
]
|
|
547
|
+
],
|
|
548
|
+
"status": "confirmed"
|
|
522
549
|
},
|
|
523
550
|
"rollback_tx": {
|
|
524
551
|
"namespace": "transaction",
|
|
@@ -540,7 +567,8 @@
|
|
|
540
567
|
"sequelize.rollback",
|
|
541
568
|
"knex.rollback",
|
|
542
569
|
"mongoose.abortTransaction"
|
|
543
|
-
]
|
|
570
|
+
],
|
|
571
|
+
"status": "confirmed"
|
|
544
572
|
},
|
|
545
573
|
"insert_record": {
|
|
546
574
|
"namespace": "transaction",
|
|
@@ -552,7 +580,8 @@
|
|
|
552
580
|
"tx.create",
|
|
553
581
|
"transaction.insert",
|
|
554
582
|
"transaction.create"
|
|
555
|
-
]
|
|
583
|
+
],
|
|
584
|
+
"status": "confirmed"
|
|
556
585
|
},
|
|
557
586
|
"update_record": {
|
|
558
587
|
"namespace": "transaction",
|
|
@@ -562,7 +591,8 @@
|
|
|
562
591
|
"aliases": [
|
|
563
592
|
"tx.update",
|
|
564
593
|
"transaction.update"
|
|
565
|
-
]
|
|
594
|
+
],
|
|
595
|
+
"status": "confirmed"
|
|
566
596
|
},
|
|
567
597
|
"delete_record": {
|
|
568
598
|
"namespace": "transaction",
|
|
@@ -574,7 +604,8 @@
|
|
|
574
604
|
"tx.remove",
|
|
575
605
|
"transaction.delete",
|
|
576
606
|
"transaction.remove"
|
|
577
|
-
]
|
|
607
|
+
],
|
|
608
|
+
"status": "confirmed"
|
|
578
609
|
},
|
|
579
610
|
"savepoint_create": {
|
|
580
611
|
"namespace": "transaction",
|
|
@@ -584,7 +615,8 @@
|
|
|
584
615
|
"post_states": [
|
|
585
616
|
"SAVEPOINT_HELD"
|
|
586
617
|
],
|
|
587
|
-
"description": "在活跃事务中创建具名保存点"
|
|
618
|
+
"description": "在活跃事务中创建具名保存点",
|
|
619
|
+
"status": "confirmed"
|
|
588
620
|
},
|
|
589
621
|
"savepoint_release": {
|
|
590
622
|
"namespace": "transaction",
|
|
@@ -597,7 +629,8 @@
|
|
|
597
629
|
"invalidate": [
|
|
598
630
|
"SAVEPOINT_HELD"
|
|
599
631
|
],
|
|
600
|
-
"description": "释放保存点,保留后续变更"
|
|
632
|
+
"description": "释放保存点,保留后续变更",
|
|
633
|
+
"status": "confirmed"
|
|
601
634
|
},
|
|
602
635
|
"rollback_to_savepoint": {
|
|
603
636
|
"namespace": "transaction",
|
|
@@ -610,7 +643,8 @@
|
|
|
610
643
|
"invalidate": [
|
|
611
644
|
"SAVEPOINT_HELD"
|
|
612
645
|
],
|
|
613
|
-
"description": "回滚到保存点,撤销保存点之后的变更"
|
|
646
|
+
"description": "回滚到保存点,撤销保存点之后的变更",
|
|
647
|
+
"status": "confirmed"
|
|
614
648
|
},
|
|
615
649
|
"prep_two_phase": {
|
|
616
650
|
"namespace": "transaction",
|
|
@@ -623,7 +657,8 @@
|
|
|
623
657
|
"invalidate": [
|
|
624
658
|
"TX_ACTIVE"
|
|
625
659
|
],
|
|
626
|
-
"description": "准备两阶段提交(表决阶段)"
|
|
660
|
+
"description": "准备两阶段提交(表决阶段)",
|
|
661
|
+
"status": "confirmed"
|
|
627
662
|
},
|
|
628
663
|
"evaluate_access": {
|
|
629
664
|
"namespace": "conditional",
|
|
@@ -633,7 +668,8 @@
|
|
|
633
668
|
"post_states": [
|
|
634
669
|
"COND_EVALUATED"
|
|
635
670
|
],
|
|
636
|
-
"description": "根据权限策略评估访问条件"
|
|
671
|
+
"description": "根据权限策略评估访问条件",
|
|
672
|
+
"status": "confirmed"
|
|
637
673
|
},
|
|
638
674
|
"grant_access": {
|
|
639
675
|
"namespace": "conditional",
|
|
@@ -646,7 +682,8 @@
|
|
|
646
682
|
"invalidate": [
|
|
647
683
|
"COND_EVALUATED"
|
|
648
684
|
],
|
|
649
|
-
"description": "TRUE 分支:授予访问权限"
|
|
685
|
+
"description": "TRUE 分支:授予访问权限",
|
|
686
|
+
"status": "confirmed"
|
|
650
687
|
},
|
|
651
688
|
"deny_access": {
|
|
652
689
|
"namespace": "conditional",
|
|
@@ -659,7 +696,8 @@
|
|
|
659
696
|
"invalidate": [
|
|
660
697
|
"COND_EVALUATED"
|
|
661
698
|
],
|
|
662
|
-
"description": "FALSE 分支:拒绝访问"
|
|
699
|
+
"description": "FALSE 分支:拒绝访问",
|
|
700
|
+
"status": "confirmed"
|
|
663
701
|
},
|
|
664
702
|
"log_granted": {
|
|
665
703
|
"namespace": "conditional",
|
|
@@ -673,7 +711,8 @@
|
|
|
673
711
|
"COND_ACCEPTED",
|
|
674
712
|
"COND_RESOLVED"
|
|
675
713
|
],
|
|
676
|
-
"description": "记录授权访问并结束条件判断"
|
|
714
|
+
"description": "记录授权访问并结束条件判断",
|
|
715
|
+
"status": "confirmed"
|
|
677
716
|
},
|
|
678
717
|
"log_denied": {
|
|
679
718
|
"namespace": "conditional",
|
|
@@ -687,7 +726,8 @@
|
|
|
687
726
|
"COND_REJECTED",
|
|
688
727
|
"COND_RESOLVED"
|
|
689
728
|
],
|
|
690
|
-
"description": "记录拒绝访问并结束条件判断"
|
|
729
|
+
"description": "记录拒绝访问并结束条件判断",
|
|
730
|
+
"status": "confirmed"
|
|
691
731
|
},
|
|
692
732
|
"bypass_condition": {
|
|
693
733
|
"namespace": "conditional",
|
|
@@ -701,7 +741,8 @@
|
|
|
701
741
|
"COND_EVALUATED",
|
|
702
742
|
"COND_RESOLVED"
|
|
703
743
|
],
|
|
704
|
-
"description": "短路:直接绕过条件检查"
|
|
744
|
+
"description": "短路:直接绕过条件检查",
|
|
745
|
+
"status": "confirmed"
|
|
705
746
|
},
|
|
706
747
|
"retry_evaluation": {
|
|
707
748
|
"namespace": "conditional",
|
|
@@ -714,7 +755,8 @@
|
|
|
714
755
|
"invalidate": [
|
|
715
756
|
"COND_EVALUATED"
|
|
716
757
|
],
|
|
717
|
-
"description": "重试:回到空闲状态重新评估"
|
|
758
|
+
"description": "重试:回到空闲状态重新评估",
|
|
759
|
+
"status": "confirmed"
|
|
718
760
|
},
|
|
719
761
|
"escalate_access": {
|
|
720
762
|
"namespace": "conditional",
|
|
@@ -727,7 +769,8 @@
|
|
|
727
769
|
"invalidate": [
|
|
728
770
|
"COND_REJECTED"
|
|
729
771
|
],
|
|
730
|
-
"description": "升级:将被拒绝的访问升级为通过"
|
|
772
|
+
"description": "升级:将被拒绝的访问升级为通过",
|
|
773
|
+
"status": "confirmed"
|
|
731
774
|
},
|
|
732
775
|
"audit_condition": {
|
|
733
776
|
"namespace": "conditional",
|
|
@@ -743,7 +786,8 @@
|
|
|
743
786
|
"COND_REJECTED",
|
|
744
787
|
"COND_RESOLVED"
|
|
745
788
|
],
|
|
746
|
-
"description": "审计:无论分支结果如何,记录条件判断结果"
|
|
789
|
+
"description": "审计:无论分支结果如何,记录条件判断结果",
|
|
790
|
+
"status": "confirmed"
|
|
747
791
|
},
|
|
748
792
|
"init_fetch_loop": {
|
|
749
793
|
"namespace": "loop",
|
|
@@ -753,7 +797,8 @@
|
|
|
753
797
|
"post_states": [
|
|
754
798
|
"FETCHING"
|
|
755
799
|
],
|
|
756
|
-
"description": "初始化获取循环,开始获取数据"
|
|
800
|
+
"description": "初始化获取循环,开始获取数据",
|
|
801
|
+
"status": "confirmed"
|
|
757
802
|
},
|
|
758
803
|
"fetch_batch": {
|
|
759
804
|
"namespace": "loop",
|
|
@@ -766,7 +811,8 @@
|
|
|
766
811
|
"invalidate": [
|
|
767
812
|
"FETCHING"
|
|
768
813
|
],
|
|
769
|
-
"description": "获取下一批数据"
|
|
814
|
+
"description": "获取下一批数据",
|
|
815
|
+
"status": "confirmed"
|
|
770
816
|
},
|
|
771
817
|
"has_more_data": {
|
|
772
818
|
"namespace": "loop",
|
|
@@ -779,7 +825,8 @@
|
|
|
779
825
|
"invalidate": [
|
|
780
826
|
"BATCH_READY"
|
|
781
827
|
],
|
|
782
|
-
"description": "检查还有更多数据 → 进入迭代体"
|
|
828
|
+
"description": "检查还有更多数据 → 进入迭代体",
|
|
829
|
+
"status": "confirmed"
|
|
783
830
|
},
|
|
784
831
|
"process_item": {
|
|
785
832
|
"namespace": "loop",
|
|
@@ -789,7 +836,8 @@
|
|
|
789
836
|
"post_states": [
|
|
790
837
|
"ITERATING"
|
|
791
838
|
],
|
|
792
|
-
"description": "处理单个数据项(在迭代体内自循环)"
|
|
839
|
+
"description": "处理单个数据项(在迭代体内自循环)",
|
|
840
|
+
"status": "confirmed"
|
|
793
841
|
},
|
|
794
842
|
"next_iteration": {
|
|
795
843
|
"namespace": "loop",
|
|
@@ -802,7 +850,8 @@
|
|
|
802
850
|
"invalidate": [
|
|
803
851
|
"ITERATING"
|
|
804
852
|
],
|
|
805
|
-
"description": "结束当前迭代 → 返回获取下一批"
|
|
853
|
+
"description": "结束当前迭代 → 返回获取下一批",
|
|
854
|
+
"status": "confirmed"
|
|
806
855
|
},
|
|
807
856
|
"exit_loop": {
|
|
808
857
|
"namespace": "loop",
|
|
@@ -816,7 +865,8 @@
|
|
|
816
865
|
"ITERATING",
|
|
817
866
|
"LOOP_DONE"
|
|
818
867
|
],
|
|
819
|
-
"description": "正常退出循环(所有数据已处理完毕)"
|
|
868
|
+
"description": "正常退出循环(所有数据已处理完毕)",
|
|
869
|
+
"status": "confirmed"
|
|
820
870
|
},
|
|
821
871
|
"retry_batch": {
|
|
822
872
|
"namespace": "loop",
|
|
@@ -827,7 +877,8 @@
|
|
|
827
877
|
"post_states": [
|
|
828
878
|
"FETCHING"
|
|
829
879
|
],
|
|
830
|
-
"description": "获取失败 → 重试当前批次"
|
|
880
|
+
"description": "获取失败 → 重试当前批次",
|
|
881
|
+
"status": "confirmed"
|
|
831
882
|
},
|
|
832
883
|
"timeout_exit": {
|
|
833
884
|
"namespace": "loop",
|
|
@@ -843,7 +894,8 @@
|
|
|
843
894
|
"ITERATING",
|
|
844
895
|
"LOOP_DONE"
|
|
845
896
|
],
|
|
846
|
-
"description": "超时紧急退出循环"
|
|
897
|
+
"description": "超时紧急退出循环",
|
|
898
|
+
"status": "confirmed"
|
|
847
899
|
},
|
|
848
900
|
"poll_status": {
|
|
849
901
|
"namespace": "loop",
|
|
@@ -853,7 +905,8 @@
|
|
|
853
905
|
"post_states": [
|
|
854
906
|
"ITERATING"
|
|
855
907
|
],
|
|
856
|
-
"description": "轮询状态更新(在迭代体内自循环)"
|
|
908
|
+
"description": "轮询状态更新(在迭代体内自循环)",
|
|
909
|
+
"status": "confirmed"
|
|
857
910
|
},
|
|
858
911
|
"auth_file_open": {
|
|
859
912
|
"namespace": "cross",
|
|
@@ -863,7 +916,8 @@
|
|
|
863
916
|
"post_states": [
|
|
864
917
|
"AUTH_FILE_GATE"
|
|
865
918
|
],
|
|
866
|
-
"description": "跨协议桥:认证 → 打开文件访问门"
|
|
919
|
+
"description": "跨协议桥:认证 → 打开文件访问门",
|
|
920
|
+
"status": "confirmed"
|
|
867
921
|
},
|
|
868
922
|
"auth_file_read": {
|
|
869
923
|
"namespace": "cross",
|
|
@@ -873,7 +927,8 @@
|
|
|
873
927
|
"post_states": [
|
|
874
928
|
"AUTH_FILE_GATE"
|
|
875
929
|
],
|
|
876
|
-
"description": "跨协议:通过认证门读取文件"
|
|
930
|
+
"description": "跨协议:通过认证门读取文件",
|
|
931
|
+
"status": "confirmed"
|
|
877
932
|
},
|
|
878
933
|
"auth_file_close": {
|
|
879
934
|
"namespace": "cross",
|
|
@@ -886,7 +941,8 @@
|
|
|
886
941
|
"invalidate": [
|
|
887
942
|
"AUTH_FILE_GATE"
|
|
888
943
|
],
|
|
889
|
-
"description": "跨协议:关闭经认证门的文件会话"
|
|
944
|
+
"description": "跨协议:关闭经认证门的文件会话",
|
|
945
|
+
"status": "confirmed"
|
|
890
946
|
},
|
|
891
947
|
"auth_db_connect": {
|
|
892
948
|
"namespace": "cross",
|
|
@@ -896,7 +952,8 @@
|
|
|
896
952
|
"post_states": [
|
|
897
953
|
"AUTH_DB_GATE"
|
|
898
954
|
],
|
|
899
|
-
"description": "跨协议桥:认证 → 打开数据库连接"
|
|
955
|
+
"description": "跨协议桥:认证 → 打开数据库连接",
|
|
956
|
+
"status": "confirmed"
|
|
900
957
|
},
|
|
901
958
|
"auth_db_query": {
|
|
902
959
|
"namespace": "cross",
|
|
@@ -906,7 +963,8 @@
|
|
|
906
963
|
"post_states": [
|
|
907
964
|
"AUTH_DB_GATE"
|
|
908
965
|
],
|
|
909
|
-
"description": "跨协议:通过认证门查询数据库"
|
|
966
|
+
"description": "跨协议:通过认证门查询数据库",
|
|
967
|
+
"status": "confirmed"
|
|
910
968
|
},
|
|
911
969
|
"auth_db_disconnect": {
|
|
912
970
|
"namespace": "cross",
|
|
@@ -919,7 +977,8 @@
|
|
|
919
977
|
"invalidate": [
|
|
920
978
|
"AUTH_DB_GATE"
|
|
921
979
|
],
|
|
922
|
-
"description": "跨协议:关闭经认证门的数据库连接"
|
|
980
|
+
"description": "跨协议:关闭经认证门的数据库连接",
|
|
981
|
+
"status": "confirmed"
|
|
923
982
|
},
|
|
924
983
|
"http_create_server": {
|
|
925
984
|
"namespace": "tls",
|
|
@@ -939,7 +998,8 @@
|
|
|
939
998
|
"koa.listen",
|
|
940
999
|
"next.start",
|
|
941
1000
|
"nuxt.listen"
|
|
942
|
-
]
|
|
1001
|
+
],
|
|
1002
|
+
"status": "confirmed"
|
|
943
1003
|
},
|
|
944
1004
|
"load_tls_config": {
|
|
945
1005
|
"namespace": "tls",
|
|
@@ -954,7 +1014,8 @@
|
|
|
954
1014
|
"express.application.use",
|
|
955
1015
|
"helmet",
|
|
956
1016
|
"cors"
|
|
957
|
-
]
|
|
1017
|
+
],
|
|
1018
|
+
"status": "confirmed"
|
|
958
1019
|
},
|
|
959
1020
|
"hash_password": {
|
|
960
1021
|
"namespace": "registration",
|
|
@@ -972,7 +1033,8 @@
|
|
|
972
1033
|
"scrypt.hash",
|
|
973
1034
|
"crypto.pbkdf2",
|
|
974
1035
|
"auth.hashPassword"
|
|
975
|
-
]
|
|
1036
|
+
],
|
|
1037
|
+
"status": "confirmed"
|
|
976
1038
|
},
|
|
977
1039
|
"verify_hash": {
|
|
978
1040
|
"namespace": "auth",
|
|
@@ -990,7 +1052,8 @@
|
|
|
990
1052
|
"scrypt.verify",
|
|
991
1053
|
"crypto.timingSafeEqual",
|
|
992
1054
|
"auth.verifyPassword"
|
|
993
|
-
]
|
|
1055
|
+
],
|
|
1056
|
+
"status": "confirmed"
|
|
994
1057
|
},
|
|
995
1058
|
"verify_token": {
|
|
996
1059
|
"namespace": "auth",
|
|
@@ -1008,7 +1071,8 @@
|
|
|
1008
1071
|
"passport.authenticate",
|
|
1009
1072
|
"auth.verifyToken",
|
|
1010
1073
|
"auth.middleware"
|
|
1011
|
-
]
|
|
1074
|
+
],
|
|
1075
|
+
"status": "confirmed"
|
|
1012
1076
|
},
|
|
1013
1077
|
"check_owner": {
|
|
1014
1078
|
"namespace": "auth",
|
|
@@ -1025,7 +1089,8 @@
|
|
|
1025
1089
|
"auth.checkAccess",
|
|
1026
1090
|
"auth.checkPermission",
|
|
1027
1091
|
"auth.requireRole"
|
|
1028
|
-
]
|
|
1092
|
+
],
|
|
1093
|
+
"status": "confirmed"
|
|
1029
1094
|
},
|
|
1030
1095
|
"check_exists": {
|
|
1031
1096
|
"namespace": "data_integrity",
|
|
@@ -1033,7 +1098,8 @@
|
|
|
1033
1098
|
"post_states": [
|
|
1034
1099
|
"REFERENCE_VALID"
|
|
1035
1100
|
],
|
|
1036
|
-
"description": "Verify referenced resource exists before creating a reference to it"
|
|
1101
|
+
"description": "Verify referenced resource exists before creating a reference to it",
|
|
1102
|
+
"status": "confirmed"
|
|
1037
1103
|
},
|
|
1038
1104
|
"create_reference": {
|
|
1039
1105
|
"namespace": "data_integrity",
|
|
@@ -1043,7 +1109,8 @@
|
|
|
1043
1109
|
"post_states": [
|
|
1044
1110
|
"REFERENCE_CREATED"
|
|
1045
1111
|
],
|
|
1046
|
-
"description": "Create reference to existing resource"
|
|
1112
|
+
"description": "Create reference to existing resource",
|
|
1113
|
+
"status": "confirmed"
|
|
1047
1114
|
},
|
|
1048
1115
|
"sanitize": {
|
|
1049
1116
|
"namespace": "resource",
|
|
@@ -1051,7 +1118,8 @@
|
|
|
1051
1118
|
"post_states": [
|
|
1052
1119
|
"CONTENT_SANITIZED"
|
|
1053
1120
|
],
|
|
1054
|
-
"description": "Sanitize input before processing"
|
|
1121
|
+
"description": "Sanitize input before processing",
|
|
1122
|
+
"status": "confirmed"
|
|
1055
1123
|
},
|
|
1056
1124
|
"validate_type": {
|
|
1057
1125
|
"namespace": "resource",
|
|
@@ -1061,7 +1129,8 @@
|
|
|
1061
1129
|
"post_states": [
|
|
1062
1130
|
"TYPE_VALIDATED"
|
|
1063
1131
|
],
|
|
1064
|
-
"description": "Validate input type matches expected schema"
|
|
1132
|
+
"description": "Validate input type matches expected schema",
|
|
1133
|
+
"status": "confirmed"
|
|
1065
1134
|
},
|
|
1066
1135
|
"validate_range": {
|
|
1067
1136
|
"namespace": "resource",
|
|
@@ -1071,7 +1140,8 @@
|
|
|
1071
1140
|
"post_states": [
|
|
1072
1141
|
"CONTENT_VALID"
|
|
1073
1142
|
],
|
|
1074
|
-
"description": "Validate input within acceptable range/limits"
|
|
1143
|
+
"description": "Validate input within acceptable range/limits",
|
|
1144
|
+
"status": "confirmed"
|
|
1075
1145
|
},
|
|
1076
1146
|
"initiate_payment": {
|
|
1077
1147
|
"namespace": "payment",
|
|
@@ -1084,7 +1154,8 @@
|
|
|
1084
1154
|
"invalidate": [
|
|
1085
1155
|
"ORDER_CREATED"
|
|
1086
1156
|
],
|
|
1087
|
-
"description": "发起支付 → 需要已创建的订单"
|
|
1157
|
+
"description": "发起支付 → 需要已创建的订单",
|
|
1158
|
+
"status": "confirmed"
|
|
1088
1159
|
},
|
|
1089
1160
|
"receive_payment_callback": {
|
|
1090
1161
|
"namespace": "payment",
|
|
@@ -1097,7 +1168,8 @@
|
|
|
1097
1168
|
"invalidate": [
|
|
1098
1169
|
"PAYMENT_INITIATED"
|
|
1099
1170
|
],
|
|
1100
|
-
"description": "接收支付回调 → 需要已发起的支付"
|
|
1171
|
+
"description": "接收支付回调 → 需要已发起的支付",
|
|
1172
|
+
"status": "confirmed"
|
|
1101
1173
|
},
|
|
1102
1174
|
"confirm_payment": {
|
|
1103
1175
|
"namespace": "payment",
|
|
@@ -1110,7 +1182,8 @@
|
|
|
1110
1182
|
"invalidate": [
|
|
1111
1183
|
"PAYMENT_CALLBACK_RECEIVED"
|
|
1112
1184
|
],
|
|
1113
|
-
"description": "确认支付 → 需要已验证的回调签名"
|
|
1185
|
+
"description": "确认支付 → 需要已验证的回调签名",
|
|
1186
|
+
"status": "confirmed"
|
|
1114
1187
|
},
|
|
1115
1188
|
"fail_payment": {
|
|
1116
1189
|
"namespace": "payment",
|
|
@@ -1125,7 +1198,8 @@
|
|
|
1125
1198
|
"PAYMENT_INITIATED",
|
|
1126
1199
|
"PAYMENT_CALLBACK_RECEIVED"
|
|
1127
1200
|
],
|
|
1128
|
-
"description": "支付失败 → 超时、签名无效或用户取消"
|
|
1201
|
+
"description": "支付失败 → 超时、签名无效或用户取消",
|
|
1202
|
+
"status": "confirmed"
|
|
1129
1203
|
},
|
|
1130
1204
|
"receive_upload": {
|
|
1131
1205
|
"namespace": "file_upload",
|
|
@@ -1143,7 +1217,8 @@
|
|
|
1143
1217
|
"upload.array",
|
|
1144
1218
|
"busboy",
|
|
1145
1219
|
"formidable"
|
|
1146
|
-
]
|
|
1220
|
+
],
|
|
1221
|
+
"status": "confirmed"
|
|
1147
1222
|
},
|
|
1148
1223
|
"validate_file": {
|
|
1149
1224
|
"namespace": "file_upload",
|
|
@@ -1156,7 +1231,8 @@
|
|
|
1156
1231
|
"invalidate": [
|
|
1157
1232
|
"FILE_RECEIVED"
|
|
1158
1233
|
],
|
|
1159
|
-
"description": "验证文件类型和大小 → 需要已接收的文件"
|
|
1234
|
+
"description": "验证文件类型和大小 → 需要已接收的文件",
|
|
1235
|
+
"status": "confirmed"
|
|
1160
1236
|
},
|
|
1161
1237
|
"store_file": {
|
|
1162
1238
|
"namespace": "file_upload",
|
|
@@ -1169,7 +1245,8 @@
|
|
|
1169
1245
|
"invalidate": [
|
|
1170
1246
|
"FILE_VALIDATED"
|
|
1171
1247
|
],
|
|
1172
|
-
"description": "存储文件到 S3/本地 → 需要已验证的文件"
|
|
1248
|
+
"description": "存储文件到 S3/本地 → 需要已验证的文件",
|
|
1249
|
+
"status": "confirmed"
|
|
1173
1250
|
},
|
|
1174
1251
|
"reference_file": {
|
|
1175
1252
|
"namespace": "file_upload",
|
|
@@ -1179,7 +1256,8 @@
|
|
|
1179
1256
|
"post_states": [
|
|
1180
1257
|
"FILE_REFERENCED"
|
|
1181
1258
|
],
|
|
1182
|
-
"description": "关联文件到业务对象 → 需要已存储的文件"
|
|
1259
|
+
"description": "关联文件到业务对象 → 需要已存储的文件",
|
|
1260
|
+
"status": "confirmed"
|
|
1183
1261
|
},
|
|
1184
1262
|
"check_rate_limit": {
|
|
1185
1263
|
"namespace": "api_gateway",
|
|
@@ -1187,7 +1265,8 @@
|
|
|
1187
1265
|
"post_states": [
|
|
1188
1266
|
"RATE_CHECKED"
|
|
1189
1267
|
],
|
|
1190
|
-
"description": "检查 API 调用频率 → 无状态检查"
|
|
1268
|
+
"description": "检查 API 调用频率 → 无状态检查",
|
|
1269
|
+
"status": "confirmed"
|
|
1191
1270
|
},
|
|
1192
1271
|
"throttle_request": {
|
|
1193
1272
|
"namespace": "api_gateway",
|
|
@@ -1200,7 +1279,8 @@
|
|
|
1200
1279
|
"invalidate": [
|
|
1201
1280
|
"RATE_CHECKED"
|
|
1202
1281
|
],
|
|
1203
|
-
"description": "限流请求 → 超过频率限制"
|
|
1282
|
+
"description": "限流请求 → 超过频率限制",
|
|
1283
|
+
"status": "confirmed"
|
|
1204
1284
|
},
|
|
1205
1285
|
"pass_rate_check": {
|
|
1206
1286
|
"namespace": "api_gateway",
|
|
@@ -1208,7 +1288,8 @@
|
|
|
1208
1288
|
"RATE_CHECKED"
|
|
1209
1289
|
],
|
|
1210
1290
|
"post_states": [],
|
|
1211
|
-
"description": "通过频率检查 → 正常处理请求"
|
|
1291
|
+
"description": "通过频率检查 → 正常处理请求",
|
|
1292
|
+
"status": "confirmed"
|
|
1212
1293
|
},
|
|
1213
1294
|
"compose_notification": {
|
|
1214
1295
|
"namespace": "notification",
|
|
@@ -1220,7 +1301,8 @@
|
|
|
1220
1301
|
"aliases": [
|
|
1221
1302
|
"nodemailer.createTransport",
|
|
1222
1303
|
"nodemailer.compose"
|
|
1223
|
-
]
|
|
1304
|
+
],
|
|
1305
|
+
"status": "confirmed"
|
|
1224
1306
|
},
|
|
1225
1307
|
"send_notification": {
|
|
1226
1308
|
"namespace": "notification",
|
|
@@ -1237,7 +1319,8 @@
|
|
|
1237
1319
|
"nodemailer.transport.sendMail",
|
|
1238
1320
|
"transporter.sendMail",
|
|
1239
1321
|
"email.send"
|
|
1240
|
-
]
|
|
1322
|
+
],
|
|
1323
|
+
"status": "confirmed"
|
|
1241
1324
|
},
|
|
1242
1325
|
"confirm_delivery": {
|
|
1243
1326
|
"namespace": "notification",
|
|
@@ -1250,7 +1333,8 @@
|
|
|
1250
1333
|
"invalidate": [
|
|
1251
1334
|
"NOTIFICATION_SENT"
|
|
1252
1335
|
],
|
|
1253
|
-
"description": "确认送达 → 邮件已投递/短信已发送"
|
|
1336
|
+
"description": "确认送达 → 邮件已投递/短信已发送",
|
|
1337
|
+
"status": "confirmed"
|
|
1254
1338
|
},
|
|
1255
1339
|
"receive_password": {
|
|
1256
1340
|
"namespace": "registration",
|
|
@@ -1260,7 +1344,8 @@
|
|
|
1260
1344
|
"post_states": [
|
|
1261
1345
|
"PASSWORD_RECEIVED"
|
|
1262
1346
|
],
|
|
1263
|
-
"description": "Registration: user submits password → ready to hash"
|
|
1347
|
+
"description": "Registration: user submits password → ready to hash",
|
|
1348
|
+
"status": "confirmed"
|
|
1264
1349
|
},
|
|
1265
1350
|
"register_user": {
|
|
1266
1351
|
"namespace": "registration",
|
|
@@ -1273,7 +1358,8 @@
|
|
|
1273
1358
|
"invalidate": [
|
|
1274
1359
|
"PASSWORD_HASHED"
|
|
1275
1360
|
],
|
|
1276
|
-
"description": "Registration: save user with hashed password → user record created"
|
|
1361
|
+
"description": "Registration: save user with hashed password → user record created",
|
|
1362
|
+
"status": "confirmed"
|
|
1277
1363
|
},
|
|
1278
1364
|
"send_verification_code": {
|
|
1279
1365
|
"namespace": "registration",
|
|
@@ -1284,7 +1370,8 @@
|
|
|
1284
1370
|
"invalidate": [
|
|
1285
1371
|
"USER_REGISTERED"
|
|
1286
1372
|
],
|
|
1287
|
-
"description": "发送验证码 → 邮箱/手机(手机验证码在注册前发送——前置状态放开)"
|
|
1373
|
+
"description": "发送验证码 → 邮箱/手机(手机验证码在注册前发送——前置状态放开)",
|
|
1374
|
+
"status": "confirmed"
|
|
1288
1375
|
},
|
|
1289
1376
|
"verify_code": {
|
|
1290
1377
|
"namespace": "registration",
|
|
@@ -1297,7 +1384,8 @@
|
|
|
1297
1384
|
"invalidate": [
|
|
1298
1385
|
"VERIFICATION_CODE_SENT"
|
|
1299
1386
|
],
|
|
1300
|
-
"description": "验证码校验 → 匹配且未过期"
|
|
1387
|
+
"description": "验证码校验 → 匹配且未过期",
|
|
1388
|
+
"status": "confirmed"
|
|
1301
1389
|
},
|
|
1302
1390
|
"activate_account": {
|
|
1303
1391
|
"namespace": "registration",
|
|
@@ -1310,7 +1398,8 @@
|
|
|
1310
1398
|
"invalidate": [
|
|
1311
1399
|
"VERIFICATION_CONFIRMED"
|
|
1312
1400
|
],
|
|
1313
|
-
"description": "激活账号 → 验证通过后启用"
|
|
1401
|
+
"description": "激活账号 → 验证通过后启用",
|
|
1402
|
+
"status": "confirmed"
|
|
1314
1403
|
},
|
|
1315
1404
|
"create_user_session": {
|
|
1316
1405
|
"namespace": "session_mgmt",
|
|
@@ -1330,7 +1419,8 @@
|
|
|
1330
1419
|
"createSessionToken",
|
|
1331
1420
|
"signSession",
|
|
1332
1421
|
"this.signSession"
|
|
1333
|
-
]
|
|
1422
|
+
],
|
|
1423
|
+
"status": "confirmed"
|
|
1334
1424
|
},
|
|
1335
1425
|
"refresh_session": {
|
|
1336
1426
|
"namespace": "session_mgmt",
|
|
@@ -1340,7 +1430,8 @@
|
|
|
1340
1430
|
"post_states": [
|
|
1341
1431
|
"SESSION_REFRESHED"
|
|
1342
1432
|
],
|
|
1343
|
-
"description": "刷新会话 → 延长有效期"
|
|
1433
|
+
"description": "刷新会话 → 延长有效期",
|
|
1434
|
+
"status": "confirmed"
|
|
1344
1435
|
},
|
|
1345
1436
|
"timeout_session": {
|
|
1346
1437
|
"namespace": "session_mgmt",
|
|
@@ -1355,7 +1446,8 @@
|
|
|
1355
1446
|
"SESSION_CREATED",
|
|
1356
1447
|
"SESSION_REFRESHED"
|
|
1357
1448
|
],
|
|
1358
|
-
"description": "会话超时 → 自动过期"
|
|
1449
|
+
"description": "会话超时 → 自动过期",
|
|
1450
|
+
"status": "confirmed"
|
|
1359
1451
|
},
|
|
1360
1452
|
"revoke_session": {
|
|
1361
1453
|
"namespace": "session_mgmt",
|
|
@@ -1376,7 +1468,8 @@
|
|
|
1376
1468
|
"SESSION_CREATED",
|
|
1377
1469
|
"SESSION_REFRESHED"
|
|
1378
1470
|
],
|
|
1379
|
-
"description": "撤销会话 → 管理员/用户主动登出(撤销是幂等操作,任何时刻都合法)"
|
|
1471
|
+
"description": "撤销会话 → 管理员/用户主动登出(撤销是幂等操作,任何时刻都合法)",
|
|
1472
|
+
"status": "confirmed"
|
|
1380
1473
|
},
|
|
1381
1474
|
"register_supplier": {
|
|
1382
1475
|
"namespace": "supplier",
|
|
@@ -1384,7 +1477,8 @@
|
|
|
1384
1477
|
"post_states": [
|
|
1385
1478
|
"SUPPLIER_REGISTERED"
|
|
1386
1479
|
],
|
|
1387
|
-
"description": "注册供应商 → 基本信息录入"
|
|
1480
|
+
"description": "注册供应商 → 基本信息录入",
|
|
1481
|
+
"status": "confirmed"
|
|
1388
1482
|
},
|
|
1389
1483
|
"verify_supplier": {
|
|
1390
1484
|
"namespace": "supplier",
|
|
@@ -1397,7 +1491,8 @@
|
|
|
1397
1491
|
"invalidate": [
|
|
1398
1492
|
"SUPPLIER_REGISTERED"
|
|
1399
1493
|
],
|
|
1400
|
-
"description": "验证供应商 → 资质审核"
|
|
1494
|
+
"description": "验证供应商 → 资质审核",
|
|
1495
|
+
"status": "confirmed"
|
|
1401
1496
|
},
|
|
1402
1497
|
"enable_supplier": {
|
|
1403
1498
|
"namespace": "supplier",
|
|
@@ -1410,7 +1505,8 @@
|
|
|
1410
1505
|
"invalidate": [
|
|
1411
1506
|
"SUPPLIER_VERIFIED"
|
|
1412
1507
|
],
|
|
1413
|
-
"description": "启用供应商 → 可接单"
|
|
1508
|
+
"description": "启用供应商 → 可接单",
|
|
1509
|
+
"status": "confirmed"
|
|
1414
1510
|
},
|
|
1415
1511
|
"assign_product_to_supplier": {
|
|
1416
1512
|
"namespace": "supplier",
|
|
@@ -1420,7 +1516,8 @@
|
|
|
1420
1516
|
"post_states": [
|
|
1421
1517
|
"PRODUCT_ASSIGNED"
|
|
1422
1518
|
],
|
|
1423
|
-
"description": "分配产品给供应商 → 供应商已启用"
|
|
1519
|
+
"description": "分配产品给供应商 → 供应商已启用",
|
|
1520
|
+
"status": "confirmed"
|
|
1424
1521
|
},
|
|
1425
1522
|
"upload_stl": {
|
|
1426
1523
|
"namespace": "printlab_order",
|
|
@@ -1430,7 +1527,8 @@
|
|
|
1430
1527
|
"post_states": [
|
|
1431
1528
|
"STL_UPLOADED"
|
|
1432
1529
|
],
|
|
1433
|
-
"description": "上传 STL 文件 → 用户已认证"
|
|
1530
|
+
"description": "上传 STL 文件 → 用户已认证",
|
|
1531
|
+
"status": "confirmed"
|
|
1434
1532
|
},
|
|
1435
1533
|
"slice_model": {
|
|
1436
1534
|
"namespace": "printlab_order",
|
|
@@ -1443,7 +1541,8 @@
|
|
|
1443
1541
|
"invalidate": [
|
|
1444
1542
|
"STL_UPLOADED"
|
|
1445
1543
|
],
|
|
1446
|
-
"description": "切片 3D 模型 → STL 已上传"
|
|
1544
|
+
"description": "切片 3D 模型 → STL 已上传",
|
|
1545
|
+
"status": "confirmed"
|
|
1447
1546
|
},
|
|
1448
1547
|
"generate_gcode": {
|
|
1449
1548
|
"namespace": "printlab_order",
|
|
@@ -1456,7 +1555,8 @@
|
|
|
1456
1555
|
"invalidate": [
|
|
1457
1556
|
"STL_SLICED"
|
|
1458
1557
|
],
|
|
1459
|
-
"description": "生成 GCode → 模型已切片"
|
|
1558
|
+
"description": "生成 GCode → 模型已切片",
|
|
1559
|
+
"status": "confirmed"
|
|
1460
1560
|
},
|
|
1461
1561
|
"estimate_cost": {
|
|
1462
1562
|
"namespace": "printlab_order",
|
|
@@ -1466,7 +1566,8 @@
|
|
|
1466
1566
|
"post_states": [
|
|
1467
1567
|
"COST_ESTIMATED"
|
|
1468
1568
|
],
|
|
1469
|
-
"description": "估算打印成本 → GCode 已生成"
|
|
1569
|
+
"description": "估算打印成本 → GCode 已生成",
|
|
1570
|
+
"status": "confirmed"
|
|
1470
1571
|
},
|
|
1471
1572
|
"create_order": {
|
|
1472
1573
|
"namespace": "printlab_order",
|
|
@@ -1477,7 +1578,8 @@
|
|
|
1477
1578
|
"invalidate": [
|
|
1478
1579
|
"COST_ESTIMATED"
|
|
1479
1580
|
],
|
|
1480
|
-
"description": "创建订单 → 成本已估算(订单创建是生命周期入口——成本估算发生在创建过程中)"
|
|
1581
|
+
"description": "创建订单 → 成本已估算(订单创建是生命周期入口——成本估算发生在创建过程中)",
|
|
1582
|
+
"status": "confirmed"
|
|
1481
1583
|
},
|
|
1482
1584
|
"queue_order": {
|
|
1483
1585
|
"namespace": "printlab_order",
|
|
@@ -1490,7 +1592,8 @@
|
|
|
1490
1592
|
"invalidate": [
|
|
1491
1593
|
"PAYMENT_CONFIRMED"
|
|
1492
1594
|
],
|
|
1493
|
-
"description": "订单排队 → 支付已确认"
|
|
1595
|
+
"description": "订单排队 → 支付已确认",
|
|
1596
|
+
"status": "confirmed"
|
|
1494
1597
|
},
|
|
1495
1598
|
"start_print": {
|
|
1496
1599
|
"namespace": "printlab_print",
|
|
@@ -1503,7 +1606,8 @@
|
|
|
1503
1606
|
"invalidate": [
|
|
1504
1607
|
"ORDER_QUEUED"
|
|
1505
1608
|
],
|
|
1506
|
-
"description": "开始打印 → 订单已排队"
|
|
1609
|
+
"description": "开始打印 → 订单已排队",
|
|
1610
|
+
"status": "confirmed"
|
|
1507
1611
|
},
|
|
1508
1612
|
"complete_print": {
|
|
1509
1613
|
"namespace": "printlab_print",
|
|
@@ -1516,7 +1620,8 @@
|
|
|
1516
1620
|
"invalidate": [
|
|
1517
1621
|
"PRINT_STARTED"
|
|
1518
1622
|
],
|
|
1519
|
-
"description": "打印完成 → 打印已开始"
|
|
1623
|
+
"description": "打印完成 → 打印已开始",
|
|
1624
|
+
"status": "confirmed"
|
|
1520
1625
|
},
|
|
1521
1626
|
"ship_order": {
|
|
1522
1627
|
"namespace": "printlab_order",
|
|
@@ -1529,7 +1634,8 @@
|
|
|
1529
1634
|
"invalidate": [
|
|
1530
1635
|
"PRINT_COMPLETED"
|
|
1531
1636
|
],
|
|
1532
|
-
"description": "发货 → 打印已完成"
|
|
1637
|
+
"description": "发货 → 打印已完成",
|
|
1638
|
+
"status": "confirmed"
|
|
1533
1639
|
},
|
|
1534
1640
|
"deliver_order": {
|
|
1535
1641
|
"namespace": "printlab_order",
|
|
@@ -1542,29 +1648,33 @@
|
|
|
1542
1648
|
"invalidate": [
|
|
1543
1649
|
"ORDER_SHIPPED"
|
|
1544
1650
|
],
|
|
1545
|
-
"description": "订单交付 → 已发货"
|
|
1651
|
+
"description": "订单交付 → 已发货",
|
|
1652
|
+
"status": "confirmed"
|
|
1546
1653
|
},
|
|
1547
1654
|
"check_resource_ownership": {
|
|
1548
|
-
"namespace": "
|
|
1655
|
+
"namespace": "auth",
|
|
1549
1656
|
"pre_states": [
|
|
1550
1657
|
"AUTHENTICATED"
|
|
1551
1658
|
],
|
|
1552
1659
|
"post_states": [
|
|
1553
1660
|
"AUTHORIZED"
|
|
1554
1661
|
],
|
|
1555
|
-
"description": "检查资源所有权 → 用户只能操作自己的数据"
|
|
1662
|
+
"description": "检查资源所有权 → 用户只能操作自己的数据",
|
|
1663
|
+
"status": "confirmed"
|
|
1556
1664
|
},
|
|
1557
1665
|
"audit_mutation": {
|
|
1558
1666
|
"namespace": "data_integrity",
|
|
1559
1667
|
"pre_states": [],
|
|
1560
1668
|
"post_states": [],
|
|
1561
|
-
"description": "记录数据变更审计日志 → 每次写操作后"
|
|
1669
|
+
"description": "记录数据变更审计日志 → 每次写操作后",
|
|
1670
|
+
"status": "confirmed"
|
|
1562
1671
|
},
|
|
1563
1672
|
"validate_business_rule": {
|
|
1564
1673
|
"namespace": "data_integrity",
|
|
1565
1674
|
"pre_states": [],
|
|
1566
1675
|
"post_states": [],
|
|
1567
|
-
"description": "验证业务规则 → 订单金额 > 0, 库存 >= 0"
|
|
1676
|
+
"description": "验证业务规则 → 订单金额 > 0, 库存 >= 0",
|
|
1677
|
+
"status": "confirmed"
|
|
1568
1678
|
},
|
|
1569
1679
|
"refund_payment": {
|
|
1570
1680
|
"namespace": "payment",
|
|
@@ -1577,7 +1687,8 @@
|
|
|
1577
1687
|
"invalidate": [
|
|
1578
1688
|
"PAYMENT_CONFIRMED"
|
|
1579
1689
|
],
|
|
1580
|
-
"description": "退款 → 已确认的支付可退款,退款后状态变更为失败"
|
|
1690
|
+
"description": "退款 → 已确认的支付可退款,退款后状态变更为失败",
|
|
1691
|
+
"status": "confirmed"
|
|
1581
1692
|
},
|
|
1582
1693
|
"cancel_payment": {
|
|
1583
1694
|
"namespace": "payment",
|
|
@@ -1592,7 +1703,8 @@
|
|
|
1592
1703
|
"ORDER_CREATED",
|
|
1593
1704
|
"PAYMENT_INITIATED"
|
|
1594
1705
|
],
|
|
1595
|
-
"description": "取消支付 → 在回调前取消,订单和支付状态一起失效"
|
|
1706
|
+
"description": "取消支付 → 在回调前取消,订单和支付状态一起失效",
|
|
1707
|
+
"status": "confirmed"
|
|
1596
1708
|
},
|
|
1597
1709
|
"retry_payment": {
|
|
1598
1710
|
"namespace": "payment",
|
|
@@ -1605,7 +1717,8 @@
|
|
|
1605
1717
|
"invalidate": [
|
|
1606
1718
|
"PAYMENT_FAILED"
|
|
1607
1719
|
],
|
|
1608
|
-
"description": "重试支付 → 支付失败后可重新发起"
|
|
1720
|
+
"description": "重试支付 → 支付失败后可重新发起",
|
|
1721
|
+
"status": "confirmed"
|
|
1609
1722
|
},
|
|
1610
1723
|
"verify_payment_signature": {
|
|
1611
1724
|
"namespace": "payment",
|
|
@@ -1613,7 +1726,8 @@
|
|
|
1613
1726
|
"post_states": [
|
|
1614
1727
|
"PAYMENT_CALLBACK_RECEIVED"
|
|
1615
1728
|
],
|
|
1616
|
-
"description": "验证支付回调签名 → 防伪造回调(自保持,不改变状态)(签名验证是回调处理第一步,无前置状态要求)"
|
|
1729
|
+
"description": "验证支付回调签名 → 防伪造回调(自保持,不改变状态)(签名验证是回调处理第一步,无前置状态要求)",
|
|
1730
|
+
"status": "confirmed"
|
|
1617
1731
|
},
|
|
1618
1732
|
"reconcile_payment": {
|
|
1619
1733
|
"namespace": "payment",
|
|
@@ -1623,7 +1737,8 @@
|
|
|
1623
1737
|
"post_states": [
|
|
1624
1738
|
"PAYMENT_CONFIRMED"
|
|
1625
1739
|
],
|
|
1626
|
-
"description": "对账 → 与支付网关日终对账(自保持)"
|
|
1740
|
+
"description": "对账 → 与支付网关日终对账(自保持)",
|
|
1741
|
+
"status": "confirmed"
|
|
1627
1742
|
},
|
|
1628
1743
|
"validate_session": {
|
|
1629
1744
|
"namespace": "session_mgmt",
|
|
@@ -1631,7 +1746,8 @@
|
|
|
1631
1746
|
"post_states": [
|
|
1632
1747
|
"SESSION_CREATED"
|
|
1633
1748
|
],
|
|
1634
|
-
"description": "验证会话有效性 → 每个请求的中间件检查(入口点——冷启动/已登录均可)"
|
|
1749
|
+
"description": "验证会话有效性 → 每个请求的中间件检查(入口点——冷启动/已登录均可)",
|
|
1750
|
+
"status": "confirmed"
|
|
1635
1751
|
},
|
|
1636
1752
|
"extend_session": {
|
|
1637
1753
|
"namespace": "session_mgmt",
|
|
@@ -1644,7 +1760,8 @@
|
|
|
1644
1760
|
"invalidate": [
|
|
1645
1761
|
"SESSION_CREATED"
|
|
1646
1762
|
],
|
|
1647
|
-
"description": "延长会话有效期 → 用户活跃时自动续期"
|
|
1763
|
+
"description": "延长会话有效期 → 用户活跃时自动续期",
|
|
1764
|
+
"status": "confirmed"
|
|
1648
1765
|
},
|
|
1649
1766
|
"renew_session_from_expired": {
|
|
1650
1767
|
"namespace": "session_mgmt",
|
|
@@ -1657,7 +1774,8 @@
|
|
|
1657
1774
|
"invalidate": [
|
|
1658
1775
|
"SESSION_EXPIRED"
|
|
1659
1776
|
],
|
|
1660
|
-
"description": "从过期会话恢复 → 通过 refresh token 或重新登录创建新会话"
|
|
1777
|
+
"description": "从过期会话恢复 → 通过 refresh token 或重新登录创建新会话",
|
|
1778
|
+
"status": "confirmed"
|
|
1661
1779
|
},
|
|
1662
1780
|
"revoke_all_sessions": {
|
|
1663
1781
|
"namespace": "session_mgmt",
|
|
@@ -1669,7 +1787,8 @@
|
|
|
1669
1787
|
"SESSION_CREATED",
|
|
1670
1788
|
"SESSION_REFRESHED"
|
|
1671
1789
|
],
|
|
1672
|
-
"description": "批量撤销所有会话 → 密码修改后强制所有设备下线"
|
|
1790
|
+
"description": "批量撤销所有会话 → 密码修改后强制所有设备下线",
|
|
1791
|
+
"status": "confirmed"
|
|
1673
1792
|
},
|
|
1674
1793
|
"cleanup_expired_sessions": {
|
|
1675
1794
|
"namespace": "session_mgmt",
|
|
@@ -1682,7 +1801,8 @@
|
|
|
1682
1801
|
"SESSION_EXPIRED",
|
|
1683
1802
|
"SESSION_REVOKED"
|
|
1684
1803
|
],
|
|
1685
|
-
"description": "清理过期/已撤销的会话记录 → 定时任务,释放存储"
|
|
1804
|
+
"description": "清理过期/已撤销的会话记录 → 定时任务,释放存储",
|
|
1805
|
+
"status": "confirmed"
|
|
1686
1806
|
},
|
|
1687
1807
|
"rotate_session_token": {
|
|
1688
1808
|
"namespace": "session_mgmt",
|
|
@@ -1697,7 +1817,8 @@
|
|
|
1697
1817
|
"SESSION_CREATED",
|
|
1698
1818
|
"SESSION_REFRESHED"
|
|
1699
1819
|
],
|
|
1700
|
-
"description": "轮换会话令牌 → 防固定攻击,旧令牌立即失效"
|
|
1820
|
+
"description": "轮换会话令牌 → 防固定攻击,旧令牌立即失效",
|
|
1821
|
+
"status": "confirmed"
|
|
1701
1822
|
},
|
|
1702
1823
|
"resend_verification_code": {
|
|
1703
1824
|
"namespace": "registration",
|
|
@@ -1707,7 +1828,8 @@
|
|
|
1707
1828
|
"post_states": [
|
|
1708
1829
|
"VERIFICATION_CODE_SENT"
|
|
1709
1830
|
],
|
|
1710
|
-
"description": "重发验证码 → 前一个验证码失效,发送新验证码"
|
|
1831
|
+
"description": "重发验证码 → 前一个验证码失效,发送新验证码",
|
|
1832
|
+
"status": "confirmed"
|
|
1711
1833
|
},
|
|
1712
1834
|
"expire_verification": {
|
|
1713
1835
|
"namespace": "registration",
|
|
@@ -1720,7 +1842,8 @@
|
|
|
1720
1842
|
"invalidate": [
|
|
1721
1843
|
"VERIFICATION_CODE_SENT"
|
|
1722
1844
|
],
|
|
1723
|
-
"description": "验证码过期 → 回到已注册状态,可重新发送"
|
|
1845
|
+
"description": "验证码过期 → 回到已注册状态,可重新发送",
|
|
1846
|
+
"status": "confirmed"
|
|
1724
1847
|
},
|
|
1725
1848
|
"reject_registration": {
|
|
1726
1849
|
"namespace": "registration",
|
|
@@ -1735,7 +1858,8 @@
|
|
|
1735
1858
|
"USER_REGISTERED",
|
|
1736
1859
|
"VERIFICATION_CODE_SENT"
|
|
1737
1860
|
],
|
|
1738
|
-
"description": "拒绝注册 → 管理员拒绝或黑名单检测触发,回到未认证状态"
|
|
1861
|
+
"description": "拒绝注册 → 管理员拒绝或黑名单检测触发,回到未认证状态",
|
|
1862
|
+
"status": "confirmed"
|
|
1739
1863
|
},
|
|
1740
1864
|
"reject_file": {
|
|
1741
1865
|
"namespace": "file_upload",
|
|
@@ -1748,7 +1872,8 @@
|
|
|
1748
1872
|
"FILE_RECEIVED",
|
|
1749
1873
|
"FILE_VALIDATED"
|
|
1750
1874
|
],
|
|
1751
|
-
"description": "拒绝文件 → 类型/大小不符合要求,丢弃文件"
|
|
1875
|
+
"description": "拒绝文件 → 类型/大小不符合要求,丢弃文件",
|
|
1876
|
+
"status": "confirmed"
|
|
1752
1877
|
},
|
|
1753
1878
|
"virus_scan_file": {
|
|
1754
1879
|
"namespace": "file_upload",
|
|
@@ -1758,7 +1883,8 @@
|
|
|
1758
1883
|
"post_states": [
|
|
1759
1884
|
"FILE_RECEIVED"
|
|
1760
1885
|
],
|
|
1761
|
-
"description": "病毒扫描 → 上传后扫描(自保持,通过则继续)"
|
|
1886
|
+
"description": "病毒扫描 → 上传后扫描(自保持,通过则继续)",
|
|
1887
|
+
"status": "confirmed"
|
|
1762
1888
|
},
|
|
1763
1889
|
"delete_file": {
|
|
1764
1890
|
"namespace": "file_upload",
|
|
@@ -1771,7 +1897,8 @@
|
|
|
1771
1897
|
"FILE_STORED",
|
|
1772
1898
|
"FILE_REFERENCED"
|
|
1773
1899
|
],
|
|
1774
|
-
"description": "删除已存储文件 → 释放存储空间"
|
|
1900
|
+
"description": "删除已存储文件 → 释放存储空间",
|
|
1901
|
+
"status": "confirmed"
|
|
1775
1902
|
},
|
|
1776
1903
|
"escape_output": {
|
|
1777
1904
|
"namespace": "resource",
|
|
@@ -1781,13 +1908,15 @@
|
|
|
1781
1908
|
"post_states": [
|
|
1782
1909
|
"CONTENT_VALID"
|
|
1783
1910
|
],
|
|
1784
|
-
"description": "输出转义 → 防 XSS,HTML 实体编码(自保持)"
|
|
1911
|
+
"description": "输出转义 → 防 XSS,HTML 实体编码(自保持)",
|
|
1912
|
+
"status": "confirmed"
|
|
1785
1913
|
},
|
|
1786
1914
|
"rate_limit_resource": {
|
|
1787
1915
|
"namespace": "resource",
|
|
1788
1916
|
"pre_states": [],
|
|
1789
1917
|
"post_states": [],
|
|
1790
|
-
"description": "资源访问频率限制 → 防止滥用和 DoS"
|
|
1918
|
+
"description": "资源访问频率限制 → 防止滥用和 DoS",
|
|
1919
|
+
"status": "confirmed"
|
|
1791
1920
|
},
|
|
1792
1921
|
"circuit_break": {
|
|
1793
1922
|
"namespace": "api_gateway",
|
|
@@ -1800,7 +1929,8 @@
|
|
|
1800
1929
|
"invalidate": [
|
|
1801
1930
|
"RATE_CHECKED"
|
|
1802
1931
|
],
|
|
1803
|
-
"description": "熔断 → 连续失败超过阈值时触发,直接拒绝请求"
|
|
1932
|
+
"description": "熔断 → 连续失败超过阈值时触发,直接拒绝请求",
|
|
1933
|
+
"status": "confirmed"
|
|
1804
1934
|
},
|
|
1805
1935
|
"retry_notification": {
|
|
1806
1936
|
"namespace": "notification",
|
|
@@ -1810,7 +1940,8 @@
|
|
|
1810
1940
|
"post_states": [
|
|
1811
1941
|
"NOTIFICATION_SENT"
|
|
1812
1942
|
],
|
|
1813
|
-
"description": "重试发送 → 上次发送失败后重试(自保持)"
|
|
1943
|
+
"description": "重试发送 → 上次发送失败后重试(自保持)",
|
|
1944
|
+
"status": "confirmed"
|
|
1814
1945
|
},
|
|
1815
1946
|
"fail_notification": {
|
|
1816
1947
|
"namespace": "notification",
|
|
@@ -1823,7 +1954,8 @@
|
|
|
1823
1954
|
"NOTIFICATION_COMPOSED",
|
|
1824
1955
|
"NOTIFICATION_SENT"
|
|
1825
1956
|
],
|
|
1826
|
-
"description": "通知失败 → 永久失败(如无效地址),放弃发送"
|
|
1957
|
+
"description": "通知失败 → 永久失败(如无效地址),放弃发送",
|
|
1958
|
+
"status": "confirmed"
|
|
1827
1959
|
},
|
|
1828
1960
|
"disable_supplier": {
|
|
1829
1961
|
"namespace": "supplier",
|
|
@@ -1836,7 +1968,8 @@
|
|
|
1836
1968
|
"invalidate": [
|
|
1837
1969
|
"SUPPLIER_ENABLED"
|
|
1838
1970
|
],
|
|
1839
|
-
"description": "停用供应商 → 暂停接单但不取消资质"
|
|
1971
|
+
"description": "停用供应商 → 暂停接单但不取消资质",
|
|
1972
|
+
"status": "confirmed"
|
|
1840
1973
|
},
|
|
1841
1974
|
"deregister_supplier": {
|
|
1842
1975
|
"namespace": "supplier",
|
|
@@ -1849,7 +1982,8 @@
|
|
|
1849
1982
|
"SUPPLIER_REGISTERED",
|
|
1850
1983
|
"SUPPLIER_VERIFIED"
|
|
1851
1984
|
],
|
|
1852
|
-
"description": "注销供应商 → 完全移除供应商资格"
|
|
1985
|
+
"description": "注销供应商 → 完全移除供应商资格",
|
|
1986
|
+
"status": "confirmed"
|
|
1853
1987
|
},
|
|
1854
1988
|
"validate_order_integrity": {
|
|
1855
1989
|
"namespace": "data_integrity",
|
|
@@ -1859,7 +1993,8 @@
|
|
|
1859
1993
|
"post_states": [
|
|
1860
1994
|
"REFERENCE_CREATED"
|
|
1861
1995
|
],
|
|
1862
|
-
"description": "校验订单完整性 → 验证关联数据未被篡改(自保持)"
|
|
1996
|
+
"description": "校验订单完整性 → 验证关联数据未被篡改(自保持)",
|
|
1997
|
+
"status": "confirmed"
|
|
1863
1998
|
},
|
|
1864
1999
|
"renew_tls_certificate": {
|
|
1865
2000
|
"namespace": "tls",
|
|
@@ -1869,7 +2004,8 @@
|
|
|
1869
2004
|
"post_states": [
|
|
1870
2005
|
"TLS_CONFIGURED"
|
|
1871
2006
|
],
|
|
1872
|
-
"description": "更新 TLS 证书 → 到期前轮换证书(自保持)"
|
|
2007
|
+
"description": "更新 TLS 证书 → 到期前轮换证书(自保持)",
|
|
2008
|
+
"status": "confirmed"
|
|
1873
2009
|
},
|
|
1874
2010
|
"rollback_ir": {
|
|
1875
2011
|
"namespace": "dev_pipeline",
|
|
@@ -1884,7 +2020,8 @@
|
|
|
1884
2020
|
"IR_EXTRACTED",
|
|
1885
2021
|
"ACTION_VALIDATED"
|
|
1886
2022
|
],
|
|
1887
|
-
"description": "回滚 IR → 校验失败时重置到 STALE 状态"
|
|
2023
|
+
"description": "回滚 IR → 校验失败时重置到 STALE 状态",
|
|
2024
|
+
"status": "confirmed"
|
|
1888
2025
|
},
|
|
1889
2026
|
"cancel_order": {
|
|
1890
2027
|
"namespace": "printlab_order",
|
|
@@ -1896,7 +2033,8 @@
|
|
|
1896
2033
|
"ORDER_CREATED",
|
|
1897
2034
|
"ORDER_QUEUED"
|
|
1898
2035
|
],
|
|
1899
|
-
"description": "取消订单 → 打印前取消,释放队列资源"
|
|
2036
|
+
"description": "取消订单 → 打印前取消,释放队列资源",
|
|
2037
|
+
"status": "confirmed"
|
|
1900
2038
|
},
|
|
1901
2039
|
"fail_print": {
|
|
1902
2040
|
"namespace": "printlab_print",
|
|
@@ -1907,10 +2045,11 @@
|
|
|
1907
2045
|
"invalidate": [
|
|
1908
2046
|
"PRINT_STARTED"
|
|
1909
2047
|
],
|
|
1910
|
-
"description": "打印失败 → 材料耗尽/机器故障/翘边等"
|
|
2048
|
+
"description": "打印失败 → 材料耗尽/机器故障/翘边等",
|
|
2049
|
+
"status": "confirmed"
|
|
1911
2050
|
},
|
|
1912
2051
|
"logout_without_invalidate": {
|
|
1913
|
-
"namespace": "
|
|
2052
|
+
"namespace": "auth",
|
|
1914
2053
|
"pre_states": [
|
|
1915
2054
|
"SESSION_ACTIVE"
|
|
1916
2055
|
],
|
|
@@ -1918,10 +2057,11 @@
|
|
|
1918
2057
|
"invalidate": [
|
|
1919
2058
|
"SESSION_ACTIVE"
|
|
1920
2059
|
],
|
|
1921
|
-
"description": "PLSB PLS-005: 登出必须销毁会话——防止会话固定攻击"
|
|
2060
|
+
"description": "PLSB PLS-005: 登出必须销毁会话——防止会话固定攻击",
|
|
2061
|
+
"status": "confirmed"
|
|
1922
2062
|
},
|
|
1923
2063
|
"admin_action_without_check": {
|
|
1924
|
-
"namespace": "
|
|
2064
|
+
"namespace": "auth",
|
|
1925
2065
|
"pre_states": [
|
|
1926
2066
|
"AUTHENTICATED"
|
|
1927
2067
|
],
|
|
@@ -1929,10 +2069,11 @@
|
|
|
1929
2069
|
"AUTHORIZED"
|
|
1930
2070
|
],
|
|
1931
2071
|
"invalidate": [],
|
|
1932
|
-
"description": "PLSB PLS-006: 敏感操作前必须验证管理员角色——防止权限提升"
|
|
2072
|
+
"description": "PLSB PLS-006: 敏感操作前必须验证管理员角色——防止权限提升",
|
|
2073
|
+
"status": "confirmed"
|
|
1933
2074
|
},
|
|
1934
2075
|
"double_commit": {
|
|
1935
|
-
"namespace": "
|
|
2076
|
+
"namespace": "transaction",
|
|
1936
2077
|
"pre_states": [
|
|
1937
2078
|
"TX_ACTIVE"
|
|
1938
2079
|
],
|
|
@@ -1942,7 +2083,8 @@
|
|
|
1942
2083
|
"invalidate": [
|
|
1943
2084
|
"TX_ACTIVE"
|
|
1944
2085
|
],
|
|
1945
|
-
"description": "PLSB PLS-008: 事务只能提交一次——重复提交非法"
|
|
2086
|
+
"description": "PLSB PLS-008: 事务只能提交一次——重复提交非法",
|
|
2087
|
+
"status": "confirmed"
|
|
1946
2088
|
},
|
|
1947
2089
|
"validate_request": {
|
|
1948
2090
|
"namespace": "missing_validation",
|
|
@@ -1969,7 +2111,8 @@
|
|
|
1969
2111
|
"yup.validate",
|
|
1970
2112
|
"schema.parse",
|
|
1971
2113
|
"schema.safeParse"
|
|
1972
|
-
]
|
|
2114
|
+
],
|
|
2115
|
+
"status": "confirmed"
|
|
1973
2116
|
},
|
|
1974
2117
|
"execute_without_validation": {
|
|
1975
2118
|
"namespace": "missing_validation",
|
|
@@ -1989,7 +2132,8 @@
|
|
|
1989
2132
|
"router.handle",
|
|
1990
2133
|
"express.handler",
|
|
1991
2134
|
"handler.execute"
|
|
1992
|
-
]
|
|
2135
|
+
],
|
|
2136
|
+
"status": "confirmed"
|
|
1993
2137
|
},
|
|
1994
2138
|
"double_release": {
|
|
1995
2139
|
"namespace": "resource_leak",
|
|
@@ -2003,7 +2147,8 @@
|
|
|
2003
2147
|
"FILE_OPEN",
|
|
2004
2148
|
"DB_CONNECTED"
|
|
2005
2149
|
],
|
|
2006
|
-
"description": "PLSB PLS-002: 资源不能释放两次——重复释放非法"
|
|
2150
|
+
"description": "PLSB PLS-002: 资源不能释放两次——重复释放非法",
|
|
2151
|
+
"status": "confirmed"
|
|
2007
2152
|
},
|
|
2008
2153
|
"use_after_release": {
|
|
2009
2154
|
"namespace": "use_after_free",
|
|
@@ -2012,7 +2157,8 @@
|
|
|
2012
2157
|
],
|
|
2013
2158
|
"post_states": [],
|
|
2014
2159
|
"invalidate": [],
|
|
2015
|
-
"description": "PLSB PLS-003: 不能在释放后使用资源——使用后释放检查"
|
|
2160
|
+
"description": "PLSB PLS-003: 不能在释放后使用资源——使用后释放检查",
|
|
2161
|
+
"status": "confirmed"
|
|
2016
2162
|
},
|
|
2017
2163
|
"read_file_atomic": {
|
|
2018
2164
|
"namespace": "file",
|
|
@@ -2024,7 +2170,8 @@
|
|
|
2024
2170
|
"fs.readFile",
|
|
2025
2171
|
"fs.promises.readFile",
|
|
2026
2172
|
"fs.promises.readFileSync"
|
|
2027
|
-
]
|
|
2173
|
+
],
|
|
2174
|
+
"status": "confirmed"
|
|
2028
2175
|
},
|
|
2029
2176
|
"write_file_atomic": {
|
|
2030
2177
|
"namespace": "file",
|
|
@@ -2036,7 +2183,8 @@
|
|
|
2036
2183
|
"fs.writeFile",
|
|
2037
2184
|
"fs.promises.writeFile",
|
|
2038
2185
|
"fs.promises.writeFileSync"
|
|
2039
|
-
]
|
|
2186
|
+
],
|
|
2187
|
+
"status": "confirmed"
|
|
2040
2188
|
}
|
|
2041
2189
|
}
|
|
2042
2190
|
}
|