@finsys/core 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -291,6 +291,99 @@
291
291
  "description": "Cash Conversion Cycle (DSO + days-inventory-outstanding − DPO). Working-capital efficiency; negative values (collect before paying suppliers) are strongest, very high values indicate cash tied up in operations."
292
292
  }
293
293
  ]
294
+ },
295
+ {
296
+ "id": "geolocation",
297
+ "displayName": "Geolocation",
298
+ "description": "Hourly-granularity movement track plus derived mobility signals for an applicant, sourced from any location-capable provider (telco network location, mobile-SDK GPS, GIS / address-verification services). Two instance kinds share this category: point instances (instanceKey 'pt:<ISO-hour>') carry one observed position per hourly bucket, mirroring the bank-statement multi-instance pattern; a single summary instance (instanceKey 'summary') carries adapter-derived behaviour signals — most importantly work-pattern regularity (sustained weekday dwell at a stable work anchor corroborates income reliability), residential stability, vacation windows, and dwell in operator-flagged hotspot zones. Vendor-agnostic: the source classifies or the adapter infers place labels; no provider-specific semantics leak into the field set. Raw coordinates are sensitive personal data — product-plane persistence is gated on PDPA consent + CRA Act 710 s25 retention review.",
299
+ "canonicalTable": "ihs_alt_data_geolocation",
300
+ "fields": [
301
+ {
302
+ "name": "geoLatitude",
303
+ "type": "number",
304
+ "unit": "deg",
305
+ "range": [-90, 90],
306
+ "description": "Observed latitude for this hourly bucket (point instances only)."
307
+ },
308
+ {
309
+ "name": "geoLongitude",
310
+ "type": "number",
311
+ "unit": "deg",
312
+ "range": [-180, 180],
313
+ "description": "Observed longitude for this hourly bucket (point instances only)."
314
+ },
315
+ {
316
+ "name": "geoAccuracyM",
317
+ "type": "number",
318
+ "unit": "meters",
319
+ "range": [0, 100000],
320
+ "description": "Source-reported horizontal accuracy radius of the observation. Cell-tower fixes are typically hundreds of meters; GPS fixes tens."
321
+ },
322
+ {
323
+ "name": "geoBucket",
324
+ "type": "string",
325
+ "description": "ISO-8601 hour bucket of the observation, e.g. '2026-06-01T08'. Redundant with the instance key (pt:<bucket>) so consumers can query without parsing keys."
326
+ },
327
+ {
328
+ "name": "geoPlaceLabel",
329
+ "type": "string",
330
+ "description": "Classified place for the bucket: home | work | commute | leisure | travel | hotspot | other. Classified by the source or inferred by the adapter from anchor dwell."
331
+ },
332
+ {
333
+ "name": "geoWorkAttendanceRatio30d",
334
+ "type": "number",
335
+ "unit": "ratio",
336
+ "range": [0, 1],
337
+ "description": "Fraction of the last 30 weekdays with >= 6 hours of dwell at the inferred work anchor. The income-reliability headline: regular full-time work patterns corroborate declared employment income (summary instance only)."
338
+ },
339
+ {
340
+ "name": "geoWorkDailyHoursAvg30d",
341
+ "type": "number",
342
+ "unit": "hours",
343
+ "range": [0, 24],
344
+ "description": "Mean daily hours of work-anchor dwell across the last 30 weekdays (summary instance only)."
345
+ },
346
+ {
347
+ "name": "geoLocationStabilityScore",
348
+ "type": "number",
349
+ "unit": "score",
350
+ "range": [0, 1],
351
+ "description": "Residential stability: share of nights spent at the primary home anchor over the observation window. 1 = every night at home (summary instance only)."
352
+ },
353
+ {
354
+ "name": "geoCommuteRegularityRatio",
355
+ "type": "number",
356
+ "unit": "ratio",
357
+ "range": [0, 1],
358
+ "description": "Consistency of the weekday home->work->home rhythm: fraction of weekdays matching the dominant commute pattern within an hour's tolerance (summary instance only)."
359
+ },
360
+ {
361
+ "name": "geoVacationDays90d",
362
+ "type": "number",
363
+ "unit": "days",
364
+ "range": [0, 90],
365
+ "description": "Days in the last 90 spent fully away from both home and work anchors (contiguous travel windows; summary instance only)."
366
+ },
367
+ {
368
+ "name": "geoHotspotDwellRatio",
369
+ "type": "number",
370
+ "unit": "ratio",
371
+ "range": [0, 1],
372
+ "description": "Share of observed buckets spent inside operator-flagged hotspot zones (known fraud / illicit-activity locations supplied to the adapter). Non-zero values warrant review, not automatic decline (summary instance only)."
373
+ },
374
+ {
375
+ "name": "geoPrimaryStateCode",
376
+ "type": "string",
377
+ "description": "Malaysian state / federal-territory code of the primary home anchor, e.g. PNG, KUL, JHR (summary instance only)."
378
+ },
379
+ {
380
+ "name": "geoAddressMatchScore",
381
+ "type": "number",
382
+ "unit": "score",
383
+ "range": [0, 1],
384
+ "description": "Agreement between the inferred home anchor and the applicant's registered residential address. 1 = same premises, 0 = different state (summary instance only)."
385
+ }
386
+ ]
294
387
  }
295
388
  ]
296
389
  }
