Commit 9a01700
authored
feat: implement ObservationContext for market data observations (#1456)
* feat: implement ObservationContext for market data observations
Add typed ObservationContext domain struct to replace the hardcoded
`[]byte("{}")` placeholder in observation persistence. The context
carries source metadata, collection parameters, and the attributes
map used by CEL expressions for resolution key computation.
- Define ObservationContext with Attributes, SourceSystem,
CollectionMethod, Unit, and Notes fields
- Add observationContext field to MarketPriceObservation domain model
with getter and builder support
- Wire JSON serialization in mappers with backward-compatible
deserialization (handles null, empty, and legacy "{}" records)
- Update all call sites (service layer and tests)
* fix: add defensive map copies to preserve ObservationContext immutability
Copy the Attributes map in both NewObservationContext (inbound) and the
ObservationContext getter (outbound) to prevent callers from mutating
the internal state of MarketPriceObservation through shared map references.
---------
Co-authored-by: Ben Coombs <bjcoombs@users.noreply.github.com>1 parent 2a047c6 commit 9a01700
10 files changed
Lines changed: 365 additions & 31 deletions
File tree
- services/market-information
- adapters/persistence
- domain
- e2e
- service
Lines changed: 32 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
157 | 158 | | |
158 | 159 | | |
159 | 160 | | |
160 | | - | |
| 161 | + | |
161 | 162 | | |
162 | 163 | | |
163 | 164 | | |
| |||
224 | 225 | | |
225 | 226 | | |
226 | 227 | | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
227 | 231 | | |
228 | 232 | | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
Lines changed: 88 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
Lines changed: 23 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
86 | 87 | | |
87 | 88 | | |
88 | 89 | | |
| |||
122 | 123 | | |
123 | 124 | | |
124 | 125 | | |
| 126 | + | |
125 | 127 | | |
126 | 128 | | |
127 | 129 | | |
| |||
145 | 147 | | |
146 | 148 | | |
147 | 149 | | |
| 150 | + | |
148 | 151 | | |
149 | 152 | | |
150 | 153 | | |
| |||
196 | 199 | | |
197 | 200 | | |
198 | 201 | | |
| 202 | + | |
199 | 203 | | |
200 | 204 | | |
201 | 205 | | |
| |||
237 | 241 | | |
238 | 242 | | |
239 | 243 | | |
| 244 | + | |
240 | 245 | | |
241 | 246 | | |
242 | 247 | | |
| |||
286 | 291 | | |
287 | 292 | | |
288 | 293 | | |
| 294 | + | |
289 | 295 | | |
290 | 296 | | |
291 | 297 | | |
| |||
325 | 331 | | |
326 | 332 | | |
327 | 333 | | |
| 334 | + | |
328 | 335 | | |
329 | 336 | | |
330 | 337 | | |
| |||
343 | 350 | | |
344 | 351 | | |
345 | 352 | | |
| 353 | + | |
346 | 354 | | |
347 | 355 | | |
348 | 356 | | |
| |||
391 | 399 | | |
392 | 400 | | |
393 | 401 | | |
| 402 | + | |
394 | 403 | | |
395 | 404 | | |
396 | 405 | | |
| |||
409 | 418 | | |
410 | 419 | | |
411 | 420 | | |
| 421 | + | |
412 | 422 | | |
413 | 423 | | |
414 | 424 | | |
| |||
427 | 437 | | |
428 | 438 | | |
429 | 439 | | |
| 440 | + | |
430 | 441 | | |
431 | 442 | | |
432 | 443 | | |
| |||
464 | 475 | | |
465 | 476 | | |
466 | 477 | | |
| 478 | + | |
467 | 479 | | |
468 | 480 | | |
469 | 481 | | |
| |||
514 | 526 | | |
515 | 527 | | |
516 | 528 | | |
| 529 | + | |
517 | 530 | | |
518 | 531 | | |
519 | 532 | | |
| |||
610 | 623 | | |
611 | 624 | | |
612 | 625 | | |
| 626 | + | |
613 | 627 | | |
614 | 628 | | |
615 | 629 | | |
| |||
633 | 647 | | |
634 | 648 | | |
635 | 649 | | |
| 650 | + | |
636 | 651 | | |
637 | 652 | | |
638 | 653 | | |
| |||
669 | 684 | | |
670 | 685 | | |
671 | 686 | | |
| 687 | + | |
672 | 688 | | |
673 | 689 | | |
674 | 690 | | |
| |||
763 | 779 | | |
764 | 780 | | |
765 | 781 | | |
| 782 | + | |
766 | 783 | | |
767 | 784 | | |
768 | 785 | | |
| |||
802 | 819 | | |
803 | 820 | | |
804 | 821 | | |
| 822 | + | |
805 | 823 | | |
806 | 824 | | |
807 | 825 | | |
| |||
840 | 858 | | |
841 | 859 | | |
842 | 860 | | |
| 861 | + | |
843 | 862 | | |
844 | 863 | | |
845 | 864 | | |
| |||
884 | 903 | | |
885 | 904 | | |
886 | 905 | | |
| 906 | + | |
887 | 907 | | |
888 | 908 | | |
889 | 909 | | |
| |||
927 | 947 | | |
928 | 948 | | |
929 | 949 | | |
| 950 | + | |
930 | 951 | | |
931 | 952 | | |
932 | 953 | | |
| |||
974 | 995 | | |
975 | 996 | | |
976 | 997 | | |
| 998 | + | |
977 | 999 | | |
978 | 1000 | | |
979 | 1001 | | |
| |||
1017 | 1039 | | |
1018 | 1040 | | |
1019 | 1041 | | |
| 1042 | + | |
1020 | 1043 | | |
1021 | 1044 | | |
1022 | 1045 | | |
| |||
0 commit comments