@mongrov/analytics 0.7.0 → 0.8.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.
- package/UPGRADING.md +86 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/migrations.d.ts.map +1 -1
- package/dist/core/migrations.js +39 -0
- package/dist/core/migrations.js.map +1 -1
- package/dist/core/sampling.d.ts +70 -0
- package/dist/core/sampling.d.ts.map +1 -0
- package/dist/core/sampling.js +107 -0
- package/dist/core/sampling.js.map +1 -0
- package/dist/core/schemas.d.ts.map +1 -1
- package/dist/core/schemas.js +6 -2
- package/dist/core/schemas.js.map +1 -1
- package/dist/rules/validator.d.ts.map +1 -1
- package/dist/rules/validator.js +35 -2
- package/dist/rules/validator.js.map +1 -1
- package/dist/sync/factory.d.ts +29 -4
- package/dist/sync/factory.d.ts.map +1 -1
- package/dist/sync/factory.js +37 -31
- package/dist/sync/factory.js.map +1 -1
- package/dist/sync/mapper/firmware.d.ts +3 -12
- package/dist/sync/mapper/firmware.d.ts.map +1 -1
- package/dist/sync/mapper/firmware.js +2 -8
- package/dist/sync/mapper/firmware.js.map +1 -1
- package/dist/sync/mapper/ring-config.d.ts +76 -28
- package/dist/sync/mapper/ring-config.d.ts.map +1 -1
- package/dist/sync/mapper/ring-config.js +118 -35
- package/dist/sync/mapper/ring-config.js.map +1 -1
- package/dist/sync/mapper/schema.d.ts +318 -60
- package/dist/sync/mapper/schema.d.ts.map +1 -1
- package/dist/sync/mapper/schema.js +40 -8
- package/dist/sync/mapper/schema.js.map +1 -1
- package/dist/sync/mapper/types.d.ts +52 -19
- package/dist/sync/mapper/types.d.ts.map +1 -1
- package/dist/sync/pending_closes.js +2 -2
- package/dist/sync/pending_closes.js.map +1 -1
- package/dist/sync/pusher.js +2 -2
- package/dist/sync/pusher.js.map +1 -1
- package/package.json +1 -1
package/dist/sync/factory.js
CHANGED
|
@@ -43,7 +43,6 @@ const configSchema = z.object({
|
|
|
43
43
|
tables: z.array(z.string().min(1)).min(1),
|
|
44
44
|
columnOrder: z.record(z.string(), z.array(z.string()).readonly()),
|
|
45
45
|
prefetchPolicy: prefetchPolicySchema,
|
|
46
|
-
hasRingConfigTranslator: z.boolean(),
|
|
47
46
|
flush: z.object({
|
|
48
47
|
maxRows: z.number().int().positive().optional(),
|
|
49
48
|
maxAgeMs: z.number().int().positive().optional(),
|
|
@@ -58,9 +57,6 @@ const configSchema = z.object({
|
|
|
58
57
|
requiresWifi: z.boolean().optional(),
|
|
59
58
|
taskName: z.string().optional(),
|
|
60
59
|
}).optional(),
|
|
61
|
-
}).refine(cfg => !cfg.tables.includes('device_config') || cfg.hasRingConfigTranslator, {
|
|
62
|
-
message: 'ringConfigTranslator is required when `tables` includes \'device_config\'',
|
|
63
|
-
path: ['ringConfigTranslator'],
|
|
64
60
|
});
|
|
65
61
|
/**
|
|
66
62
|
* Assemble a fully wired `SyncManager`. Throws `z.ZodError` if the config is
|
|
@@ -71,7 +67,6 @@ export function createSyncManager(config) {
|
|
|
71
67
|
tables: config.tables,
|
|
72
68
|
columnOrder: config.columnOrder,
|
|
73
69
|
prefetchPolicy: config.prefetchPolicy,
|
|
74
|
-
hasRingConfigTranslator: config.ringConfigTranslator !== undefined,
|
|
75
70
|
flush: config.flush,
|
|
76
71
|
overflow: config.overflow,
|
|
77
72
|
scheduler: config.scheduler,
|
|
@@ -313,7 +308,6 @@ export function createSyncManager(config) {
|
|
|
313
308
|
tables: config.tables,
|
|
314
309
|
engine: engineAsHybrid,
|
|
315
310
|
attachCtx: config.ctx,
|
|
316
|
-
translator: config.ringConfigTranslator,
|
|
317
311
|
pendingClosesStore,
|
|
318
312
|
});
|
|
319
313
|
return {
|
|
@@ -353,30 +347,44 @@ export function createSyncManager(config) {
|
|
|
353
347
|
* `.has(dataType)` — but hydrating the row keeps the map future-friendly
|
|
354
348
|
* for logging / diagnostics without a second query.
|
|
355
349
|
*/
|
|
350
|
+
/**
|
|
351
|
+
* Open (`valid_to IS NULL`) device_config rows for one device.
|
|
352
|
+
*
|
|
353
|
+
* Fully-qualified `memory.main.device_config` so this resolves against the
|
|
354
|
+
* local catalog regardless of the active `USE <iceberg>.default` that
|
|
355
|
+
* `attach()` issues — a 2-part `main.device_config` would resolve against
|
|
356
|
+
* the current (Iceberg) catalog post-attach and miss.
|
|
357
|
+
*
|
|
358
|
+
* Exported so a test can execute it against the real DDL. It is
|
|
359
|
+
* hand-written SQL naming columns explicitly, which means a schema change
|
|
360
|
+
* can silently desync it: the 0.8.0 `data_type` -> `metric` rename did
|
|
361
|
+
* exactly that, and every unit test mocked the response so nothing caught
|
|
362
|
+
* it. `__tests__/prior-configs-sql.integration.test.ts` now runs it against
|
|
363
|
+
* a real table built from LOCAL_SCHEMAS.
|
|
364
|
+
*/
|
|
365
|
+
export const ACTIVE_PRIOR_CONFIGS_SQL = `SELECT device_id, brand, family_id, user_id, metric, interval_minutes, `
|
|
366
|
+
+ `start_time, end_time, weeks, valid_from, valid_to\n`
|
|
367
|
+
+ ` FROM memory.main.device_config\n`
|
|
368
|
+
+ ` WHERE device_id = $device_id\n`
|
|
369
|
+
+ ` AND family_id = $family_id\n`
|
|
370
|
+
+ ` AND user_id = $user_id\n`
|
|
371
|
+
+ ` AND valid_to IS NULL`;
|
|
356
372
|
async function fetchActivePriorConfigs(engine, ctx) {
|
|
357
|
-
//
|
|
358
|
-
|
|
359
|
-
// that `attach()` issues. A 2-part `main.device_config` would resolve
|
|
360
|
-
// against the current (Iceberg) catalog post-attach and miss.
|
|
361
|
-
const rows = await engine.execute(`SELECT device_id, brand, family_id, user_id, data_type, interval_minutes, start_time, end_time, weeks, valid_from, valid_to
|
|
362
|
-
FROM memory.main.device_config
|
|
363
|
-
WHERE device_id = $device_id
|
|
364
|
-
AND family_id = $family_id
|
|
365
|
-
AND user_id = $user_id
|
|
366
|
-
AND valid_to IS NULL`, {
|
|
373
|
+
// See ACTIVE_PRIOR_CONFIGS_SQL.
|
|
374
|
+
const rows = await engine.execute(ACTIVE_PRIOR_CONFIGS_SQL, {
|
|
367
375
|
device_id: ctx.deviceId,
|
|
368
376
|
family_id: ctx.familyId,
|
|
369
377
|
user_id: ctx.userId,
|
|
370
378
|
});
|
|
371
379
|
const map = new Map();
|
|
372
380
|
for (const r of rows) {
|
|
373
|
-
const
|
|
374
|
-
map.set(
|
|
381
|
+
const metric = String(r.metric ?? '');
|
|
382
|
+
map.set(metric, {
|
|
375
383
|
brand: String(r.brand ?? ''),
|
|
376
384
|
family_id: String(r.family_id ?? ''),
|
|
377
385
|
user_id: String(r.user_id ?? ''),
|
|
378
386
|
device_id: String(r.device_id ?? ''),
|
|
379
|
-
|
|
387
|
+
metric,
|
|
380
388
|
interval_minutes: Number(r.interval_minutes),
|
|
381
389
|
start_time: r.start_time == null ? null : String(r.start_time),
|
|
382
390
|
end_time: r.end_time == null ? null : String(r.end_time),
|
|
@@ -388,8 +396,10 @@ async function fetchActivePriorConfigs(engine, ctx) {
|
|
|
388
396
|
return map;
|
|
389
397
|
}
|
|
390
398
|
function createSensorSink(deps) {
|
|
391
|
-
const { buffer, flusher, triggers, tables, engine, attachCtx,
|
|
392
|
-
|
|
399
|
+
const { buffer, flusher, triggers, tables, engine, attachCtx, pendingClosesStore } = deps;
|
|
400
|
+
// Gated on subscription alone now — the mapper owns the translation, so
|
|
401
|
+
// there is no consumer wiring left that could be missing.
|
|
402
|
+
const handlesConfig = tables.includes('device_config');
|
|
393
403
|
return {
|
|
394
404
|
push: async (batch) => {
|
|
395
405
|
await buffer.push(batch);
|
|
@@ -398,17 +408,13 @@ function createSensorSink(deps) {
|
|
|
398
408
|
pushFirmware: async (fw, ctx) => {
|
|
399
409
|
// 1) Pre-fetch open configs for this device so the mapper can decide
|
|
400
410
|
// which metrics need SCD-2 closes. Skipped when we're not
|
|
401
|
-
// subscribed to device_config
|
|
411
|
+
// subscribed to device_config.
|
|
402
412
|
const activePriorConfigs = handlesConfig
|
|
403
413
|
? await fetchActivePriorConfigs(engine, ctx)
|
|
404
414
|
: new Map();
|
|
405
|
-
// 2) Map firmware → mapped batch. The mapper
|
|
406
|
-
//
|
|
407
|
-
|
|
408
|
-
const mapped = mapFirmwareExport(fw, ctx, {
|
|
409
|
-
activePriorConfigs,
|
|
410
|
-
translator,
|
|
411
|
-
});
|
|
415
|
+
// 2) Map firmware → mapped batch. The mapper owns the
|
|
416
|
+
// dataType → metric translation; no consumer translator needed.
|
|
417
|
+
const mapped = mapFirmwareExport(fw, ctx, { activePriorConfigs });
|
|
412
418
|
// 3) SCD-2 close handling. Enqueue-before-UPDATE keeps the local
|
|
413
419
|
// UPDATE + remote UPDATE replay-safe under crash: both are
|
|
414
420
|
// idempotent via the `valid_to IS NULL` guard.
|
|
@@ -421,11 +427,11 @@ function createSensorSink(deps) {
|
|
|
421
427
|
await engine.execute(`UPDATE memory.main.device_config
|
|
422
428
|
SET valid_to = $valid_to
|
|
423
429
|
WHERE device_id = $device_id
|
|
424
|
-
AND
|
|
430
|
+
AND metric = $data_type
|
|
425
431
|
AND valid_to IS NULL`, {
|
|
426
432
|
valid_to: close.valid_to.toISOString(),
|
|
427
433
|
device_id: close.device_id,
|
|
428
|
-
|
|
434
|
+
metric: close.metric,
|
|
429
435
|
});
|
|
430
436
|
}
|
|
431
437
|
}
|
package/dist/sync/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/sync/factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/sync/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,23 +14,14 @@
|
|
|
14
14
|
* shape contract.
|
|
15
15
|
*/
|
|
16
16
|
import { type RingConfigClose } from './ring-config';
|
|
17
|
-
import type { DeviceConfigRow, FirmwareExport, MappedBatch, MapperContext
|
|
17
|
+
import type { DeviceConfigRow, FirmwareExport, MappedBatch, MapperContext } from './types';
|
|
18
18
|
export interface MapFirmwareOptions {
|
|
19
19
|
/** Override for deterministic tests. Defaults to `new Date()`. */
|
|
20
20
|
now?: Date;
|
|
21
21
|
/**
|
|
22
|
-
* SCD-2 prior-config map keyed by
|
|
23
|
-
* `mapRingConfig`. Required whenever `fw.ring` is non-empty; the mapper
|
|
24
|
-
* skips ring-config translation entirely when this is absent and `fw.ring`
|
|
25
|
-
* has no windows.
|
|
22
|
+
* SCD-2 prior-config map keyed by metric id — see `mapRingConfig`.
|
|
26
23
|
*/
|
|
27
|
-
activePriorConfigs?: ReadonlyMap<
|
|
28
|
-
/**
|
|
29
|
-
* Consumer-provided translation from firmware ring metrics to schema
|
|
30
|
-
* fields. Required if `fw.ring.automaticMonitoringData` has entries;
|
|
31
|
-
* skipped (empty inserts + closes) if absent.
|
|
32
|
-
*/
|
|
33
|
-
translator?: RingConfigTranslator;
|
|
24
|
+
activePriorConfigs?: ReadonlyMap<string, DeviceConfigRow>;
|
|
34
25
|
}
|
|
35
26
|
export interface FirmwareMappedBatch extends MappedBatch {
|
|
36
27
|
device_config_closes: RingConfigClose[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,aAAa,
|
|
1
|
+
{"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,GAAG,CAAC,EAAE,IAAI,CAAA;IACV;;OAEG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC1D;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,oBAAoB,EAAE,eAAe,EAAE,CAAA;CACxC;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE,kBAAuB,GAC5B,mBAAmB,CAsBrB"}
|
|
@@ -51,17 +51,11 @@ export function mapFirmwareExport(fw, ctx, opts = {}) {
|
|
|
51
51
|
* sub-mappers).
|
|
52
52
|
*/
|
|
53
53
|
function mapRingConfigIfPossible(fw, ctx, opts) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return { inserts: [], closes: [] };
|
|
57
|
-
}
|
|
58
|
-
if (!opts.translator) {
|
|
59
|
-
throw new Error('mapFirmwareExport: firmware ring.automaticMonitoringData has entries but no `translator` was provided in options');
|
|
60
|
-
}
|
|
54
|
+
// No consumer translator any more: the mapper reads the vendor struct
|
|
55
|
+
// directly and owns the dataType -> metric translation itself.
|
|
61
56
|
return mapRingConfig(fw.ring ?? { automaticMonitoringData: [] }, ctx, {
|
|
62
57
|
now: opts.now,
|
|
63
58
|
activePriorConfigs: opts.activePriorConfigs,
|
|
64
|
-
translator: opts.translator,
|
|
65
59
|
});
|
|
66
60
|
}
|
|
67
61
|
//# sourceMappingURL=firmware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAwB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAwB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAqB9C,MAAM,UAAU,iBAAiB,CAC/B,EAAkB,EAClB,GAAkB,EAClB,OAA2B,EAAE;IAE7B,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,wBAAwB,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAErD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC;QACpC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC;QACjD,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC;QACjC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,iBAAiB,IAAI,EAAE,EAAE,GAAG,CAAC;QAC5D,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gEAAgE;QAChE,kEAAkE;QAClE,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,CAAC;QACvD,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,oBAAoB,EAAE,MAAM,CAAC,MAAM;KACpC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,EAAkB,EAClB,GAAkB,EAClB,IAAwB;IAExB,sEAAsE;IACtE,+DAA+D;IAC/D,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;QACpE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;KAC5C,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,35 +1,85 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Ring config mapper (T-08).
|
|
2
|
+
* Ring config mapper (T-08, Sprint 5 T-09/T-10).
|
|
3
3
|
*
|
|
4
4
|
* Firmware `ring.automaticMonitoringData[]` describes which metrics the ring
|
|
5
|
-
* currently samples
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* currently samples and on what schedule. We store these as SCD-2-style rows
|
|
6
|
+
* in `device_config`, with `valid_from = now()` and `valid_to = null` on the
|
|
7
|
+
* new insert.
|
|
8
|
+
*
|
|
9
|
+
* ## The firmware boundary (principles 20 + 21)
|
|
10
|
+
*
|
|
11
|
+
* The vendor struct is `AutomaticMonitoring_J2301A` (JStyle J2301A SDK):
|
|
12
|
+
*
|
|
13
|
+
* ```c
|
|
14
|
+
* int mode;
|
|
15
|
+
* int startTime_Hour; int startTime_Minutes;
|
|
16
|
+
* int endTime_Hour; int endTime_Minutes;
|
|
17
|
+
* MyWeeks_J2301A weeks; // 7 booleans
|
|
18
|
+
* int intervalTime;
|
|
19
|
+
* int dataType; // 1 = heartRate, 2 = spo2, 3 = temperature, 4 = HRV
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Everything firmware-shaped is translated here and nothing crosses into
|
|
23
|
+
* the warehouse: `dataType` becomes our metric id, split hour/minute fields
|
|
24
|
+
* become `HH:MM` strings, and the seven-boolean `weeks` struct becomes a
|
|
25
|
+
* bitmask. Principle 21 is explicit that firmware enums must not reach the
|
|
26
|
+
* schema, so `device_config` stores `metric`, never `data_type`.
|
|
27
|
+
*
|
|
28
|
+
* Prior versions inverted this: the mapper's input type had already
|
|
29
|
+
* discarded `dataType`, so a consumer-supplied `RingConfigTranslator` had
|
|
30
|
+
* to invent the enum back from our own metric names — the schema ended up
|
|
31
|
+
* holding a firmware integer that the app, not the firmware, produced.
|
|
8
32
|
*
|
|
9
33
|
* Closing prior config (SCD-2 semantics):
|
|
10
34
|
* The mapper accepts an optional `activePriorConfigs` map keyed by
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
35
|
+
* metric. For every metric present in the new snapshot, if a prior config
|
|
36
|
+
* was open, it emits a `close` entry so the sink can `UPDATE ... SET
|
|
37
|
+
* valid_to = now()` before the INSERT lands. Metrics present in the prior
|
|
38
|
+
* map but absent from the new snapshot are left open — the ring is silent
|
|
39
|
+
* on them, not disabling them.
|
|
40
|
+
*/
|
|
41
|
+
import type { DeviceConfigRow, FirmwareRingConfig, FirmwareWeekdays, MapperContext } from './types';
|
|
42
|
+
/**
|
|
43
|
+
* Firmware `dataType` → our metric id (Sprint 5 T-09).
|
|
44
|
+
*
|
|
45
|
+
* Verbatim from the vendor header's own comment. Note this is a **1:1**
|
|
46
|
+
* map: `dataType = 2` is SpO₂ alone, and temperature is its own code 3.
|
|
47
|
+
* The Sprint 5 spec described 2 as "spo2 + temperature (shared schedule)"
|
|
48
|
+
* requiring a fan-out to two rows; the SDK does not agree, so there is
|
|
49
|
+
* nothing to fan out.
|
|
50
|
+
*
|
|
51
|
+
* (Whether firmware *slaves* the two schedules together in practice is a
|
|
52
|
+
* separate, still-open question — but it would not change this mapping,
|
|
53
|
+
* only mean the ring reports two windows with identical timings.)
|
|
54
|
+
*/
|
|
55
|
+
export declare const FIRMWARE_DATA_TYPE_TO_METRIC: Readonly<Record<number, string>>;
|
|
56
|
+
/** Reverse map, for diagnostics and for keying prior-config reads. */
|
|
57
|
+
export declare const METRIC_TO_FIRMWARE_DATA_TYPE: Readonly<Record<string, number>>;
|
|
58
|
+
/**
|
|
59
|
+
* Translate a firmware `dataType` to the metric(s) it schedules.
|
|
60
|
+
*
|
|
61
|
+
* Returns an array for forward-compatibility — if a future firmware
|
|
62
|
+
* revision genuinely does share one code across metrics, this signature
|
|
63
|
+
* absorbs it without a breaking change.
|
|
64
|
+
*
|
|
65
|
+
* @throws on an unknown code, with the raw value in the message. Silently
|
|
66
|
+
* dropping an unrecognised code would mean a metric the ring is actively
|
|
67
|
+
* sampling never appears in `device_config`, and every cadence-dependent
|
|
68
|
+
* consumer would fall back to the `metric_metadata` default without
|
|
69
|
+
* anyone noticing.
|
|
70
|
+
*/
|
|
71
|
+
export declare function firmwareDataTypeToMetrics(dataType: number): string[];
|
|
72
|
+
/**
|
|
73
|
+
* Seven booleans → a 7-bit mask for `device_config.weeks`.
|
|
74
|
+
* Bit 0 = Sunday … bit 6 = Saturday. All-days is `0x7F`.
|
|
28
75
|
*/
|
|
29
|
-
|
|
76
|
+
export declare function weekdaysToBitmask(weeks: FirmwareWeekdays | undefined): number | null;
|
|
77
|
+
/** `HH:MM`, zero-padded. Null when the firmware supplied out-of-range values. */
|
|
78
|
+
export declare function formatClockTime(hour: number, minutes: number): string | null;
|
|
30
79
|
export interface RingConfigClose {
|
|
31
80
|
device_id: string;
|
|
32
|
-
|
|
81
|
+
/** Our metric id — matches `device_config.metric`. */
|
|
82
|
+
metric: string;
|
|
33
83
|
valid_to: Date;
|
|
34
84
|
}
|
|
35
85
|
export interface MapRingConfigResult {
|
|
@@ -38,10 +88,8 @@ export interface MapRingConfigResult {
|
|
|
38
88
|
}
|
|
39
89
|
export interface MapRingConfigOptions {
|
|
40
90
|
now?: Date;
|
|
41
|
-
/** Prior open configs for this device, keyed by
|
|
42
|
-
activePriorConfigs?: ReadonlyMap<
|
|
43
|
-
/** Required — consumer-provided translation from firmware to schema. */
|
|
44
|
-
translator: RingConfigTranslator;
|
|
91
|
+
/** Prior open configs for this device, keyed by metric id. */
|
|
92
|
+
activePriorConfigs?: ReadonlyMap<string, DeviceConfigRow>;
|
|
45
93
|
}
|
|
46
|
-
export declare function mapRingConfig(fw: FirmwareRingConfig, ctx: MapperContext, opts
|
|
94
|
+
export declare function mapRingConfig(fw: FirmwareRingConfig, ctx: MapperContext, opts?: MapRingConfigOptions): MapRingConfigResult;
|
|
47
95
|
//# sourceMappingURL=ring-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-config.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ring-config.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxE,CAAA;AAEF,sEAAsE;AACtE,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIzE,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAcpE;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAOpF;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5E;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC1D;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE,oBAAyB,GAC9B,mBAAmB,CAiBrB"}
|
|
@@ -1,59 +1,142 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Ring config mapper (T-08).
|
|
2
|
+
* Ring config mapper (T-08, Sprint 5 T-09/T-10).
|
|
3
3
|
*
|
|
4
4
|
* Firmware `ring.automaticMonitoringData[]` describes which metrics the ring
|
|
5
|
-
* currently samples
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* currently samples and on what schedule. We store these as SCD-2-style rows
|
|
6
|
+
* in `device_config`, with `valid_from = now()` and `valid_to = null` on the
|
|
7
|
+
* new insert.
|
|
8
|
+
*
|
|
9
|
+
* ## The firmware boundary (principles 20 + 21)
|
|
10
|
+
*
|
|
11
|
+
* The vendor struct is `AutomaticMonitoring_J2301A` (JStyle J2301A SDK):
|
|
12
|
+
*
|
|
13
|
+
* ```c
|
|
14
|
+
* int mode;
|
|
15
|
+
* int startTime_Hour; int startTime_Minutes;
|
|
16
|
+
* int endTime_Hour; int endTime_Minutes;
|
|
17
|
+
* MyWeeks_J2301A weeks; // 7 booleans
|
|
18
|
+
* int intervalTime;
|
|
19
|
+
* int dataType; // 1 = heartRate, 2 = spo2, 3 = temperature, 4 = HRV
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Everything firmware-shaped is translated here and nothing crosses into
|
|
23
|
+
* the warehouse: `dataType` becomes our metric id, split hour/minute fields
|
|
24
|
+
* become `HH:MM` strings, and the seven-boolean `weeks` struct becomes a
|
|
25
|
+
* bitmask. Principle 21 is explicit that firmware enums must not reach the
|
|
26
|
+
* schema, so `device_config` stores `metric`, never `data_type`.
|
|
27
|
+
*
|
|
28
|
+
* Prior versions inverted this: the mapper's input type had already
|
|
29
|
+
* discarded `dataType`, so a consumer-supplied `RingConfigTranslator` had
|
|
30
|
+
* to invent the enum back from our own metric names — the schema ended up
|
|
31
|
+
* holding a firmware integer that the app, not the firmware, produced.
|
|
8
32
|
*
|
|
9
33
|
* Closing prior config (SCD-2 semantics):
|
|
10
34
|
* The mapper accepts an optional `activePriorConfigs` map keyed by
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* absent from the new firmware are left open (the ring is silent on them,
|
|
17
|
-
* not disabling them).
|
|
18
|
-
*
|
|
19
|
-
* Translation:
|
|
20
|
-
* The mapper cannot invent `data_type` integers or `start_time`/`end_time`
|
|
21
|
-
* strings on its own — those are consumer-specific enumerations. Callers
|
|
22
|
-
* MUST pass a `RingConfigTranslator` in `opts` (see `mapper/types.ts`).
|
|
23
|
-
* Without a translator the mapper cannot produce a schema-shaped row, so
|
|
24
|
-
* the option is required — TypeScript enforces this at every call site.
|
|
25
|
-
*
|
|
26
|
-
* The mapper stays pure: no engine access, no clock reads beyond the injected
|
|
27
|
-
* `now` (defaults to `new Date()` for production).
|
|
35
|
+
* metric. For every metric present in the new snapshot, if a prior config
|
|
36
|
+
* was open, it emits a `close` entry so the sink can `UPDATE ... SET
|
|
37
|
+
* valid_to = now()` before the INSERT lands. Metrics present in the prior
|
|
38
|
+
* map but absent from the new snapshot are left open — the ring is silent
|
|
39
|
+
* on them, not disabling them.
|
|
28
40
|
*/
|
|
29
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Firmware `dataType` → our metric id (Sprint 5 T-09).
|
|
43
|
+
*
|
|
44
|
+
* Verbatim from the vendor header's own comment. Note this is a **1:1**
|
|
45
|
+
* map: `dataType = 2` is SpO₂ alone, and temperature is its own code 3.
|
|
46
|
+
* The Sprint 5 spec described 2 as "spo2 + temperature (shared schedule)"
|
|
47
|
+
* requiring a fan-out to two rows; the SDK does not agree, so there is
|
|
48
|
+
* nothing to fan out.
|
|
49
|
+
*
|
|
50
|
+
* (Whether firmware *slaves* the two schedules together in practice is a
|
|
51
|
+
* separate, still-open question — but it would not change this mapping,
|
|
52
|
+
* only mean the ring reports two windows with identical timings.)
|
|
53
|
+
*/
|
|
54
|
+
export const FIRMWARE_DATA_TYPE_TO_METRIC = Object.freeze({
|
|
55
|
+
1: 'heart_rate',
|
|
56
|
+
2: 'spo2',
|
|
57
|
+
3: 'temperature',
|
|
58
|
+
4: 'hrv',
|
|
59
|
+
});
|
|
60
|
+
/** Reverse map, for diagnostics and for keying prior-config reads. */
|
|
61
|
+
export const METRIC_TO_FIRMWARE_DATA_TYPE = Object.freeze(Object.fromEntries(Object.entries(FIRMWARE_DATA_TYPE_TO_METRIC).map(([dt, m]) => [m, Number(dt)])));
|
|
62
|
+
/**
|
|
63
|
+
* Translate a firmware `dataType` to the metric(s) it schedules.
|
|
64
|
+
*
|
|
65
|
+
* Returns an array for forward-compatibility — if a future firmware
|
|
66
|
+
* revision genuinely does share one code across metrics, this signature
|
|
67
|
+
* absorbs it without a breaking change.
|
|
68
|
+
*
|
|
69
|
+
* @throws on an unknown code, with the raw value in the message. Silently
|
|
70
|
+
* dropping an unrecognised code would mean a metric the ring is actively
|
|
71
|
+
* sampling never appears in `device_config`, and every cadence-dependent
|
|
72
|
+
* consumer would fall back to the `metric_metadata` default without
|
|
73
|
+
* anyone noticing.
|
|
74
|
+
*/
|
|
75
|
+
export function firmwareDataTypeToMetrics(dataType) {
|
|
76
|
+
const metric = FIRMWARE_DATA_TYPE_TO_METRIC[dataType];
|
|
77
|
+
if (metric === undefined) {
|
|
78
|
+
const known = Object.entries(FIRMWARE_DATA_TYPE_TO_METRIC)
|
|
79
|
+
.map(([dt, m]) => `${dt}=${m}`)
|
|
80
|
+
.join(', ');
|
|
81
|
+
throw new Error(`mapRingConfig: unknown firmware dataType ${dataType}. `
|
|
82
|
+
+ `Known values: ${known}. A new value means the ring firmware added a `
|
|
83
|
+
+ `monitored metric — add it to FIRMWARE_DATA_TYPE_TO_METRIC and to `
|
|
84
|
+
+ `METRIC_METADATA rather than dropping it.`);
|
|
85
|
+
}
|
|
86
|
+
return [metric];
|
|
87
|
+
}
|
|
88
|
+
/** Vendor weekday order, LSB = Sunday. */
|
|
89
|
+
const WEEKDAY_ORDER = [
|
|
90
|
+
'sunday', 'monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
|
|
91
|
+
];
|
|
92
|
+
/**
|
|
93
|
+
* Seven booleans → a 7-bit mask for `device_config.weeks`.
|
|
94
|
+
* Bit 0 = Sunday … bit 6 = Saturday. All-days is `0x7F`.
|
|
95
|
+
*/
|
|
96
|
+
export function weekdaysToBitmask(weeks) {
|
|
97
|
+
if (!weeks)
|
|
98
|
+
return null;
|
|
99
|
+
let mask = 0;
|
|
100
|
+
WEEKDAY_ORDER.forEach((day, i) => {
|
|
101
|
+
if (weeks[day])
|
|
102
|
+
mask |= 1 << i;
|
|
103
|
+
});
|
|
104
|
+
return mask;
|
|
105
|
+
}
|
|
106
|
+
/** `HH:MM`, zero-padded. Null when the firmware supplied out-of-range values. */
|
|
107
|
+
export function formatClockTime(hour, minutes) {
|
|
108
|
+
if (!Number.isInteger(hour) || hour < 0 || hour > 23)
|
|
109
|
+
return null;
|
|
110
|
+
if (!Number.isInteger(minutes) || minutes < 0 || minutes > 59)
|
|
111
|
+
return null;
|
|
112
|
+
return `${String(hour).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;
|
|
113
|
+
}
|
|
114
|
+
export function mapRingConfig(fw, ctx, opts = {}) {
|
|
30
115
|
const now = opts.now ?? new Date();
|
|
31
116
|
const prior = opts.activePriorConfigs ?? new Map();
|
|
32
|
-
const translator = opts.translator;
|
|
33
117
|
const inserts = [];
|
|
34
118
|
const closes = [];
|
|
35
119
|
for (const window of fw.automaticMonitoringData ?? []) {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
120
|
+
for (const metric of firmwareDataTypeToMetrics(window.dataType)) {
|
|
121
|
+
inserts.push(toRow(window, ctx, now, metric));
|
|
122
|
+
if (prior.has(metric)) {
|
|
123
|
+
closes.push({ device_id: ctx.deviceId, metric, valid_to: now });
|
|
124
|
+
}
|
|
40
125
|
}
|
|
41
126
|
}
|
|
42
127
|
return { inserts, closes };
|
|
43
128
|
}
|
|
44
|
-
function toRow(window, ctx, now,
|
|
45
|
-
const fields = translator.windowToSchemaFields(window);
|
|
129
|
+
function toRow(window, ctx, now, metric) {
|
|
46
130
|
return {
|
|
47
|
-
// No `ts` — device_config's time axis is valid_from / valid_to (SCD-2).
|
|
48
131
|
brand: ctx.brand,
|
|
49
132
|
family_id: ctx.familyId,
|
|
50
133
|
user_id: ctx.userId,
|
|
51
134
|
device_id: ctx.deviceId,
|
|
52
|
-
|
|
53
|
-
interval_minutes: window.
|
|
54
|
-
start_time:
|
|
55
|
-
end_time:
|
|
56
|
-
weeks:
|
|
135
|
+
metric,
|
|
136
|
+
interval_minutes: window.intervalTime,
|
|
137
|
+
start_time: formatClockTime(window.startTime_Hour, window.startTime_Minutes),
|
|
138
|
+
end_time: formatClockTime(window.endTime_Hour, window.endTime_Minutes),
|
|
139
|
+
weeks: weekdaysToBitmask(window.weeks),
|
|
57
140
|
valid_from: now,
|
|
58
141
|
valid_to: null,
|
|
59
142
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-config.js","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ring-config.js","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"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"}
|