@openora/core 0.4.1-canary.39 → 0.4.1-canary.41

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 (248) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/admin-console/contract/index.d.ts +2 -0
  3. package/dist/admin-console/contract/index.d.ts.map +1 -1
  4. package/dist/admin-console/router/index.d.ts +1 -0
  5. package/dist/admin-console/router/index.d.ts.map +1 -1
  6. package/dist/admin-console/service/backoffice.service.d.ts +1 -1
  7. package/dist/audit/plugin.d.ts.map +1 -1
  8. package/dist/audit/plugin.js +48 -1
  9. package/dist/audit/plugin.js.map +1 -1
  10. package/dist/common/errors/errors.classes.js +3 -3
  11. package/dist/common/errors/errors.classes.js.map +1 -1
  12. package/dist/common/errors/errors.mapper.js +1 -1
  13. package/dist/common/errors/errors.mapper.js.map +1 -1
  14. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js +66 -12
  15. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js.map +1 -1
  16. package/dist/compliance/__tests__/kyc-admin.router.test.d.ts +2 -0
  17. package/dist/compliance/__tests__/kyc-admin.router.test.d.ts.map +1 -0
  18. package/dist/compliance/__tests__/kyc-admin.router.test.js +191 -0
  19. package/dist/compliance/__tests__/kyc-admin.router.test.js.map +1 -0
  20. package/dist/compliance/__tests__/kyc-webhook.router.test.d.ts +2 -0
  21. package/dist/compliance/__tests__/kyc-webhook.router.test.d.ts.map +1 -0
  22. package/dist/compliance/__tests__/kyc-webhook.router.test.js +148 -0
  23. package/dist/compliance/__tests__/kyc-webhook.router.test.js.map +1 -0
  24. package/dist/compliance/__tests__/kyc.service.test.js +16 -10
  25. package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
  26. package/dist/compliance/__tests__/rg.router.test.js +5 -1
  27. package/dist/compliance/__tests__/rg.router.test.js.map +1 -1
  28. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts +16 -3
  29. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts.map +1 -1
  30. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js +47 -5
  31. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js.map +1 -1
  32. package/dist/compliance/contract/index.d.ts +312 -0
  33. package/dist/compliance/contract/index.d.ts.map +1 -1
  34. package/dist/compliance/contract/index.js +50 -1
  35. package/dist/compliance/contract/index.js.map +1 -1
  36. package/dist/compliance/drizzle/migrations/0002_condemned_monster_badoon.sql +3 -0
  37. package/dist/compliance/drizzle/migrations/0003_public_spirit.sql +1 -0
  38. package/dist/compliance/drizzle/migrations/meta/0002_snapshot.json +673 -0
  39. package/dist/compliance/drizzle/migrations/meta/0003_snapshot.json +679 -0
  40. package/dist/compliance/drizzle/migrations/meta/_journal.json +14 -0
  41. package/dist/compliance/plugin.d.ts.map +1 -1
  42. package/dist/compliance/plugin.js +23 -3
  43. package/dist/compliance/plugin.js.map +1 -1
  44. package/dist/compliance/router/index.d.ts +186 -2
  45. package/dist/compliance/router/index.d.ts.map +1 -1
  46. package/dist/compliance/router/index.js +52 -3
  47. package/dist/compliance/router/index.js.map +1 -1
  48. package/dist/compliance/schema/index.d.ts +65 -3
  49. package/dist/compliance/schema/index.d.ts.map +1 -1
  50. package/dist/compliance/schema/index.js +8 -0
  51. package/dist/compliance/schema/index.js.map +1 -1
  52. package/dist/compliance/service/kyc.service.d.ts +153 -8
  53. package/dist/compliance/service/kyc.service.d.ts.map +1 -1
  54. package/dist/compliance/service/kyc.service.js +264 -32
  55. package/dist/compliance/service/kyc.service.js.map +1 -1
  56. package/dist/contracts/adapters/audit.d.ts +1 -1
  57. package/dist/contracts/adapters/audit.d.ts.map +1 -1
  58. package/dist/contracts/adapters/audit.js.map +1 -1
  59. package/dist/contracts/adapters/identity-reader.d.ts +9 -3
  60. package/dist/contracts/adapters/identity-reader.d.ts.map +1 -1
  61. package/dist/contracts/adapters/identity-reader.js.map +1 -1
  62. package/dist/contracts/adapters/index.d.ts +4 -2
  63. package/dist/contracts/adapters/index.d.ts.map +1 -1
  64. package/dist/contracts/adapters/index.js +2 -1
  65. package/dist/contracts/adapters/index.js.map +1 -1
  66. package/dist/contracts/adapters/kyc.d.ts +90 -5
  67. package/dist/contracts/adapters/kyc.d.ts.map +1 -1
  68. package/dist/contracts/adapters/kyc.js +23 -0
  69. package/dist/contracts/adapters/kyc.js.map +1 -1
  70. package/dist/contracts/adapters/tag-evaluation-commands.d.ts +10 -0
  71. package/dist/contracts/adapters/tag-evaluation-commands.d.ts.map +1 -0
  72. package/dist/contracts/adapters/tag-evaluation-commands.js +11 -0
  73. package/dist/contracts/adapters/tag-evaluation-commands.js.map +1 -0
  74. package/dist/contracts/adapters/wallet-reader.d.ts +8 -0
  75. package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
  76. package/dist/contracts/adapters/wallet-reader.js.map +1 -1
  77. package/dist/contracts/schemas/__tests__/events.test.js +1 -1
  78. package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts +2 -0
  79. package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts.map +1 -0
  80. package/dist/contracts/schemas/__tests__/player-schemas.test.js +30 -0
  81. package/dist/contracts/schemas/__tests__/player-schemas.test.js.map +1 -0
  82. package/dist/contracts/schemas/events.d.ts +84 -0
  83. package/dist/contracts/schemas/events.d.ts.map +1 -1
  84. package/dist/contracts/schemas/events.js +24 -2
  85. package/dist/contracts/schemas/events.js.map +1 -1
  86. package/dist/contracts/schemas/platform-config.d.ts +13 -1
  87. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  88. package/dist/contracts/schemas/player.d.ts +36 -3
  89. package/dist/contracts/schemas/player.d.ts.map +1 -1
  90. package/dist/contracts/schemas/player.js +14 -0
  91. package/dist/contracts/schemas/player.js.map +1 -1
  92. package/dist/contracts/schemas/tag.d.ts +85 -1
  93. package/dist/contracts/schemas/tag.d.ts.map +1 -1
  94. package/dist/contracts/schemas/tag.js +12 -0
  95. package/dist/contracts/schemas/tag.js.map +1 -1
  96. package/dist/engagement/notifications/contract/index.d.ts +5 -1
  97. package/dist/engagement/notifications/contract/index.d.ts.map +1 -1
  98. package/dist/engagement/notifications/contract/index.js +5 -1
  99. package/dist/engagement/notifications/contract/index.js.map +1 -1
  100. package/dist/engagement/notifications/plugin.d.ts.map +1 -1
  101. package/dist/engagement/notifications/plugin.js +43 -3
  102. package/dist/engagement/notifications/plugin.js.map +1 -1
  103. package/dist/engagement/notifications/router/index.d.ts +1 -0
  104. package/dist/engagement/notifications/router/index.d.ts.map +1 -1
  105. package/dist/iam/service/iam.service.d.ts +1 -1
  106. package/dist/pam/identity/__tests__/admin-user-directory.test.js +1 -1
  107. package/dist/pam/identity/adapters/identity-reader.service.d.ts +6 -4
  108. package/dist/pam/identity/adapters/identity-reader.service.d.ts.map +1 -1
  109. package/dist/pam/identity/adapters/identity-reader.service.js +19 -1
  110. package/dist/pam/identity/adapters/identity-reader.service.js.map +1 -1
  111. package/dist/pam/identity/admin-user-directory.d.ts +1 -1
  112. package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
  113. package/dist/pam/identity/admin-user-directory.js +6 -3
  114. package/dist/pam/identity/admin-user-directory.js.map +1 -1
  115. package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
  116. package/dist/pam/identity/service/identity.service.js +4 -0
  117. package/dist/pam/identity/service/identity.service.js.map +1 -1
  118. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +5 -2
  119. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +1 -1
  120. package/dist/pam/player-management/__tests__/player.router.test.js +27 -20
  121. package/dist/pam/player-management/__tests__/player.router.test.js.map +1 -1
  122. package/dist/pam/player-management/__tests__/player.service.test.js +30 -31
  123. package/dist/pam/player-management/__tests__/player.service.test.js.map +1 -1
  124. package/dist/pam/player-management/contract/index.d.ts +37 -9
  125. package/dist/pam/player-management/contract/index.d.ts.map +1 -1
  126. package/dist/pam/player-management/contract/index.js +0 -1
  127. package/dist/pam/player-management/contract/index.js.map +1 -1
  128. package/dist/pam/player-management/plugin.d.ts.map +1 -1
  129. package/dist/pam/player-management/plugin.js +3 -2
  130. package/dist/pam/player-management/plugin.js.map +1 -1
  131. package/dist/pam/player-management/router/index.d.ts +32 -10
  132. package/dist/pam/player-management/router/index.d.ts.map +1 -1
  133. package/dist/pam/player-management/router/index.js +48 -16
  134. package/dist/pam/player-management/router/index.js.map +1 -1
  135. package/dist/pam/player-management/service/kyc-status-writer.d.ts +3 -2
  136. package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
  137. package/dist/pam/player-management/service/kyc-status-writer.js +24 -10
  138. package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
  139. package/dist/pam/player-management/service/player.service.d.ts +10 -9
  140. package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
  141. package/dist/pam/player-management/service/player.service.js +24 -12
  142. package/dist/pam/player-management/service/player.service.js.map +1 -1
  143. package/dist/pam/profile/contract/index.d.ts +2 -0
  144. package/dist/pam/profile/contract/index.d.ts.map +1 -1
  145. package/dist/pam/profile/drizzle/migrations/0001_powerful_tiger_shark.sql +1 -0
  146. package/dist/pam/profile/drizzle/migrations/meta/0001_snapshot.json +191 -0
  147. package/dist/pam/profile/drizzle/migrations/meta/_journal.json +7 -0
  148. package/dist/pam/profile/react/profile.d.ts +2 -2
  149. package/dist/pam/profile/router/index.d.ts +2 -0
  150. package/dist/pam/profile/router/index.d.ts.map +1 -1
  151. package/dist/pam/profile/schema/index.d.ts +3 -3
  152. package/dist/pam/profile/schema/index.d.ts.map +1 -1
  153. package/dist/pam/profile/service/profile.service.d.ts +2 -2
  154. package/dist/pam/shared/player-mapper.d.ts +1 -1
  155. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +619 -19
  156. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +1 -1
  157. package/dist/pam/tag/__tests__/tag-mappers.test.js +25 -0
  158. package/dist/pam/tag/__tests__/tag-mappers.test.js.map +1 -1
  159. package/dist/pam/tag/__tests__/tag.router.test.js +71 -1
  160. package/dist/pam/tag/__tests__/tag.router.test.js.map +1 -1
  161. package/dist/pam/tag/__tests__/tag.service.test.js +342 -15
  162. package/dist/pam/tag/__tests__/tag.service.test.js.map +1 -1
  163. package/dist/pam/tag/contract/index.d.ts +123 -0
  164. package/dist/pam/tag/contract/index.d.ts.map +1 -1
  165. package/dist/pam/tag/contract/index.js +3 -0
  166. package/dist/pam/tag/contract/index.js.map +1 -1
  167. package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts +37 -0
  168. package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts.map +1 -0
  169. package/dist/pam/tag/contract/player-tag-assign-metadata.js +20 -0
  170. package/dist/pam/tag/contract/player-tag-assign-metadata.js.map +1 -0
  171. package/dist/pam/tag/drizzle/migrations/0002_silent_skaar.sql +4 -0
  172. package/dist/pam/tag/drizzle/migrations/0003_overconfident_guardian.sql +3 -0
  173. package/dist/pam/tag/drizzle/migrations/0004_curvy_wither.sql +2 -0
  174. package/dist/pam/tag/drizzle/migrations/meta/0002_snapshot.json +335 -0
  175. package/dist/pam/tag/drizzle/migrations/meta/0003_snapshot.json +343 -0
  176. package/dist/pam/tag/drizzle/migrations/meta/0004_snapshot.json +345 -0
  177. package/dist/pam/tag/drizzle/migrations/meta/_journal.json +21 -0
  178. package/dist/pam/tag/migrate.d.ts.map +1 -1
  179. package/dist/pam/tag/migrate.js +34 -0
  180. package/dist/pam/tag/migrate.js.map +1 -1
  181. package/dist/pam/tag/plugin.d.ts.map +1 -1
  182. package/dist/pam/tag/plugin.js +43 -16
  183. package/dist/pam/tag/plugin.js.map +1 -1
  184. package/dist/pam/tag/router/index.d.ts +105 -0
  185. package/dist/pam/tag/router/index.d.ts.map +1 -1
  186. package/dist/pam/tag/router/index.js +34 -18
  187. package/dist/pam/tag/router/index.js.map +1 -1
  188. package/dist/pam/tag/schema/index.d.ts +42 -3
  189. package/dist/pam/tag/schema/index.d.ts.map +1 -1
  190. package/dist/pam/tag/schema/index.js +13 -2
  191. package/dist/pam/tag/schema/index.js.map +1 -1
  192. package/dist/pam/tag/seed/data/default-tag-rules.d.ts.map +1 -1
  193. package/dist/pam/tag/seed/data/default-tag-rules.js +42 -0
  194. package/dist/pam/tag/seed/data/default-tag-rules.js.map +1 -1
  195. package/dist/pam/tag/seed/data/default-tags.d.ts.map +1 -1
  196. package/dist/pam/tag/seed/data/default-tags.js +6 -0
  197. package/dist/pam/tag/seed/data/default-tags.js.map +1 -1
  198. package/dist/pam/tag/service/tag-evaluation.service.d.ts +141 -16
  199. package/dist/pam/tag/service/tag-evaluation.service.d.ts.map +1 -1
  200. package/dist/pam/tag/service/tag-evaluation.service.js +472 -47
  201. package/dist/pam/tag/service/tag-evaluation.service.js.map +1 -1
  202. package/dist/pam/tag/service/tag-mappers.d.ts +1 -1
  203. package/dist/pam/tag/service/tag-mappers.d.ts.map +1 -1
  204. package/dist/pam/tag/service/tag-mappers.js +1 -0
  205. package/dist/pam/tag/service/tag-mappers.js.map +1 -1
  206. package/dist/pam/tag/service/tag-rule.service.d.ts +3 -3
  207. package/dist/pam/tag/service/tag.service.d.ts +141 -11
  208. package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
  209. package/dist/pam/tag/service/tag.service.js +242 -23
  210. package/dist/pam/tag/service/tag.service.js.map +1 -1
  211. package/dist/server/auth/permissions.d.ts +12 -0
  212. package/dist/server/auth/permissions.d.ts.map +1 -1
  213. package/dist/server/auth/permissions.js +2 -0
  214. package/dist/server/auth/permissions.js.map +1 -1
  215. package/dist/server/db/__tests__/migrate.test.js +79 -2
  216. package/dist/server/db/__tests__/migrate.test.js.map +1 -1
  217. package/dist/server/db/migrate.d.ts +11 -0
  218. package/dist/server/db/migrate.d.ts.map +1 -1
  219. package/dist/server/db/migrate.js +3 -0
  220. package/dist/server/db/migrate.js.map +1 -1
  221. package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
  222. package/dist/server/kernel/bullmq-job-queue.js +17 -0
  223. package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
  224. package/dist/server/plugin-host/__tests__/core-plugins.test.js +1 -1
  225. package/dist/server/plugin-host/__tests__/core-plugins.test.js.map +1 -1
  226. package/dist/server/plugin-host/define-plugin.d.ts +2 -2
  227. package/dist/server/plugin-host/define-plugin.d.ts.map +1 -1
  228. package/dist/server/plugin-host/define-plugin.js.map +1 -1
  229. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +60 -0
  230. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
  231. package/dist/wallet/__tests__/wallet.service.test.js +59 -0
  232. package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
  233. package/dist/wallet/adapters/wallet-reader.service.d.ts +1 -0
  234. package/dist/wallet/adapters/wallet-reader.service.d.ts.map +1 -1
  235. package/dist/wallet/adapters/wallet-reader.service.js +18 -1
  236. package/dist/wallet/adapters/wallet-reader.service.js.map +1 -1
  237. package/dist/wallet/contract/index.d.ts +4 -0
  238. package/dist/wallet/contract/index.d.ts.map +1 -1
  239. package/dist/wallet/plugin.d.ts.map +1 -1
  240. package/dist/wallet/plugin.js +7 -4
  241. package/dist/wallet/plugin.js.map +1 -1
  242. package/dist/wallet/router/index.d.ts +2 -0
  243. package/dist/wallet/router/index.d.ts.map +1 -1
  244. package/dist/wallet/service/wallet.service.d.ts +5 -4
  245. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  246. package/dist/wallet/service/wallet.service.js +28 -8
  247. package/dist/wallet/service/wallet.service.js.map +1 -1
  248. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { definePlugin, EVENT_BUS, DRIZZLE, ADMIN_GUARD, createLogger } from '@openora/core/server';
