@camstack/addon-post-analysis 1.1.22 → 1.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/enrichment-engine/index.js +26 -14
- package/dist/enrichment-engine/index.mjs +26 -14
- package/dist/pipeline-analytics/index.js +210 -123
- package/dist/pipeline-analytics/index.mjs +210 -123
- package/package.json +1 -1
|
@@ -106,7 +106,10 @@ var EmbeddingDispatcher = class {
|
|
|
106
106
|
const detections = data.analysisResults ?? [];
|
|
107
107
|
const handle = data.frameHandle;
|
|
108
108
|
if (!handle) {
|
|
109
|
-
this.logger.debug("skip: no frameHandle on DetectionResult", {
|
|
109
|
+
this.logger.debug("skip: no frameHandle on DetectionResult", {
|
|
110
|
+
tags: { deviceId: Number(deviceId) },
|
|
111
|
+
meta: { deviceId }
|
|
112
|
+
});
|
|
110
113
|
return;
|
|
111
114
|
}
|
|
112
115
|
let decoded;
|
|
@@ -117,25 +120,34 @@ var EmbeddingDispatcher = class {
|
|
|
117
120
|
getRemoteFrame: this.getRemoteFrame
|
|
118
121
|
});
|
|
119
122
|
} catch (err) {
|
|
120
|
-
this.logger.debug("skip: resolveFrame threw", {
|
|
121
|
-
deviceId,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
this.logger.debug("skip: resolveFrame threw", {
|
|
124
|
+
tags: { deviceId: Number(deviceId) },
|
|
125
|
+
meta: {
|
|
126
|
+
deviceId,
|
|
127
|
+
shmId: handle.shmId,
|
|
128
|
+
error: String(err)
|
|
129
|
+
}
|
|
130
|
+
});
|
|
125
131
|
return;
|
|
126
132
|
}
|
|
127
133
|
if (!decoded) {
|
|
128
|
-
this.logger.debug("skip: frame recycled before resolve", {
|
|
129
|
-
deviceId,
|
|
130
|
-
|
|
131
|
-
|
|
134
|
+
this.logger.debug("skip: frame recycled before resolve", {
|
|
135
|
+
tags: { deviceId: Number(deviceId) },
|
|
136
|
+
meta: {
|
|
137
|
+
deviceId,
|
|
138
|
+
shmId: handle.shmId
|
|
139
|
+
}
|
|
140
|
+
});
|
|
132
141
|
return;
|
|
133
142
|
}
|
|
134
143
|
if (decoded.format !== "rgb") {
|
|
135
|
-
this.logger.debug("skip: resolved frame is not RGB", {
|
|
136
|
-
deviceId,
|
|
137
|
-
|
|
138
|
-
|
|
144
|
+
this.logger.debug("skip: resolved frame is not RGB", {
|
|
145
|
+
tags: { deviceId: Number(deviceId) },
|
|
146
|
+
meta: {
|
|
147
|
+
deviceId,
|
|
148
|
+
format: decoded.format
|
|
149
|
+
}
|
|
150
|
+
});
|
|
139
151
|
return;
|
|
140
152
|
}
|
|
141
153
|
const frameData = Buffer.isBuffer(decoded.data) ? decoded.data : Buffer.from(decoded.data);
|
|
@@ -102,7 +102,10 @@ var EmbeddingDispatcher = class {
|
|
|
102
102
|
const detections = data.analysisResults ?? [];
|
|
103
103
|
const handle = data.frameHandle;
|
|
104
104
|
if (!handle) {
|
|
105
|
-
this.logger.debug("skip: no frameHandle on DetectionResult", {
|
|
105
|
+
this.logger.debug("skip: no frameHandle on DetectionResult", {
|
|
106
|
+
tags: { deviceId: Number(deviceId) },
|
|
107
|
+
meta: { deviceId }
|
|
108
|
+
});
|
|
106
109
|
return;
|
|
107
110
|
}
|
|
108
111
|
let decoded;
|
|
@@ -113,25 +116,34 @@ var EmbeddingDispatcher = class {
|
|
|
113
116
|
getRemoteFrame: this.getRemoteFrame
|
|
114
117
|
});
|
|
115
118
|
} catch (err) {
|
|
116
|
-
this.logger.debug("skip: resolveFrame threw", {
|
|
117
|
-
deviceId,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
this.logger.debug("skip: resolveFrame threw", {
|
|
120
|
+
tags: { deviceId: Number(deviceId) },
|
|
121
|
+
meta: {
|
|
122
|
+
deviceId,
|
|
123
|
+
shmId: handle.shmId,
|
|
124
|
+
error: String(err)
|
|
125
|
+
}
|
|
126
|
+
});
|
|
121
127
|
return;
|
|
122
128
|
}
|
|
123
129
|
if (!decoded) {
|
|
124
|
-
this.logger.debug("skip: frame recycled before resolve", {
|
|
125
|
-
deviceId,
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
this.logger.debug("skip: frame recycled before resolve", {
|
|
131
|
+
tags: { deviceId: Number(deviceId) },
|
|
132
|
+
meta: {
|
|
133
|
+
deviceId,
|
|
134
|
+
shmId: handle.shmId
|
|
135
|
+
}
|
|
136
|
+
});
|
|
128
137
|
return;
|
|
129
138
|
}
|
|
130
139
|
if (decoded.format !== "rgb") {
|
|
131
|
-
this.logger.debug("skip: resolved frame is not RGB", {
|
|
132
|
-
deviceId,
|
|
133
|
-
|
|
134
|
-
|
|
140
|
+
this.logger.debug("skip: resolved frame is not RGB", {
|
|
141
|
+
tags: { deviceId: Number(deviceId) },
|
|
142
|
+
meta: {
|
|
143
|
+
deviceId,
|
|
144
|
+
format: decoded.format
|
|
145
|
+
}
|
|
146
|
+
});
|
|
135
147
|
return;
|
|
136
148
|
}
|
|
137
149
|
const frameData = Buffer.isBuffer(decoded.data) ? decoded.data : Buffer.from(decoded.data);
|
|
@@ -1717,10 +1717,13 @@ var TrackStore = class {
|
|
|
1717
1717
|
try {
|
|
1718
1718
|
await this.persistCompleted(record);
|
|
1719
1719
|
} catch (err) {
|
|
1720
|
-
this.logger.warn("persist completed track failed", {
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1720
|
+
this.logger.warn("persist completed track failed", {
|
|
1721
|
+
tags: { deviceId: t.deviceId },
|
|
1722
|
+
meta: {
|
|
1723
|
+
trackId,
|
|
1724
|
+
error: String(err)
|
|
1725
|
+
}
|
|
1726
|
+
});
|
|
1724
1727
|
}
|
|
1725
1728
|
this.active.delete(trackId);
|
|
1726
1729
|
expired.push(record);
|
|
@@ -1947,10 +1950,13 @@ var MediaStore = class {
|
|
|
1947
1950
|
});
|
|
1948
1951
|
return key;
|
|
1949
1952
|
} catch (err) {
|
|
1950
|
-
this.logger.warn("media put failed", {
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1953
|
+
this.logger.warn("media put failed", {
|
|
1954
|
+
tags: { deviceId: params.deviceId },
|
|
1955
|
+
meta: {
|
|
1956
|
+
key,
|
|
1957
|
+
error: String(err)
|
|
1958
|
+
}
|
|
1959
|
+
});
|
|
1954
1960
|
throw err;
|
|
1955
1961
|
}
|
|
1956
1962
|
}
|
|
@@ -2139,11 +2145,14 @@ var MediaStore = class {
|
|
|
2139
2145
|
relativePath: oldPath
|
|
2140
2146
|
});
|
|
2141
2147
|
} catch (err) {
|
|
2142
|
-
this.logger.warn("MediaStore.reown: old blob delete failed (best-effort)", {
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2148
|
+
this.logger.warn("MediaStore.reown: old blob delete failed (best-effort)", {
|
|
2149
|
+
tags: { deviceId },
|
|
2150
|
+
meta: {
|
|
2151
|
+
key,
|
|
2152
|
+
oldPath,
|
|
2153
|
+
error: String(err)
|
|
2154
|
+
}
|
|
2155
|
+
});
|
|
2147
2156
|
}
|
|
2148
2157
|
try {
|
|
2149
2158
|
await this.store.delete.mutate({
|
|
@@ -2151,10 +2160,13 @@ var MediaStore = class {
|
|
|
2151
2160
|
key
|
|
2152
2161
|
});
|
|
2153
2162
|
} catch (err) {
|
|
2154
|
-
this.logger.warn("MediaStore.reown: old index row delete failed (best-effort)", {
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2163
|
+
this.logger.warn("MediaStore.reown: old index row delete failed (best-effort)", {
|
|
2164
|
+
tags: { deviceId },
|
|
2165
|
+
meta: {
|
|
2166
|
+
key,
|
|
2167
|
+
error: String(err)
|
|
2168
|
+
}
|
|
2169
|
+
});
|
|
2158
2170
|
}
|
|
2159
2171
|
return newKey;
|
|
2160
2172
|
}
|
|
@@ -2355,10 +2367,13 @@ var EventStore = class {
|
|
|
2355
2367
|
}
|
|
2356
2368
|
});
|
|
2357
2369
|
} catch (err) {
|
|
2358
|
-
this.logger.warn("insertMotion failed", {
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2370
|
+
this.logger.warn("insertMotion failed", {
|
|
2371
|
+
tags: { deviceId: ev.deviceId },
|
|
2372
|
+
meta: {
|
|
2373
|
+
eventId: ev.id,
|
|
2374
|
+
error: String(err)
|
|
2375
|
+
}
|
|
2376
|
+
});
|
|
2362
2377
|
}
|
|
2363
2378
|
}
|
|
2364
2379
|
async insertObject(ev) {
|
|
@@ -2372,10 +2387,13 @@ var EventStore = class {
|
|
|
2372
2387
|
}
|
|
2373
2388
|
});
|
|
2374
2389
|
} catch (err) {
|
|
2375
|
-
this.logger.warn("insertObject failed", {
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2390
|
+
this.logger.warn("insertObject failed", {
|
|
2391
|
+
tags: { deviceId: ev.deviceId },
|
|
2392
|
+
meta: {
|
|
2393
|
+
eventId: ev.id,
|
|
2394
|
+
error: String(err)
|
|
2395
|
+
}
|
|
2396
|
+
});
|
|
2379
2397
|
}
|
|
2380
2398
|
}
|
|
2381
2399
|
async insertAudio(ev) {
|
|
@@ -2389,10 +2407,13 @@ var EventStore = class {
|
|
|
2389
2407
|
}
|
|
2390
2408
|
});
|
|
2391
2409
|
} catch (err) {
|
|
2392
|
-
this.logger.warn("insertAudio failed", {
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2410
|
+
this.logger.warn("insertAudio failed", {
|
|
2411
|
+
tags: { deviceId: ev.deviceId },
|
|
2412
|
+
meta: {
|
|
2413
|
+
eventId: ev.id,
|
|
2414
|
+
error: String(err)
|
|
2415
|
+
}
|
|
2416
|
+
});
|
|
2396
2417
|
}
|
|
2397
2418
|
}
|
|
2398
2419
|
buildFilter(q) {
|
|
@@ -2861,25 +2882,34 @@ var EventMediaDispatcher = class {
|
|
|
2861
2882
|
getRemoteFrame: this.deps.getRemoteFrame
|
|
2862
2883
|
});
|
|
2863
2884
|
} catch (err) {
|
|
2864
|
-
this.deps.logger.debug("event media: resolveFrame threw", {
|
|
2865
|
-
deviceId,
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2885
|
+
this.deps.logger.debug("event media: resolveFrame threw", {
|
|
2886
|
+
tags: { deviceId },
|
|
2887
|
+
meta: {
|
|
2888
|
+
deviceId,
|
|
2889
|
+
shmId: frameHandle.shmId,
|
|
2890
|
+
error: String(err)
|
|
2891
|
+
}
|
|
2892
|
+
});
|
|
2869
2893
|
return;
|
|
2870
2894
|
}
|
|
2871
2895
|
if (!decoded) {
|
|
2872
|
-
this.deps.logger.debug("event media: frame recycled before resolve", {
|
|
2873
|
-
deviceId,
|
|
2874
|
-
|
|
2875
|
-
|
|
2896
|
+
this.deps.logger.debug("event media: frame recycled before resolve", {
|
|
2897
|
+
tags: { deviceId },
|
|
2898
|
+
meta: {
|
|
2899
|
+
deviceId,
|
|
2900
|
+
shmId: frameHandle.shmId
|
|
2901
|
+
}
|
|
2902
|
+
});
|
|
2876
2903
|
return;
|
|
2877
2904
|
}
|
|
2878
2905
|
if (decoded.format !== "rgb") {
|
|
2879
|
-
this.deps.logger.debug("event media: resolved frame is not RGB", {
|
|
2880
|
-
deviceId,
|
|
2881
|
-
|
|
2882
|
-
|
|
2906
|
+
this.deps.logger.debug("event media: resolved frame is not RGB", {
|
|
2907
|
+
tags: { deviceId },
|
|
2908
|
+
meta: {
|
|
2909
|
+
deviceId,
|
|
2910
|
+
format: decoded.format
|
|
2911
|
+
}
|
|
2912
|
+
});
|
|
2883
2913
|
return;
|
|
2884
2914
|
}
|
|
2885
2915
|
const frameData = Buffer.isBuffer(decoded.data) ? decoded.data : Buffer.from(decoded.data);
|
|
@@ -2921,11 +2951,14 @@ var EventMediaDispatcher = class {
|
|
|
2921
2951
|
data: crop
|
|
2922
2952
|
});
|
|
2923
2953
|
} catch (err) {
|
|
2924
|
-
this.deps.logger.warn("event media: crop failed", {
|
|
2925
|
-
deviceId,
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2954
|
+
this.deps.logger.warn("event media: crop failed", {
|
|
2955
|
+
tags: { deviceId },
|
|
2956
|
+
meta: {
|
|
2957
|
+
deviceId,
|
|
2958
|
+
eventId: ev.eventId,
|
|
2959
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2960
|
+
}
|
|
2961
|
+
});
|
|
2929
2962
|
}
|
|
2930
2963
|
try {
|
|
2931
2964
|
const fullFrame = await drawBoxedFrame(frameData, fw, fh, [], { quality: MEDIA_QUALITY });
|
|
@@ -2938,11 +2971,14 @@ var EventMediaDispatcher = class {
|
|
|
2938
2971
|
data: fullFrame
|
|
2939
2972
|
});
|
|
2940
2973
|
} catch (err) {
|
|
2941
|
-
this.deps.logger.warn("event media: clear full frame failed", {
|
|
2942
|
-
deviceId,
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2974
|
+
this.deps.logger.warn("event media: clear full frame failed", {
|
|
2975
|
+
tags: { deviceId },
|
|
2976
|
+
meta: {
|
|
2977
|
+
deviceId,
|
|
2978
|
+
eventId: ev.eventId,
|
|
2979
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2980
|
+
}
|
|
2981
|
+
});
|
|
2946
2982
|
}
|
|
2947
2983
|
try {
|
|
2948
2984
|
const fullFrameBoxed = await drawBoxedFrame(frameData, fw, fh, [box], { quality: MEDIA_QUALITY });
|
|
@@ -2955,11 +2991,14 @@ var EventMediaDispatcher = class {
|
|
|
2955
2991
|
data: fullFrameBoxed
|
|
2956
2992
|
});
|
|
2957
2993
|
} catch (err) {
|
|
2958
|
-
this.deps.logger.warn("event media: boxed full frame failed", {
|
|
2959
|
-
deviceId,
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2994
|
+
this.deps.logger.warn("event media: boxed full frame failed", {
|
|
2995
|
+
tags: { deviceId },
|
|
2996
|
+
meta: {
|
|
2997
|
+
deviceId,
|
|
2998
|
+
eventId: ev.eventId,
|
|
2999
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3000
|
+
}
|
|
3001
|
+
});
|
|
2963
3002
|
}
|
|
2964
3003
|
if (ev.childCrops) for (const child of ev.childCrops) try {
|
|
2965
3004
|
const childRegion = squareSafeCropRegion(child.bbox, {
|
|
@@ -2989,11 +3028,14 @@ var EventMediaDispatcher = class {
|
|
|
2989
3028
|
data: childCropData
|
|
2990
3029
|
});
|
|
2991
3030
|
} catch (err) {
|
|
2992
|
-
this.deps.logger.warn(`event media: ${child.kind} failed`, {
|
|
2993
|
-
deviceId,
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
3031
|
+
this.deps.logger.warn(`event media: ${child.kind} failed`, {
|
|
3032
|
+
tags: { deviceId },
|
|
3033
|
+
meta: {
|
|
3034
|
+
deviceId,
|
|
3035
|
+
eventId: ev.eventId,
|
|
3036
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3037
|
+
}
|
|
3038
|
+
});
|
|
2997
3039
|
}
|
|
2998
3040
|
}
|
|
2999
3041
|
async writeTrackFrame(deviceId, frameData, fw, fh, tf) {
|
|
@@ -3012,11 +3054,14 @@ var EventMediaDispatcher = class {
|
|
|
3012
3054
|
data: boxed
|
|
3013
3055
|
});
|
|
3014
3056
|
} catch (err) {
|
|
3015
|
-
this.deps.logger.warn("event media: track frame failed", {
|
|
3016
|
-
deviceId,
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3057
|
+
this.deps.logger.warn("event media: track frame failed", {
|
|
3058
|
+
tags: { deviceId },
|
|
3059
|
+
meta: {
|
|
3060
|
+
deviceId,
|
|
3061
|
+
trackId: tf.trackId,
|
|
3062
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3063
|
+
}
|
|
3064
|
+
});
|
|
3020
3065
|
}
|
|
3021
3066
|
}
|
|
3022
3067
|
};
|
|
@@ -4228,10 +4273,13 @@ var FaceStore = class {
|
|
|
4228
4273
|
value: rest
|
|
4229
4274
|
});
|
|
4230
4275
|
} catch (err) {
|
|
4231
|
-
this.logger.warn("FaceStore.insert failed", {
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4276
|
+
this.logger.warn("FaceStore.insert failed", {
|
|
4277
|
+
tags: { deviceId: face.deviceId },
|
|
4278
|
+
meta: {
|
|
4279
|
+
faceId: id,
|
|
4280
|
+
error: String(err)
|
|
4281
|
+
}
|
|
4282
|
+
});
|
|
4235
4283
|
}
|
|
4236
4284
|
}
|
|
4237
4285
|
/**
|
|
@@ -4298,10 +4346,13 @@ var FaceStore = class {
|
|
|
4298
4346
|
});
|
|
4299
4347
|
deleted.push(id);
|
|
4300
4348
|
} catch (err) {
|
|
4301
|
-
this.logger.warn("FaceStore.prune delete failed", {
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4349
|
+
this.logger.warn("FaceStore.prune delete failed", {
|
|
4350
|
+
tags: { deviceId: input.deviceId },
|
|
4351
|
+
meta: {
|
|
4352
|
+
faceId: id,
|
|
4353
|
+
error: String(err)
|
|
4354
|
+
}
|
|
4355
|
+
});
|
|
4305
4356
|
}
|
|
4306
4357
|
return deleted;
|
|
4307
4358
|
}
|
|
@@ -4587,10 +4638,13 @@ var ObjectEmbeddingStore = class {
|
|
|
4587
4638
|
value: record
|
|
4588
4639
|
});
|
|
4589
4640
|
} catch (err) {
|
|
4590
|
-
this.logger.warn("ObjectEmbeddingStore.upsertIfBetter failed", {
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
|
|
4641
|
+
this.logger.warn("ObjectEmbeddingStore.upsertIfBetter failed", {
|
|
4642
|
+
tags: { deviceId: input.deviceId },
|
|
4643
|
+
meta: {
|
|
4644
|
+
trackId: input.trackId,
|
|
4645
|
+
error: String(err)
|
|
4646
|
+
}
|
|
4647
|
+
});
|
|
4594
4648
|
}
|
|
4595
4649
|
}
|
|
4596
4650
|
/**
|
|
@@ -4802,18 +4856,24 @@ var FaceRecognizer = class {
|
|
|
4802
4856
|
try {
|
|
4803
4857
|
await this.deps.trackStore.setLabel(c.trackId, name);
|
|
4804
4858
|
} catch (err) {
|
|
4805
|
-
this.deps.logger.warn("setLabel failed", {
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
|
|
4859
|
+
this.deps.logger.warn("setLabel failed", {
|
|
4860
|
+
tags: { deviceId: input.deviceId },
|
|
4861
|
+
meta: {
|
|
4862
|
+
trackId: c.trackId,
|
|
4863
|
+
error: String(err)
|
|
4864
|
+
}
|
|
4865
|
+
});
|
|
4809
4866
|
}
|
|
4810
4867
|
try {
|
|
4811
4868
|
await this.deps.eventStore.setLabelForTrack(c.trackId, name);
|
|
4812
4869
|
} catch (err) {
|
|
4813
|
-
this.deps.logger.warn("setLabelForTrack failed", {
|
|
4814
|
-
|
|
4815
|
-
|
|
4816
|
-
|
|
4870
|
+
this.deps.logger.warn("setLabelForTrack failed", {
|
|
4871
|
+
tags: { deviceId: input.deviceId },
|
|
4872
|
+
meta: {
|
|
4873
|
+
trackId: c.trackId,
|
|
4874
|
+
error: String(err)
|
|
4875
|
+
}
|
|
4876
|
+
});
|
|
4817
4877
|
}
|
|
4818
4878
|
}
|
|
4819
4879
|
}
|
|
@@ -4825,10 +4885,13 @@ var FaceRecognizer = class {
|
|
|
4825
4885
|
if (input.frameHandle !== void 0) try {
|
|
4826
4886
|
crop = await this.deps.captureCrop(input.frameHandle, cropBbox, input.frameWidth, input.frameHeight, input.cropPadding) ?? void 0;
|
|
4827
4887
|
} catch (err) {
|
|
4828
|
-
this.deps.logger.debug("FaceRecognizer crop capture failed", {
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4888
|
+
this.deps.logger.debug("FaceRecognizer crop capture failed", {
|
|
4889
|
+
tags: { deviceId: input.deviceId },
|
|
4890
|
+
meta: {
|
|
4891
|
+
trackId: c.trackId,
|
|
4892
|
+
error: String(err)
|
|
4893
|
+
}
|
|
4894
|
+
});
|
|
4832
4895
|
}
|
|
4833
4896
|
this.bestFace.set(c.trackId, {
|
|
4834
4897
|
score: c.confidence,
|
|
@@ -4884,10 +4947,13 @@ var FaceRecognizer = class {
|
|
|
4884
4947
|
data: held.crop
|
|
4885
4948
|
});
|
|
4886
4949
|
} catch (err) {
|
|
4887
|
-
this.deps.logger.warn("FaceRecognizer face crop put failed", {
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
|
|
4950
|
+
this.deps.logger.warn("FaceRecognizer face crop put failed", {
|
|
4951
|
+
tags: { deviceId },
|
|
4952
|
+
meta: {
|
|
4953
|
+
faceId,
|
|
4954
|
+
error: String(err)
|
|
4955
|
+
}
|
|
4956
|
+
});
|
|
4891
4957
|
}
|
|
4892
4958
|
try {
|
|
4893
4959
|
await this.deps.faceStore.insert({
|
|
@@ -4913,10 +4979,13 @@ var FaceRecognizer = class {
|
|
|
4913
4979
|
}
|
|
4914
4980
|
});
|
|
4915
4981
|
} catch (err) {
|
|
4916
|
-
this.deps.logger.warn("FaceRecognizer faceStore insert failed", {
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
4982
|
+
this.deps.logger.warn("FaceRecognizer faceStore insert failed", {
|
|
4983
|
+
tags: { deviceId },
|
|
4984
|
+
meta: {
|
|
4985
|
+
faceId,
|
|
4986
|
+
error: String(err)
|
|
4987
|
+
}
|
|
4988
|
+
});
|
|
4920
4989
|
}
|
|
4921
4990
|
}
|
|
4922
4991
|
};
|
|
@@ -4996,10 +5065,13 @@ var PlateStore = class {
|
|
|
4996
5065
|
value: rest
|
|
4997
5066
|
});
|
|
4998
5067
|
} catch (err) {
|
|
4999
|
-
this.logger.warn("PlateStore.insert failed", {
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5068
|
+
this.logger.warn("PlateStore.insert failed", {
|
|
5069
|
+
tags: { deviceId: plate.deviceId },
|
|
5070
|
+
meta: {
|
|
5071
|
+
plateId: id,
|
|
5072
|
+
error: String(err)
|
|
5073
|
+
}
|
|
5074
|
+
});
|
|
5003
5075
|
}
|
|
5004
5076
|
}
|
|
5005
5077
|
normalizeRow(r) {
|
|
@@ -5155,10 +5227,13 @@ var PlateRecognizer = class {
|
|
|
5155
5227
|
if (input.frameHandle !== void 0) try {
|
|
5156
5228
|
crop = await this.deps.captureCrop(input.frameHandle, c.plateBbox, input.frameWidth, input.frameHeight, input.cropPadding) ?? void 0;
|
|
5157
5229
|
} catch (err) {
|
|
5158
|
-
this.deps.logger.debug("PlateRecognizer crop capture failed", {
|
|
5159
|
-
|
|
5160
|
-
|
|
5161
|
-
|
|
5230
|
+
this.deps.logger.debug("PlateRecognizer crop capture failed", {
|
|
5231
|
+
tags: { deviceId: input.deviceId },
|
|
5232
|
+
meta: {
|
|
5233
|
+
trackId: c.trackId,
|
|
5234
|
+
error: String(err)
|
|
5235
|
+
}
|
|
5236
|
+
});
|
|
5162
5237
|
}
|
|
5163
5238
|
this.bestPlate.set(c.trackId, {
|
|
5164
5239
|
text: c.plateText,
|
|
@@ -5187,10 +5262,13 @@ var PlateRecognizer = class {
|
|
|
5187
5262
|
data: held.crop
|
|
5188
5263
|
});
|
|
5189
5264
|
} catch (err) {
|
|
5190
|
-
this.deps.logger.warn("PlateRecognizer plate crop put failed", {
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5265
|
+
this.deps.logger.warn("PlateRecognizer plate crop put failed", {
|
|
5266
|
+
tags: { deviceId },
|
|
5267
|
+
meta: {
|
|
5268
|
+
plateId,
|
|
5269
|
+
error: String(err)
|
|
5270
|
+
}
|
|
5271
|
+
});
|
|
5194
5272
|
}
|
|
5195
5273
|
try {
|
|
5196
5274
|
await this.deps.plateStore.insert({
|
|
@@ -5216,10 +5294,13 @@ var PlateRecognizer = class {
|
|
|
5216
5294
|
}
|
|
5217
5295
|
});
|
|
5218
5296
|
} catch (err) {
|
|
5219
|
-
this.deps.logger.warn("PlateRecognizer plateStore insert failed", {
|
|
5220
|
-
|
|
5221
|
-
|
|
5222
|
-
|
|
5297
|
+
this.deps.logger.warn("PlateRecognizer plateStore insert failed", {
|
|
5298
|
+
tags: { deviceId },
|
|
5299
|
+
meta: {
|
|
5300
|
+
plateId,
|
|
5301
|
+
error: String(err)
|
|
5302
|
+
}
|
|
5303
|
+
});
|
|
5223
5304
|
}
|
|
5224
5305
|
}
|
|
5225
5306
|
};
|
|
@@ -6530,7 +6611,10 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
|
|
|
6530
6611
|
} : void 0, { classificationMinScore: settings.classificationMinScore });
|
|
6531
6612
|
if (route.kind === "classification") {
|
|
6532
6613
|
if (!topClassification) {
|
|
6533
|
-
this.ctx.logger.warn("classifyAudioFrame returned classification but topClassification is null", {
|
|
6614
|
+
this.ctx.logger.warn("classifyAudioFrame returned classification but topClassification is null", {
|
|
6615
|
+
tags: { deviceId },
|
|
6616
|
+
meta: { deviceId }
|
|
6617
|
+
});
|
|
6534
6618
|
return;
|
|
6535
6619
|
}
|
|
6536
6620
|
const last = this.lastAudioInsertByDevice.get(deviceId);
|
|
@@ -7080,13 +7164,16 @@ var PipelineAnalyticsAddon = class extends require_dist.BaseAddon {
|
|
|
7080
7164
|
const { counts, ids } = await this.eventStore.pruneBefore(input);
|
|
7081
7165
|
if (ids.length > 0 && this.mediaStore) await this.mediaStore.deleteForEvents([...ids]);
|
|
7082
7166
|
const { motion, object, audio } = counts;
|
|
7083
|
-
if (motion + object + audio > 0) this.ctx.logger.info("analytics event eviction (floor)", {
|
|
7084
|
-
deviceId: input.deviceId,
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
|
|
7167
|
+
if (motion + object + audio > 0) this.ctx.logger.info("analytics event eviction (floor)", {
|
|
7168
|
+
tags: { deviceId: input.deviceId },
|
|
7169
|
+
meta: {
|
|
7170
|
+
deviceId: input.deviceId,
|
|
7171
|
+
cutoffMs: input.cutoffMs,
|
|
7172
|
+
motion,
|
|
7173
|
+
object,
|
|
7174
|
+
audio
|
|
7175
|
+
}
|
|
7176
|
+
});
|
|
7090
7177
|
return counts;
|
|
7091
7178
|
}
|
|
7092
7179
|
/**
|
|
@@ -1712,10 +1712,13 @@ var TrackStore = class {
|
|
|
1712
1712
|
try {
|
|
1713
1713
|
await this.persistCompleted(record);
|
|
1714
1714
|
} catch (err) {
|
|
1715
|
-
this.logger.warn("persist completed track failed", {
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1715
|
+
this.logger.warn("persist completed track failed", {
|
|
1716
|
+
tags: { deviceId: t.deviceId },
|
|
1717
|
+
meta: {
|
|
1718
|
+
trackId,
|
|
1719
|
+
error: String(err)
|
|
1720
|
+
}
|
|
1721
|
+
});
|
|
1719
1722
|
}
|
|
1720
1723
|
this.active.delete(trackId);
|
|
1721
1724
|
expired.push(record);
|
|
@@ -1942,10 +1945,13 @@ var MediaStore = class {
|
|
|
1942
1945
|
});
|
|
1943
1946
|
return key;
|
|
1944
1947
|
} catch (err) {
|
|
1945
|
-
this.logger.warn("media put failed", {
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1948
|
+
this.logger.warn("media put failed", {
|
|
1949
|
+
tags: { deviceId: params.deviceId },
|
|
1950
|
+
meta: {
|
|
1951
|
+
key,
|
|
1952
|
+
error: String(err)
|
|
1953
|
+
}
|
|
1954
|
+
});
|
|
1949
1955
|
throw err;
|
|
1950
1956
|
}
|
|
1951
1957
|
}
|
|
@@ -2134,11 +2140,14 @@ var MediaStore = class {
|
|
|
2134
2140
|
relativePath: oldPath
|
|
2135
2141
|
});
|
|
2136
2142
|
} catch (err) {
|
|
2137
|
-
this.logger.warn("MediaStore.reown: old blob delete failed (best-effort)", {
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2143
|
+
this.logger.warn("MediaStore.reown: old blob delete failed (best-effort)", {
|
|
2144
|
+
tags: { deviceId },
|
|
2145
|
+
meta: {
|
|
2146
|
+
key,
|
|
2147
|
+
oldPath,
|
|
2148
|
+
error: String(err)
|
|
2149
|
+
}
|
|
2150
|
+
});
|
|
2142
2151
|
}
|
|
2143
2152
|
try {
|
|
2144
2153
|
await this.store.delete.mutate({
|
|
@@ -2146,10 +2155,13 @@ var MediaStore = class {
|
|
|
2146
2155
|
key
|
|
2147
2156
|
});
|
|
2148
2157
|
} catch (err) {
|
|
2149
|
-
this.logger.warn("MediaStore.reown: old index row delete failed (best-effort)", {
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2158
|
+
this.logger.warn("MediaStore.reown: old index row delete failed (best-effort)", {
|
|
2159
|
+
tags: { deviceId },
|
|
2160
|
+
meta: {
|
|
2161
|
+
key,
|
|
2162
|
+
error: String(err)
|
|
2163
|
+
}
|
|
2164
|
+
});
|
|
2153
2165
|
}
|
|
2154
2166
|
return newKey;
|
|
2155
2167
|
}
|
|
@@ -2350,10 +2362,13 @@ var EventStore = class {
|
|
|
2350
2362
|
}
|
|
2351
2363
|
});
|
|
2352
2364
|
} catch (err) {
|
|
2353
|
-
this.logger.warn("insertMotion failed", {
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2365
|
+
this.logger.warn("insertMotion failed", {
|
|
2366
|
+
tags: { deviceId: ev.deviceId },
|
|
2367
|
+
meta: {
|
|
2368
|
+
eventId: ev.id,
|
|
2369
|
+
error: String(err)
|
|
2370
|
+
}
|
|
2371
|
+
});
|
|
2357
2372
|
}
|
|
2358
2373
|
}
|
|
2359
2374
|
async insertObject(ev) {
|
|
@@ -2367,10 +2382,13 @@ var EventStore = class {
|
|
|
2367
2382
|
}
|
|
2368
2383
|
});
|
|
2369
2384
|
} catch (err) {
|
|
2370
|
-
this.logger.warn("insertObject failed", {
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2385
|
+
this.logger.warn("insertObject failed", {
|
|
2386
|
+
tags: { deviceId: ev.deviceId },
|
|
2387
|
+
meta: {
|
|
2388
|
+
eventId: ev.id,
|
|
2389
|
+
error: String(err)
|
|
2390
|
+
}
|
|
2391
|
+
});
|
|
2374
2392
|
}
|
|
2375
2393
|
}
|
|
2376
2394
|
async insertAudio(ev) {
|
|
@@ -2384,10 +2402,13 @@ var EventStore = class {
|
|
|
2384
2402
|
}
|
|
2385
2403
|
});
|
|
2386
2404
|
} catch (err) {
|
|
2387
|
-
this.logger.warn("insertAudio failed", {
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2405
|
+
this.logger.warn("insertAudio failed", {
|
|
2406
|
+
tags: { deviceId: ev.deviceId },
|
|
2407
|
+
meta: {
|
|
2408
|
+
eventId: ev.id,
|
|
2409
|
+
error: String(err)
|
|
2410
|
+
}
|
|
2411
|
+
});
|
|
2391
2412
|
}
|
|
2392
2413
|
}
|
|
2393
2414
|
buildFilter(q) {
|
|
@@ -2856,25 +2877,34 @@ var EventMediaDispatcher = class {
|
|
|
2856
2877
|
getRemoteFrame: this.deps.getRemoteFrame
|
|
2857
2878
|
});
|
|
2858
2879
|
} catch (err) {
|
|
2859
|
-
this.deps.logger.debug("event media: resolveFrame threw", {
|
|
2860
|
-
deviceId,
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2880
|
+
this.deps.logger.debug("event media: resolveFrame threw", {
|
|
2881
|
+
tags: { deviceId },
|
|
2882
|
+
meta: {
|
|
2883
|
+
deviceId,
|
|
2884
|
+
shmId: frameHandle.shmId,
|
|
2885
|
+
error: String(err)
|
|
2886
|
+
}
|
|
2887
|
+
});
|
|
2864
2888
|
return;
|
|
2865
2889
|
}
|
|
2866
2890
|
if (!decoded) {
|
|
2867
|
-
this.deps.logger.debug("event media: frame recycled before resolve", {
|
|
2868
|
-
deviceId,
|
|
2869
|
-
|
|
2870
|
-
|
|
2891
|
+
this.deps.logger.debug("event media: frame recycled before resolve", {
|
|
2892
|
+
tags: { deviceId },
|
|
2893
|
+
meta: {
|
|
2894
|
+
deviceId,
|
|
2895
|
+
shmId: frameHandle.shmId
|
|
2896
|
+
}
|
|
2897
|
+
});
|
|
2871
2898
|
return;
|
|
2872
2899
|
}
|
|
2873
2900
|
if (decoded.format !== "rgb") {
|
|
2874
|
-
this.deps.logger.debug("event media: resolved frame is not RGB", {
|
|
2875
|
-
deviceId,
|
|
2876
|
-
|
|
2877
|
-
|
|
2901
|
+
this.deps.logger.debug("event media: resolved frame is not RGB", {
|
|
2902
|
+
tags: { deviceId },
|
|
2903
|
+
meta: {
|
|
2904
|
+
deviceId,
|
|
2905
|
+
format: decoded.format
|
|
2906
|
+
}
|
|
2907
|
+
});
|
|
2878
2908
|
return;
|
|
2879
2909
|
}
|
|
2880
2910
|
const frameData = Buffer.isBuffer(decoded.data) ? decoded.data : Buffer.from(decoded.data);
|
|
@@ -2916,11 +2946,14 @@ var EventMediaDispatcher = class {
|
|
|
2916
2946
|
data: crop
|
|
2917
2947
|
});
|
|
2918
2948
|
} catch (err) {
|
|
2919
|
-
this.deps.logger.warn("event media: crop failed", {
|
|
2920
|
-
deviceId,
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2949
|
+
this.deps.logger.warn("event media: crop failed", {
|
|
2950
|
+
tags: { deviceId },
|
|
2951
|
+
meta: {
|
|
2952
|
+
deviceId,
|
|
2953
|
+
eventId: ev.eventId,
|
|
2954
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2955
|
+
}
|
|
2956
|
+
});
|
|
2924
2957
|
}
|
|
2925
2958
|
try {
|
|
2926
2959
|
const fullFrame = await drawBoxedFrame(frameData, fw, fh, [], { quality: MEDIA_QUALITY });
|
|
@@ -2933,11 +2966,14 @@ var EventMediaDispatcher = class {
|
|
|
2933
2966
|
data: fullFrame
|
|
2934
2967
|
});
|
|
2935
2968
|
} catch (err) {
|
|
2936
|
-
this.deps.logger.warn("event media: clear full frame failed", {
|
|
2937
|
-
deviceId,
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2969
|
+
this.deps.logger.warn("event media: clear full frame failed", {
|
|
2970
|
+
tags: { deviceId },
|
|
2971
|
+
meta: {
|
|
2972
|
+
deviceId,
|
|
2973
|
+
eventId: ev.eventId,
|
|
2974
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2975
|
+
}
|
|
2976
|
+
});
|
|
2941
2977
|
}
|
|
2942
2978
|
try {
|
|
2943
2979
|
const fullFrameBoxed = await drawBoxedFrame(frameData, fw, fh, [box], { quality: MEDIA_QUALITY });
|
|
@@ -2950,11 +2986,14 @@ var EventMediaDispatcher = class {
|
|
|
2950
2986
|
data: fullFrameBoxed
|
|
2951
2987
|
});
|
|
2952
2988
|
} catch (err) {
|
|
2953
|
-
this.deps.logger.warn("event media: boxed full frame failed", {
|
|
2954
|
-
deviceId,
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2989
|
+
this.deps.logger.warn("event media: boxed full frame failed", {
|
|
2990
|
+
tags: { deviceId },
|
|
2991
|
+
meta: {
|
|
2992
|
+
deviceId,
|
|
2993
|
+
eventId: ev.eventId,
|
|
2994
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2995
|
+
}
|
|
2996
|
+
});
|
|
2958
2997
|
}
|
|
2959
2998
|
if (ev.childCrops) for (const child of ev.childCrops) try {
|
|
2960
2999
|
const childRegion = squareSafeCropRegion(child.bbox, {
|
|
@@ -2984,11 +3023,14 @@ var EventMediaDispatcher = class {
|
|
|
2984
3023
|
data: childCropData
|
|
2985
3024
|
});
|
|
2986
3025
|
} catch (err) {
|
|
2987
|
-
this.deps.logger.warn(`event media: ${child.kind} failed`, {
|
|
2988
|
-
deviceId,
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
3026
|
+
this.deps.logger.warn(`event media: ${child.kind} failed`, {
|
|
3027
|
+
tags: { deviceId },
|
|
3028
|
+
meta: {
|
|
3029
|
+
deviceId,
|
|
3030
|
+
eventId: ev.eventId,
|
|
3031
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3032
|
+
}
|
|
3033
|
+
});
|
|
2992
3034
|
}
|
|
2993
3035
|
}
|
|
2994
3036
|
async writeTrackFrame(deviceId, frameData, fw, fh, tf) {
|
|
@@ -3007,11 +3049,14 @@ var EventMediaDispatcher = class {
|
|
|
3007
3049
|
data: boxed
|
|
3008
3050
|
});
|
|
3009
3051
|
} catch (err) {
|
|
3010
|
-
this.deps.logger.warn("event media: track frame failed", {
|
|
3011
|
-
deviceId,
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3052
|
+
this.deps.logger.warn("event media: track frame failed", {
|
|
3053
|
+
tags: { deviceId },
|
|
3054
|
+
meta: {
|
|
3055
|
+
deviceId,
|
|
3056
|
+
trackId: tf.trackId,
|
|
3057
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3058
|
+
}
|
|
3059
|
+
});
|
|
3015
3060
|
}
|
|
3016
3061
|
}
|
|
3017
3062
|
};
|
|
@@ -4223,10 +4268,13 @@ var FaceStore = class {
|
|
|
4223
4268
|
value: rest
|
|
4224
4269
|
});
|
|
4225
4270
|
} catch (err) {
|
|
4226
|
-
this.logger.warn("FaceStore.insert failed", {
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4271
|
+
this.logger.warn("FaceStore.insert failed", {
|
|
4272
|
+
tags: { deviceId: face.deviceId },
|
|
4273
|
+
meta: {
|
|
4274
|
+
faceId: id,
|
|
4275
|
+
error: String(err)
|
|
4276
|
+
}
|
|
4277
|
+
});
|
|
4230
4278
|
}
|
|
4231
4279
|
}
|
|
4232
4280
|
/**
|
|
@@ -4293,10 +4341,13 @@ var FaceStore = class {
|
|
|
4293
4341
|
});
|
|
4294
4342
|
deleted.push(id);
|
|
4295
4343
|
} catch (err) {
|
|
4296
|
-
this.logger.warn("FaceStore.prune delete failed", {
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4344
|
+
this.logger.warn("FaceStore.prune delete failed", {
|
|
4345
|
+
tags: { deviceId: input.deviceId },
|
|
4346
|
+
meta: {
|
|
4347
|
+
faceId: id,
|
|
4348
|
+
error: String(err)
|
|
4349
|
+
}
|
|
4350
|
+
});
|
|
4300
4351
|
}
|
|
4301
4352
|
return deleted;
|
|
4302
4353
|
}
|
|
@@ -4582,10 +4633,13 @@ var ObjectEmbeddingStore = class {
|
|
|
4582
4633
|
value: record
|
|
4583
4634
|
});
|
|
4584
4635
|
} catch (err) {
|
|
4585
|
-
this.logger.warn("ObjectEmbeddingStore.upsertIfBetter failed", {
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
|
|
4636
|
+
this.logger.warn("ObjectEmbeddingStore.upsertIfBetter failed", {
|
|
4637
|
+
tags: { deviceId: input.deviceId },
|
|
4638
|
+
meta: {
|
|
4639
|
+
trackId: input.trackId,
|
|
4640
|
+
error: String(err)
|
|
4641
|
+
}
|
|
4642
|
+
});
|
|
4589
4643
|
}
|
|
4590
4644
|
}
|
|
4591
4645
|
/**
|
|
@@ -4797,18 +4851,24 @@ var FaceRecognizer = class {
|
|
|
4797
4851
|
try {
|
|
4798
4852
|
await this.deps.trackStore.setLabel(c.trackId, name);
|
|
4799
4853
|
} catch (err) {
|
|
4800
|
-
this.deps.logger.warn("setLabel failed", {
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4854
|
+
this.deps.logger.warn("setLabel failed", {
|
|
4855
|
+
tags: { deviceId: input.deviceId },
|
|
4856
|
+
meta: {
|
|
4857
|
+
trackId: c.trackId,
|
|
4858
|
+
error: String(err)
|
|
4859
|
+
}
|
|
4860
|
+
});
|
|
4804
4861
|
}
|
|
4805
4862
|
try {
|
|
4806
4863
|
await this.deps.eventStore.setLabelForTrack(c.trackId, name);
|
|
4807
4864
|
} catch (err) {
|
|
4808
|
-
this.deps.logger.warn("setLabelForTrack failed", {
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
4865
|
+
this.deps.logger.warn("setLabelForTrack failed", {
|
|
4866
|
+
tags: { deviceId: input.deviceId },
|
|
4867
|
+
meta: {
|
|
4868
|
+
trackId: c.trackId,
|
|
4869
|
+
error: String(err)
|
|
4870
|
+
}
|
|
4871
|
+
});
|
|
4812
4872
|
}
|
|
4813
4873
|
}
|
|
4814
4874
|
}
|
|
@@ -4820,10 +4880,13 @@ var FaceRecognizer = class {
|
|
|
4820
4880
|
if (input.frameHandle !== void 0) try {
|
|
4821
4881
|
crop = await this.deps.captureCrop(input.frameHandle, cropBbox, input.frameWidth, input.frameHeight, input.cropPadding) ?? void 0;
|
|
4822
4882
|
} catch (err) {
|
|
4823
|
-
this.deps.logger.debug("FaceRecognizer crop capture failed", {
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4883
|
+
this.deps.logger.debug("FaceRecognizer crop capture failed", {
|
|
4884
|
+
tags: { deviceId: input.deviceId },
|
|
4885
|
+
meta: {
|
|
4886
|
+
trackId: c.trackId,
|
|
4887
|
+
error: String(err)
|
|
4888
|
+
}
|
|
4889
|
+
});
|
|
4827
4890
|
}
|
|
4828
4891
|
this.bestFace.set(c.trackId, {
|
|
4829
4892
|
score: c.confidence,
|
|
@@ -4879,10 +4942,13 @@ var FaceRecognizer = class {
|
|
|
4879
4942
|
data: held.crop
|
|
4880
4943
|
});
|
|
4881
4944
|
} catch (err) {
|
|
4882
|
-
this.deps.logger.warn("FaceRecognizer face crop put failed", {
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4945
|
+
this.deps.logger.warn("FaceRecognizer face crop put failed", {
|
|
4946
|
+
tags: { deviceId },
|
|
4947
|
+
meta: {
|
|
4948
|
+
faceId,
|
|
4949
|
+
error: String(err)
|
|
4950
|
+
}
|
|
4951
|
+
});
|
|
4886
4952
|
}
|
|
4887
4953
|
try {
|
|
4888
4954
|
await this.deps.faceStore.insert({
|
|
@@ -4908,10 +4974,13 @@ var FaceRecognizer = class {
|
|
|
4908
4974
|
}
|
|
4909
4975
|
});
|
|
4910
4976
|
} catch (err) {
|
|
4911
|
-
this.deps.logger.warn("FaceRecognizer faceStore insert failed", {
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4977
|
+
this.deps.logger.warn("FaceRecognizer faceStore insert failed", {
|
|
4978
|
+
tags: { deviceId },
|
|
4979
|
+
meta: {
|
|
4980
|
+
faceId,
|
|
4981
|
+
error: String(err)
|
|
4982
|
+
}
|
|
4983
|
+
});
|
|
4915
4984
|
}
|
|
4916
4985
|
}
|
|
4917
4986
|
};
|
|
@@ -4991,10 +5060,13 @@ var PlateStore = class {
|
|
|
4991
5060
|
value: rest
|
|
4992
5061
|
});
|
|
4993
5062
|
} catch (err) {
|
|
4994
|
-
this.logger.warn("PlateStore.insert failed", {
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
5063
|
+
this.logger.warn("PlateStore.insert failed", {
|
|
5064
|
+
tags: { deviceId: plate.deviceId },
|
|
5065
|
+
meta: {
|
|
5066
|
+
plateId: id,
|
|
5067
|
+
error: String(err)
|
|
5068
|
+
}
|
|
5069
|
+
});
|
|
4998
5070
|
}
|
|
4999
5071
|
}
|
|
5000
5072
|
normalizeRow(r) {
|
|
@@ -5150,10 +5222,13 @@ var PlateRecognizer = class {
|
|
|
5150
5222
|
if (input.frameHandle !== void 0) try {
|
|
5151
5223
|
crop = await this.deps.captureCrop(input.frameHandle, c.plateBbox, input.frameWidth, input.frameHeight, input.cropPadding) ?? void 0;
|
|
5152
5224
|
} catch (err) {
|
|
5153
|
-
this.deps.logger.debug("PlateRecognizer crop capture failed", {
|
|
5154
|
-
|
|
5155
|
-
|
|
5156
|
-
|
|
5225
|
+
this.deps.logger.debug("PlateRecognizer crop capture failed", {
|
|
5226
|
+
tags: { deviceId: input.deviceId },
|
|
5227
|
+
meta: {
|
|
5228
|
+
trackId: c.trackId,
|
|
5229
|
+
error: String(err)
|
|
5230
|
+
}
|
|
5231
|
+
});
|
|
5157
5232
|
}
|
|
5158
5233
|
this.bestPlate.set(c.trackId, {
|
|
5159
5234
|
text: c.plateText,
|
|
@@ -5182,10 +5257,13 @@ var PlateRecognizer = class {
|
|
|
5182
5257
|
data: held.crop
|
|
5183
5258
|
});
|
|
5184
5259
|
} catch (err) {
|
|
5185
|
-
this.deps.logger.warn("PlateRecognizer plate crop put failed", {
|
|
5186
|
-
|
|
5187
|
-
|
|
5188
|
-
|
|
5260
|
+
this.deps.logger.warn("PlateRecognizer plate crop put failed", {
|
|
5261
|
+
tags: { deviceId },
|
|
5262
|
+
meta: {
|
|
5263
|
+
plateId,
|
|
5264
|
+
error: String(err)
|
|
5265
|
+
}
|
|
5266
|
+
});
|
|
5189
5267
|
}
|
|
5190
5268
|
try {
|
|
5191
5269
|
await this.deps.plateStore.insert({
|
|
@@ -5211,10 +5289,13 @@ var PlateRecognizer = class {
|
|
|
5211
5289
|
}
|
|
5212
5290
|
});
|
|
5213
5291
|
} catch (err) {
|
|
5214
|
-
this.deps.logger.warn("PlateRecognizer plateStore insert failed", {
|
|
5215
|
-
|
|
5216
|
-
|
|
5217
|
-
|
|
5292
|
+
this.deps.logger.warn("PlateRecognizer plateStore insert failed", {
|
|
5293
|
+
tags: { deviceId },
|
|
5294
|
+
meta: {
|
|
5295
|
+
plateId,
|
|
5296
|
+
error: String(err)
|
|
5297
|
+
}
|
|
5298
|
+
});
|
|
5218
5299
|
}
|
|
5219
5300
|
}
|
|
5220
5301
|
};
|
|
@@ -6525,7 +6606,10 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
|
|
|
6525
6606
|
} : void 0, { classificationMinScore: settings.classificationMinScore });
|
|
6526
6607
|
if (route.kind === "classification") {
|
|
6527
6608
|
if (!topClassification) {
|
|
6528
|
-
this.ctx.logger.warn("classifyAudioFrame returned classification but topClassification is null", {
|
|
6609
|
+
this.ctx.logger.warn("classifyAudioFrame returned classification but topClassification is null", {
|
|
6610
|
+
tags: { deviceId },
|
|
6611
|
+
meta: { deviceId }
|
|
6612
|
+
});
|
|
6529
6613
|
return;
|
|
6530
6614
|
}
|
|
6531
6615
|
const last = this.lastAudioInsertByDevice.get(deviceId);
|
|
@@ -7075,13 +7159,16 @@ var PipelineAnalyticsAddon = class extends BaseAddon {
|
|
|
7075
7159
|
const { counts, ids } = await this.eventStore.pruneBefore(input);
|
|
7076
7160
|
if (ids.length > 0 && this.mediaStore) await this.mediaStore.deleteForEvents([...ids]);
|
|
7077
7161
|
const { motion, object, audio } = counts;
|
|
7078
|
-
if (motion + object + audio > 0) this.ctx.logger.info("analytics event eviction (floor)", {
|
|
7079
|
-
deviceId: input.deviceId,
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
|
|
7083
|
-
|
|
7084
|
-
|
|
7162
|
+
if (motion + object + audio > 0) this.ctx.logger.info("analytics event eviction (floor)", {
|
|
7163
|
+
tags: { deviceId: input.deviceId },
|
|
7164
|
+
meta: {
|
|
7165
|
+
deviceId: input.deviceId,
|
|
7166
|
+
cutoffMs: input.cutoffMs,
|
|
7167
|
+
motion,
|
|
7168
|
+
object,
|
|
7169
|
+
audio
|
|
7170
|
+
}
|
|
7171
|
+
});
|
|
7085
7172
|
return counts;
|
|
7086
7173
|
}
|
|
7087
7174
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-post-analysis",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.23",
|
|
4
4
|
"description": "CamStack Post-Analysis bundle — enrichment, embedding-encoder, pipeline-analytics. Multi-entry npm package shipping addons that consume pipeline output.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|