package/dist/index.cjs CHANGED
@@ -10197,6 +10197,99 @@ var adapter_categories_default = {
10197
10197
  description: "Cash Conversion Cycle (DSO + days-inventory-outstanding \u2212 DPO). Working-capital efficiency; negative values (collect before paying suppliers) are strongest, very high values indicate cash tied up in operations."
10198
10198
  }
10199
10199
  ]
10200
+ },
10201
+ {
10202
+ id: "geolocation",
10203
+ displayName: "Geolocation",
10204
+ description: "Hourly-granularity movement track plus derived mobility signals for an applicant, sourced from any location-capable provider (telco network location, mobile-SDK GPS, GIS / address-verification services). Two instance kinds share this category: point instances (instanceKey 'pt:<ISO-hour>') carry one observed position per hourly bucket, mirroring the bank-statement multi-instance pattern; a single summary instance (instanceKey 'summary') carries adapter-derived behaviour signals \u2014 most importantly work-pattern regularity (sustained weekday dwell at a stable work anchor corroborates income reliability), residential stability, vacation windows, and dwell in operator-flagged hotspot zones. Vendor-agnostic: the source classifies or the adapter infers place labels; no provider-specific semantics leak into the field set. Raw coordinates are sensitive personal data \u2014 product-plane persistence is gated on PDPA consent + CRA Act 710 s25 retention review.",
10205
+ canonicalTable: "ihs_alt_data_geolocation",
10206
+ fields: [
10207
+ {
10208
+ name: "geoLatitude",
10209
+ type: "number",
10210
+ unit: "deg",
10211
+ range: [-90, 90],
10212
+ description: "Observed latitude for this hourly bucket (point instances only)."
10213
+ },
10214
+ {
10215
+ name: "geoLongitude",
10216
+ type: "number",
10217
+ unit: "deg",
10218
+ range: [-180, 180],
10219
+ description: "Observed longitude for this hourly bucket (point instances only)."
10220
+ },
10221
+ {
10222
+ name: "geoAccuracyM",
10223
+ type: "number",
10224
+ unit: "meters",
10225
+ range: [0, 1e5],
10226
+ description: "Source-reported horizontal accuracy radius of the observation. Cell-tower fixes are typically hundreds of meters; GPS fixes tens."
10227
+ },
10228
+ {
10229
+ name: "geoBucket",
10230
+ type: "string",
10231
+ description: "ISO-8601 hour bucket of the observation, e.g. '2026-06-01T08'. Redundant with the instance key (pt:<bucket>) so consumers can query without parsing keys."
10232
+ },
10233
+ {
10234
+ name: "geoPlaceLabel",
10235
+ type: "string",
10236
+ description: "Classified place for the bucket: home | work | commute | leisure | travel | hotspot | other. Classified by the source or inferred by the adapter from anchor dwell."
10237
+ },
10238
+ {
10239
+ name: "geoWorkAttendanceRatio30d",
10240
+ type: "number",
10241
+ unit: "ratio",
10242
+ range: [0, 1],
10243
+ description: "Fraction of the last 30 weekdays with >= 6 hours of dwell at the inferred work anchor. The income-reliability headline: regular full-time work patterns corroborate declared employment income (summary instance only)."
10244
+ },
10245
+ {
10246
+ name: "geoWorkDailyHoursAvg30d",
10247
+ type: "number",
10248
+ unit: "hours",
10249
+ range: [0, 24],
10250
+ description: "Mean daily hours of work-anchor dwell across the last 30 weekdays (summary instance only)."
10251
+ },
10252
+ {
10253
+ name: "geoLocationStabilityScore",
10254
+ type: "number",
10255
+ unit: "score",
10256
+ range: [0, 1],
10257
+ description: "Residential stability: share of nights spent at the primary home anchor over the observation window. 1 = every night at home (summary instance only)."
10258
+ },
10259
+ {
10260
+ name: "geoCommuteRegularityRatio",
10261
+ type: "number",
10262
+ unit: "ratio",
10263
+ range: [0, 1],
10264
+ description: "Consistency of the weekday home->work->home rhythm: fraction of weekdays matching the dominant commute pattern within an hour's tolerance (summary instance only)."
10265
+ },
10266
+ {
10267
+ name: "geoVacationDays90d",
10268
+ type: "number",
10269
+ unit: "days",
10270
+ range: [0, 90],
10271
+ description: "Days in the last 90 spent fully away from both home and work anchors (contiguous travel windows; summary instance only)."
10272
+ },
10273
+ {
10274
+ name: "geoHotspotDwellRatio",
10275
+ type: "number",
10276
+ unit: "ratio",
10277
+ range: [0, 1],
10278
+ description: "Share of observed buckets spent inside operator-flagged hotspot zones (known fraud / illicit-activity locations supplied to the adapter). Non-zero values warrant review, not automatic decline (summary instance only)."
10279
+ },
10280
+ {
10281
+ name: "geoPrimaryStateCode",
10282
+ type: "string",
10283
+ description: "Malaysian state / federal-territory code of the primary home anchor, e.g. PNG, KUL, JHR (summary instance only)."
10284
+ },
10285
+ {
10286
+ name: "geoAddressMatchScore",
10287
+ type: "number",
10288
+ unit: "score",
10289
+ range: [0, 1],
10290
+ description: "Agreement between the inferred home anchor and the applicant's registered residential address. 1 = same premises, 0 = different state (summary instance only)."
10291
+ }
10292
+ ]
10200
10293
  }
10201
10294
  ]
10202
10295
  };