2
2
  import * as z from 'zod';
3
- import { ADMIN_USER_DIRECTORY, GEO_IP_ADAPTER, JOB_QUEUE, KYC_ADAPTER, KYC_STATUS_WRITER, KYC_WEBHOOK_VERIFIER, LOGIN_ENFORCEMENT, PLATFORM_CONFIG, SEND_EMAIL, EMAIL_TEMPLATE_RENDERER, UuidSchema, domainEventSchemas, queue, } from '@openora/core/contracts';
3
+ import { ADMIN_USER_DIRECTORY, AUDIT_WRITER, CACHE, GEO_IP_ADAPTER, JOB_QUEUE, KYC_ADAPTER, KYC_STATUS_WRITER, KYC_VENDOR_STATUSES, KYC_WEBHOOK_VERIFIER, LOGIN_ENFORCEMENT, PLATFORM_CONFIG, SEND_EMAIL, EMAIL_TEMPLATE_RENDERER, UuidSchema, domainEventSchemas, queue, } from '@openora/core/contracts';
4
4
  import { ComplianceService } from './service/compliance.service.js';
5
5
  import { KycVerificationService } from './service/kyc.service.js';
6
6
  import { RgService } from './service/rg.service.js';
@@ -10,14 +10,22 @@ import { HmacKycWebhookVerifier } from './adapters/hmac-kyc-webhook-verifier.js'
10
10
  const logger = createLogger('compliance');
11
11
  const RG_EVAL_QUEUE = queue('rg-eval');
12
12
  const RG_MONITOR_QUEUE = queue('rg-monitor');
13
+ const KYC_DECISION_SYNC_QUEUE = queue('kyc-decision-sync');
13
14
  const RgEvalJobSchema = z.object({
14
15
  userId: UuidSchema,
15
16
  trigger: z.enum(RG_EVAL_TRIGGERS),
16
17
  });
17
18
  const RgMonitorJobSchema = z.object({});
19
+ const KycDecisionSyncJobSchema = z.object({
20
+ referenceId: z.string().min(1),
21
+ status: z.enum(KYC_VENDOR_STATUSES),
22
+ // Webhook-arrival time, stamped by the router before enqueue - the monotonicity
23
+ // watermark `reconcile` compares against, immune to job-processing reordering.
24
+ receivedAt: z.iso.datetime(),
25
+ });
18
26
  export default definePlugin({
19
27
  id: 'compliance',
20
- dependsOn: ['player-management', 'identity', 'wallet', 'gaming'],
28
+ dependsOn: ['player-management', 'identity', 'wallet', 'gaming', 'audit'],
21
29
  requiresPorts: [LOGIN_ENFORCEMENT],
22
30
  register(ctx) {
23
31
  ctx.provide(KYC_WEBHOOK_VERIFIER, (c) => {
@@ -28,7 +36,7 @@ export default definePlugin({
28
36
  .min(1)
29
37
  .optional()
30
38
  .parse(process.env[envName] || undefined);
31
- return new HmacKycWebhookVerifier(webhookSecret);
39
+ return new HmacKycWebhookVerifier(webhookSecret, c.get(CACHE));
32
40
  });
33
41
  // svcRefs are null at registration (subscriptions wire before router factories run)
34
42
  // but set before any real event/job arrives. See create-app.ts boot order.
@@ -93,6 +101,15 @@ export default definePlugin({
93
101
  }
94
102
  },
95
103
  });
104
+ ctx.jobs.worker({
105
+ queue: KYC_DECISION_SYNC_QUEUE,
106
+ schema: KycDecisionSyncJobSchema,
107
+ handler: async ({ payload }) => {
108
+ if (kycRef) {
109
+ await kycRef.syncDecision(payload.referenceId, payload.status, new Date(payload.receivedAt));
110
+ }
111
+ },
112
+ });
96
113
  ctx.routers.add('compliance', (c) => {
97
114
  const platformConfig = c.has(PLATFORM_CONFIG) ? c.get(PLATFORM_CONFIG) : undefined;
98
115
  const kycAdapter = c.get(KYC_ADAPTER);
@@ -133,9 +150,12 @@ export default definePlugin({
133
150
  return createComplianceRouter({
134
151
  compliance: new ComplianceService(c.get(DRIZZLE), c.get(EVENT_BUS), c.has(GEO_IP_ADAPTER) ? c.get(GEO_IP_ADAPTER) : null),
135
152
  adminGuard: c.get(ADMIN_GUARD),
153
+ audit: c.get(AUDIT_WRITER),
136
154
  kyc,
137
155
  kycAdapter,
138
156
  webhookVerifier: c.get(KYC_WEBHOOK_VERIFIER),
157
+ jobQueue: jobQueueRef,
158
+ kycDecisionSyncQueue: KYC_DECISION_SYNC_QUEUE,
139
159
  rg,
140
160
  rgMonitoring,
141
161
  });
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/compliance/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/compliance/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,20 @@
1
1
  import { AdminGuard, type OssContext } from '@openora/core/server';
2
- import type { KycAdapter, KycWebhookVerifier } from '@openora/core/contracts';
2
+ import type { AuditWritePort, JobQueueAdapter, KycAdapter, KycWebhookVerifier, QueueName } from '@openora/core/contracts';
3
3
  import { ComplianceService } from '../service/compliance.service.js';
4
4
  import { KycVerificationService } from '../service/kyc.service.js';
5
5
  import { RgService } from '../service/rg.service.js';
6
6
  import { RgMonitoringService } from '../service/rg-monitoring.service.js';
7
- export declare function createComplianceRouter({ compliance, adminGuard, kyc, kycAdapter, webhookVerifier, rg, rgMonitoring, }: {
7
+ export declare function createComplianceRouter({ compliance, adminGuard, audit, kyc, kycAdapter, webhookVerifier, jobQueue, kycDecisionSyncQueue, rg, rgMonitoring, }: {
8
8
  rg: RgService;
9
9
  rgMonitoring: RgMonitoringService;
10
10
  compliance: ComplianceService;
11
11
  adminGuard: AdminGuard;
12
+ audit: AuditWritePort;
12
13
  kyc: KycVerificationService;
13
14
  kycAdapter: KycAdapter;
14
15
  webhookVerifier: KycWebhookVerifier;
16
+ jobQueue: JobQueueAdapter;
17
+ kycDecisionSyncQueue: QueueName;
15
18
  }): {
16
19
  getLimits: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("@orpc/server").Schema<unknown, unknown>, import("zod").ZodArray<import("zod").ZodObject<{
17
20
  id: import("zod").ZodUUID;
@@ -111,6 +114,7 @@ export declare function createComplianceRouter({ compliance, adminGuard, kyc, ky
111
114
  status: import("zod").ZodEnum<{
112
115
  pending: "pending";
113
116
  not_started: "not_started";
117
+ approved: "approved";
114
118
  verified: "verified";
115
119
  rejected: "rejected";
116
120
  resubmission_requested: "resubmission_requested";
@@ -127,6 +131,25 @@ export declare function createComplianceRouter({ compliance, adminGuard, kyc, ky
127
131
  submission: "submission";
128
132
  reverify_threshold: "reverify_threshold";
129
133
  }>;
134
+ riskSignals: import("zod").ZodNullable<import("zod").ZodObject<{
135
+ vpnOrTorDetected: import("zod").ZodBoolean;
136
+ dataCenterIpDetected: import("zod").ZodBoolean;
137
+ duplicateDeviceDetected: import("zod").ZodBoolean;
138
+ highRiskCountryDetected: import("zod").ZodBoolean;
139
+ deviceFingerprints: import("zod").ZodArray<import("zod").ZodString>;
140
+ }, import("zod/v4/core").$strip>>;
141
+ checks: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
142
+ step: import("zod").ZodString;
143
+ status: import("zod").ZodEnum<{
144
+ expired: "expired";
145
+ unknown: "unknown";
146
+ not_started: "not_started";
147
+ approved: "approved";
148
+ in_progress: "in_progress";
149
+ in_review: "in_review";
150
+ declined: "declined";
151
+ }>;
152
+ }, import("zod/v4/core").$strip>>>;
130
153
  submittedAt: import("zod").ZodISODateTime;
131
154
  decidedAt: import("zod").ZodNullable<import("zod").ZodISODateTime>;
132
155
  createdAt: import("zod").ZodISODateTime;
@@ -140,6 +163,7 @@ export declare function createComplianceRouter({ compliance, adminGuard, kyc, ky
140
163
  status: import("zod").ZodEnum<{
141
164
  pending: "pending";
142
165
  not_started: "not_started";
166
+ approved: "approved";
143
167
  verified: "verified";
144
168
  rejected: "rejected";
145
169
  resubmission_requested: "resubmission_requested";
@@ -156,6 +180,25 @@ export declare function createComplianceRouter({ compliance, adminGuard, kyc, ky
156
180
  submission: "submission";
157
181
  reverify_threshold: "reverify_threshold";
158
182
  }>;
183
+ riskSignals: import("zod").ZodNullable<import("zod").ZodObject<{
184
+ vpnOrTorDetected: import("zod").ZodBoolean;
185
+ dataCenterIpDetected: import("zod").ZodBoolean;
186
+ duplicateDeviceDetected: import("zod").ZodBoolean;
187
+ highRiskCountryDetected: import("zod").ZodBoolean;
188
+ deviceFingerprints: import("zod").ZodArray<import("zod").ZodString>;
189
+ }, import("zod/v4/core").$strip>>;
190
+ checks: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
191
+ step: import("zod").ZodString;
192
+ status: import("zod").ZodEnum<{
193
+ expired: "expired";
194
+ unknown: "unknown";
195
+ not_started: "not_started";
196
+ approved: "approved";
197
+ in_progress: "in_progress";
198
+ in_review: "in_review";
199
+ declined: "declined";
200
+ }>;
201
+ }, import("zod/v4/core").$strip>>>;
159
202
  submittedAt: import("zod").ZodISODateTime;
160
203
  decidedAt: import("zod").ZodNullable<import("zod").ZodISODateTime>;
161
204
  createdAt: import("zod").ZodISODateTime;
@@ -180,6 +223,7 @@ export declare function createComplianceRouter({ compliance, adminGuard, kyc, ky
180
223
  status: import("zod").ZodEnum<{
181
224
  pending: "pending";
182
225
  not_started: "not_started";
226
+ approved: "approved";
183
227
  verified: "verified";
184
228
  rejected: "rejected";
185
229
  resubmission_requested: "resubmission_requested";
@@ -196,6 +240,25 @@ export declare function createComplianceRouter({ compliance, adminGuard, kyc, ky
196
240
  submission: "submission";
197
241
  reverify_threshold: "reverify_threshold";
198
242
  }>;
243
+ riskSignals: import("zod").ZodNullable<import("zod").ZodObject<{
244
+ vpnOrTorDetected: import("zod").ZodBoolean;
245
+ dataCenterIpDetected: import("zod").ZodBoolean;
246
+ duplicateDeviceDetected: import("zod").ZodBoolean;
247
+ highRiskCountryDetected: import("zod").ZodBoolean;
248
+ deviceFingerprints: import("zod").ZodArray<import("zod").ZodString>;
249
+ }, import("zod/v4/core").$strip>>;
250
+ checks: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
251
+ step: import("zod").ZodString;
252
+ status: import("zod").ZodEnum<{
253
+ expired: "expired";
254
+ unknown: "unknown";
255
+ not_started: "not_started";
256
+ approved: "approved";
257
+ in_progress: "in_progress";
258
+ in_review: "in_review";
259
+ declined: "declined";
260
+ }>;
261
+ }, import("zod/v4/core").$strip>>>;
199
262
  submittedAt: import("zod").ZodISODateTime;
200
263
  decidedAt: import("zod").ZodNullable<import("zod").ZodISODateTime>;
201
264
  createdAt: import("zod").ZodISODateTime;
@@ -205,6 +268,127 @@ export declare function createComplianceRouter({ compliance, adminGuard, kyc, ky
205
268
  kycWebhook: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, import("zod").ZodObject<{
206
269
  ok: import("zod").ZodLiteral<true>;
207
270
  }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
271
+ requestKycResubmission: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
272
+ userId: import("zod").ZodUUID;
273
+ reason: import("zod").ZodString;
274
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
275
+ id: import("zod").ZodUUID;
276
+ userId: import("zod").ZodUUID;
277
+ provider: import("zod").ZodString;
278
+ referenceId: import("zod").ZodString;
279
+ status: import("zod").ZodEnum<{
280
+ pending: "pending";
281
+ not_started: "not_started";
282
+ approved: "approved";
283
+ verified: "verified";
284
+ rejected: "rejected";
285
+ resubmission_requested: "resubmission_requested";
286
+ manually_overridden: "manually_overridden";
287
+ }>;
288
+ documentTypes: import("zod").ZodArray<import("zod").ZodEnum<{
289
+ passport: "passport";
290
+ drivers_license: "drivers_license";
291
+ national_id: "national_id";
292
+ }>>;
293
+ decisionReason: import("zod").ZodNullable<import("zod").ZodString>;
294
+ triggeredBy: import("zod").ZodEnum<{
295
+ manual: "manual";
296
+ submission: "submission";
297
+ reverify_threshold: "reverify_threshold";
298
+ }>;
299
+ riskSignals: import("zod").ZodNullable<import("zod").ZodObject<{
300
+ vpnOrTorDetected: import("zod").ZodBoolean;
301
+ dataCenterIpDetected: import("zod").ZodBoolean;
302
+ duplicateDeviceDetected: import("zod").ZodBoolean;
303
+ highRiskCountryDetected: import("zod").ZodBoolean;
304
+ deviceFingerprints: import("zod").ZodArray<import("zod").ZodString>;
305
+ }, import("zod/v4/core").$strip>>;
306
+ checks: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
307
+ step: import("zod").ZodString;
308
+ status: import("zod").ZodEnum<{
309
+ expired: "expired";
310
+ unknown: "unknown";
311
+ not_started: "not_started";
312
+ approved: "approved";
313
+ in_progress: "in_progress";
314
+ in_review: "in_review";
315
+ declined: "declined";
316
+ }>;
317
+ }, import("zod/v4/core").$strip>>>;
318
+ submittedAt: import("zod").ZodISODateTime;
319
+ decidedAt: import("zod").ZodNullable<import("zod").ZodISODateTime>;
320
+ createdAt: import("zod").ZodISODateTime;
321
+ updatedAt: import("zod").ZodISODateTime;
322
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
323
+ overrideKycStatus: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
324
+ userId: import("zod").ZodUUID;
325
+ status: import("zod").ZodEnum<{
326
+ pending: "pending";
327
+ not_started: "not_started";
328
+ approved: "approved";
329
+ rejected: "rejected";
330
+ resubmission_requested: "resubmission_requested";
331
+ }>;
332
+ reason: import("zod").ZodString;
333
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
334
+ id: import("zod").ZodUUID;
335
+ userId: import("zod").ZodUUID;
336
+ provider: import("zod").ZodString;
337
+ referenceId: import("zod").ZodString;
338
+ status: import("zod").ZodEnum<{
339
+ pending: "pending";
340
+ not_started: "not_started";
341
+ approved: "approved";
342
+ verified: "verified";
343
+ rejected: "rejected";
344
+ resubmission_requested: "resubmission_requested";
345
+ manually_overridden: "manually_overridden";
346
+ }>;
347
+ documentTypes: import("zod").ZodArray<import("zod").ZodEnum<{
348
+ passport: "passport";
349
+ drivers_license: "drivers_license";
350
+ national_id: "national_id";
351
+ }>>;
352
+ decisionReason: import("zod").ZodNullable<import("zod").ZodString>;
353
+ triggeredBy: import("zod").ZodEnum<{
354
+ manual: "manual";
355
+ submission: "submission";
356
+ reverify_threshold: "reverify_threshold";
357
+ }>;
358
+ riskSignals: import("zod").ZodNullable<import("zod").ZodObject<{
359
+ vpnOrTorDetected: import("zod").ZodBoolean;
360
+ dataCenterIpDetected: import("zod").ZodBoolean;
361
+ duplicateDeviceDetected: import("zod").ZodBoolean;
362
+ highRiskCountryDetected: import("zod").ZodBoolean;
363
+ deviceFingerprints: import("zod").ZodArray<import("zod").ZodString>;
364
+ }, import("zod/v4/core").$strip>>;
365
+ checks: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
366
+ step: import("zod").ZodString;
367
+ status: import("zod").ZodEnum<{
368
+ expired: "expired";
369
+ unknown: "unknown";
370
+ not_started: "not_started";
371
+ approved: "approved";
372
+ in_progress: "in_progress";
373
+ in_review: "in_review";
374
+ declined: "declined";
375
+ }>;
376
+ }, import("zod/v4/core").$strip>>>;
377
+ submittedAt: import("zod").ZodISODateTime;
378
+ decidedAt: import("zod").ZodNullable<import("zod").ZodISODateTime>;
379
+ createdAt: import("zod").ZodISODateTime;
380
+ updatedAt: import("zod").ZodISODateTime;
381
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
382
+ bulkApproveKyc: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
383
+ userIds: import("zod").ZodArray<import("zod").ZodUUID>;
384
+ reason: import("zod").ZodString;
385
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
386
+ results: import("zod").ZodArray<import("zod").ZodObject<{
387
+ userId: import("zod").ZodUUID;
388
+ success: import("zod").ZodBoolean;
389
+ error: import("zod").ZodNullable<import("zod").ZodString>;
390
+ }, import("zod/v4/core").$strip>>;
391
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
208
392
  setPlayerLimit: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
209
393
  userId: import("zod").ZodUUID;
210
394
  type: import("zod").ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compliance/router/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EACL,iBAAiB,EAGlB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EACL,SAAS,EAKV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,UAAU,EACV,GAAG,EACH,UAAU,EACV,eAAe,EACf,EAAE,EACF,YAAY,GACb,EAAE;IACD,EAAE,EAAE,SAAS,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,sBAAsB,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,kBAAkB,CAAC;CACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2GA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compliance/router/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAwB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,SAAS,EACV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EAGlB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAuB,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,SAAS,EAKV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,UAAU,EACV,KAAK,EACL,GAAG,EACH,UAAU,EACV,eAAe,EACf,QAAQ,EACR,oBAAoB,EACpB,EAAE,EACF,YAAY,GACb,EAAE;IACD,EAAE,EAAE,SAAS,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,EAAE,sBAAsB,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,kBAAkB,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,oBAAoB,EAAE,SAAS,CAAC;CACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuKA"}
@@ -1,9 +1,11 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import { implement, ORPCError } from '@orpc/server';
2
3
  import { getUserId, mapErrors } from '@openora/core/server';
3
4
  import { complianceContract } from '../contract/index.js';
4
5
  import { LimitNotFoundError, LimitOwnershipError, } from '../service/compliance.service.js';
6
+ import { PlayerNotFoundError } from '../service/kyc.service.js';
5
7
  import { ExclusionNotFoundError, ActiveExclusionError, PermanentExclusionLiftError, ExclusionPeriodNotElapsedError, } from '../service/rg.service.js';
6
- export function createComplianceRouter({ compliance, adminGuard, kyc, kycAdapter, webhookVerifier, rg, rgMonitoring, }) {
8
+ export function createComplianceRouter({ compliance, adminGuard, audit, kyc, kycAdapter, webhookVerifier, jobQueue, kycDecisionSyncQueue, rg, rgMonitoring, }) {
7
9
  const os = implement(complianceContract).$context();
8
10
  return os.router({
9
11
  getLimits: os.getLimits.handler(({ context }) => compliance.getLimitsForUser(getUserId(context))),
@@ -36,15 +38,62 @@ export function createComplianceRouter({ compliance, adminGuard, kyc, kycAdapter
36
38
  // signature header or reject (fail closed); never fall back to an empty body.
37
39
  kycWebhook: os.kycWebhook.handler(async ({ context }) => {
38
40
  const rawBody = context.rawBody;
39
- if (rawBody === undefined || !webhookVerifier.verify(rawBody, context.request.headers)) {
41
+ if (rawBody === undefined ||
42
+ !(await webhookVerifier.verify(rawBody, context.request.headers))) {
40
43
  throw new ORPCError('UNAUTHORIZED', { message: 'Invalid KYC webhook signature' });
41
44
  }
42
45
  const decision = kycAdapter.parseWebhook?.(rawBody, context.request.headers);
43
46
  if (decision) {
44
- await kyc.reconcile(decision.referenceId, decision.status);
47
+ // Dedup on a hash of the verbatim delivery bytes, never on referenceId:status.
48
+ // The vendor-neutral KycResult carries no delivery/event id, so the only
49
+ // signal that reliably distinguishes "the SAME decision resent" (retry storm
50
+ // within the vendor's own SLA - collapse it) from "a genuinely NEW decision
51
+ // that happens to land on a status we've seen before" (eg
52
+ // rejected -> approved -> rejected again - must run) is the raw body itself:
53
+ // a true redelivery is byte-identical: a new decision is not. Keying on
54
+ // referenceId:status instead would give BullMQ's permanent-by-default jobId
55
+ // dedup (see bullmq-job-queue.ts) a key that legitimately repeats, silently
56
+ // dropping the later, real decision forever.
57
+ const idempotencyKey = `kyc-decision-sync:${createHash('sha256').update(rawBody).digest('hex')}`;
58
+ // Stamped HERE, at webhook-arrival time - never in the job handler - so the
59
+ // reconcile monotonicity guard has the true delivery order even when the job
60
+ // queue (which ignores orderingKey) runs two decisions for the same reference
61
+ // out of order.
62
+ const receivedAt = new Date().toISOString();
63
+ await jobQueue.enqueue(kycDecisionSyncQueue, { referenceId: decision.referenceId, status: decision.status, receivedAt }, {
64
+ idempotencyKey,
65
+ orderingKey: decision.referenceId,
66
+ attempts: 5,
67
+ backoff: { type: 'exponential', delayMs: 1_000 },
68
+ });
45
69
  }
46
70
  return { ok: true };
47
71
  }),
72
+ requestKycResubmission: os.requestKycResubmission.handler(async ({ input, context }) => {
73
+ const caller = await adminGuard.assert(context, 'compliance', 'override-limit');
74
+ return mapErrors({ NOT_FOUND: PlayerNotFoundError }, () => kyc.requestResubmission(input.userId, input.reason, caller.userId));
75
+ }),
76
+ overrideKycStatus: os.overrideKycStatus.handler(async ({ input, context }) => {
77
+ const caller = await adminGuard.assert(context, 'compliance', 'override-limit');
78
+ return mapErrors({ NOT_FOUND: PlayerNotFoundError }, () => kyc.overrideStatus(input.userId, input.status, input.reason, caller.userId));
79
+ }),
80
+ bulkApproveKyc: os.bulkApproveKyc.handler(async ({ input, context }) => {
81
+ const caller = await adminGuard.assert(context, 'compliance', 'override-limit');
82
+ const results = await kyc.bulkApprove(input.userIds, input.reason, caller.userId);
83
+ // A per-item failure never reaches overrideStatus, so it leaves no
84
+ // compliance.kyc.updated trail of its own - record the WHOLE attempted batch here
85
+ // (every userId, success/failure per item) so a probe of nonexistent ids is still
86
+ // visible in the audit log even when nothing downstream changed.
87
+ await audit.record({
88
+ actorId: caller.userId,
89
+ actorType: 'admin',
90
+ action: 'compliance.kyc.bulk_approve',
91
+ resourceType: 'compliance',
92
+ resourceId: null,
93
+ after: { reason: input.reason, results },
94
+ });
95
+ return { results };
96
+ }),
48
97
  setPlayerLimit: os.setPlayerLimit.handler(async ({ input, context }) => {
49
98
  const { userId, ip, userAgent } = await adminGuard.assert(context, 'compliance', 'manage-rg');
50
99
  return rg.setPlayerLimit(input.userId, input, userId, { ip, userAgent });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compliance/router/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compliance/router/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- export declare const kycVerificationStatus: import("drizzle-orm/pg-core").PgEnum<["not_started", "pending", "verified", "rejected", "resubmission_requested", "manually_overridden"]>;
1
+ import { type KycRiskSignals } from '@openora/core/contracts';
2
+ export declare const kycVerificationStatus: import("drizzle-orm/pg-core").PgEnum<["not_started", "pending", "approved", "verified", "rejected", "resubmission_requested", "manually_overridden"]>;
2
3
  export declare const kycTriggeredBy: import("drizzle-orm/pg-core").PgEnum<["submission", "reverify_threshold", "manual"]>;
3
4
  export declare const rgExclusionKind: import("drizzle-orm/pg-core").PgEnum<["cooling_off", "self_exclusion"]>;
4
5
  export declare const rgExclusionStatus: import("drizzle-orm/pg-core").PgEnum<["active", "lifted", "expired"]>;
@@ -299,14 +300,14 @@ export declare const kycVerification: import("drizzle-orm/pg-core").PgTableWithC
299
300
  tableName: "kyc_verification";
300
301
  dataType: "string";
301
302
  columnType: "PgEnumColumn";
302
- data: "pending" | "not_started" | "verified" | "rejected" | "resubmission_requested" | "manually_overridden";
303
+ data: "pending" | "not_started" | "approved" | "verified" | "rejected" | "resubmission_requested" | "manually_overridden";
303
304
  driverParam: string;
304
305
  notNull: true;
305
306
  hasDefault: false;
306
307
  isPrimaryKey: false;
307
308
  isAutoincrement: false;
308
309
  hasRuntimeDefault: false;
309
- enumValues: ["not_started", "pending", "verified", "rejected", "resubmission_requested", "manually_overridden"];
310
+ enumValues: ["not_started", "pending", "approved", "verified", "rejected", "resubmission_requested", "manually_overridden"];
310
311
  baseColumn: never;
311
312
  identity: undefined;
312
313
  generated: undefined;
@@ -347,6 +348,50 @@ export declare const kycVerification: import("drizzle-orm/pg-core").PgTableWithC
347
348
  identity: undefined;
348
349
  generated: undefined;
349
350
  }, {}, {}>;
351
+ riskSignals: import("drizzle-orm/pg-core").PgColumn<{
352
+ name: "riskSignals";
353
+ tableName: "kyc_verification";
354
+ dataType: "json";
355
+ columnType: "PgJsonb";
356
+ data: KycRiskSignals;
357
+ driverParam: unknown;
358
+ notNull: false;
359
+ hasDefault: false;
360
+ isPrimaryKey: false;
361
+ isAutoincrement: false;
362
+ hasRuntimeDefault: false;
363
+ enumValues: undefined;
364
+ baseColumn: never;
365
+ identity: undefined;
366
+ generated: undefined;
367
+ }, {}, {
368
+ $type: KycRiskSignals;
369
+ }>;
370
+ checks: import("drizzle-orm/pg-core").PgColumn<{
371
+ name: "checks";
372
+ tableName: "kyc_verification";
373
+ dataType: "json";
374
+ columnType: "PgJsonb";
375
+ data: {
376
+ step: string;
377
+ status: "expired" | "unknown" | "not_started" | "approved" | "in_progress" | "in_review" | "declined";
378
+ }[];
379
+ driverParam: unknown;
380
+ notNull: false;
381
+ hasDefault: false;
382
+ isPrimaryKey: false;
383
+ isAutoincrement: false;
384
+ hasRuntimeDefault: false;
385
+ enumValues: undefined;
386
+ baseColumn: never;
387
+ identity: undefined;
388
+ generated: undefined;
389
+ }, {}, {
390
+ $type: {
391
+ step: string;
392
+ status: "expired" | "unknown" | "not_started" | "approved" | "in_progress" | "in_review" | "declined";
393
+ }[];
394
+ }>;
350
395
  triggeredBy: import("drizzle-orm/pg-core").PgColumn<{
351
396
  name: "triggeredBy";
352
397
  tableName: "kyc_verification";
@@ -381,6 +426,23 @@ export declare const kycVerification: import("drizzle-orm/pg-core").PgTableWithC
381
426
  identity: undefined;
382
427
  generated: undefined;
383
428
  }, {}, {}>;
429
+ decisionReceivedAt: import("drizzle-orm/pg-core").PgColumn<{
430
+ name: "decisionReceivedAt";
431
+ tableName: "kyc_verification";
432
+ dataType: "date";
433
+ columnType: "PgTimestamp";
434
+ data: Date;
435
+ driverParam: string;
436
+ notNull: false;
437
+ hasDefault: false;
438
+ isPrimaryKey: false;
439
+ isAutoincrement: false;
440
+ hasRuntimeDefault: false;
441
+ enumValues: undefined;
442
+ baseColumn: never;
443
+ identity: undefined;
444
+ generated: undefined;
445
+ }, {}, {}>;
384
446
  submittedAt: import("drizzle-orm/pg-core").PgColumn<{
385
447
  name: "submittedAt";
386
448
  tableName: "kyc_verification";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compliance/schema/index.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,qBAAqB,2IAAkD,CAAC;AACrF,eAAO,MAAM,cAAc,sFAA+C,CAAC;AAC3E,eAAO,MAAM,eAAe,yEAA+C,CAAC;AAC5E,eAAO,MAAM,iBAAiB,uEAAoD,CAAC;AACnF,eAAO,MAAM,UAAU,kGAAwC,CAAC;AAChE,eAAO,MAAM,YAAY,6DAA6C,CAAC;AAEvE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBrB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKlB,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B3B,CAAC;AAKF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BvB,CAAC;AAIF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBlB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC;AACtD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,YAAY,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,YAAY,CAAC;AAC1D,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compliance/schema/index.ts"],"names":[],"mappings":"AAcA,OAAO,EASL,KAAK,cAAc,EAEpB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,qBAAqB,uJAAkD,CAAC;AACrF,eAAO,MAAM,cAAc,sFAA+C,CAAC;AAC3E,eAAO,MAAM,eAAe,yEAA+C,CAAC;AAC5E,eAAO,MAAM,iBAAiB,uEAAoD,CAAC;AACnF,eAAO,MAAM,UAAU,kGAAwC,CAAC;AAChE,eAAO,MAAM,YAAY,6DAA6C,CAAC;AAEvE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBrB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKlB,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC3B,CAAC;AAKF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BvB,CAAC;AAIF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBlB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC;AACtD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,YAAY,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,YAAY,CAAC;AAC1D,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,YAAY,CAAC"}
@@ -40,10 +40,18 @@ export const kycVerification = pgTable('kyc_verification', {
40
40
  status: kycVerificationStatus().notNull(),
41
41
  documentTypes: jsonb().$type().notNull().default([]),
42
42
  decisionReason: text(),
43
+ riskSignals: jsonb().$type(),
44
+ checks: jsonb().$type(),
43
45
  triggeredBy: kycTriggeredBy().notNull(),
44
46
  // High-water mark of deposits at the last reverify_threshold fire, so re-KYC triggers
45
47
  // once per fresh threshold band rather than on every deposit.
46
48
  triggerDeposits: decimal({ precision: 18, scale: 2 }),
49
+ // The wall-clock time THIS decision was received (webhook arrival / submit time),
50
+ // never job-processing time - a job/webhook retry or out-of-order worker execution
51
+ // must not reorder this. `reconcile` refuses to apply an incoming decision older
52
+ // than this watermark, closing the window where two vendor decisions (eg
53
+ // approved then rejected) interleave out of order and leave the wrong one applied.
54
+ decisionReceivedAt: timestamp({ withTimezone: true }),
47
55
  submittedAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
48
56
  decidedAt: timestamp({ withTimezone: true }),
49
57
  createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),