Commit Graph

164 Commits

Author SHA1 Message Date
Eduardo Rios
ed666c260d fix: satisfy mypy in put_last_data_timestamp after utc=True normalization
CI mypy caught what my local environment couldn't (Python 3.14 has no
compatible numpy stub for the project's python_version=3.11 mypy target,
so mypy couldn't run locally at all):

  slot_manager.py:353: error: Incompatible types in assignment
    (expression has type "str", variable has type "Timestamp")
  slot_manager.py:368: error: Incompatible return value type
    (got "Timestamp", expected "str | None")

Reassigning `last_data_timestamp` from a Timestamp to its strftime() string
trips mypy's inference (it fixes an unannotated local's type from its first
assignment). Split into a separate `last_data_timestamp_str` for the string
form instead of reusing the name.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 08:18:17 -03:00
Eduardo Rios
14b854148a SIENTIAPDE-2011: add e2e coverage for query-time filter, fix stale e2e fixtures
e2e fixtures (default_notification, seed_last_timestamp, default_receiver_group)
still assumed the pre-SIENTIAPDE-2007 string-timestamp representation and the
old ignore_models field name, so the load_notification_package e2e suite was
failing independently of this ticket's changes:

- default_notification now seeds `timestamp` as a native datetime (matches
  production since SIENTIAPDE-2007's Notification.timestamp = now()).
- seed_last_timestamp now uses DATETIME_FORMAT_MS_WITH_TZ (matches what
  put_last_data_timestamp actually writes to Redis today).
- default_receiver_group's ignore_models renamed to ignore_models_id, per
  this ticket's decision.
- test_reports_main_workflow.py's explicit timestamp= call sites updated to
  match.

Also fixes a real production bug in put_last_data_timestamp (slot_manager.py)
surfaced by running the e2e suite against a real Temporal environment: Temporal's
default data converter serializes datetime values to ISO-8601 strings across
the activity boundary, and pymongo returns naive datetimes for BSON Date
fields, so `data['timestamp'].max().strftime(...)` crashed on a plain str.
Unit tests never caught this because they mock the activity boundary and
never cross real (de)serialization. Fixed by normalizing through
`pandas.to_datetime(..., utc=True)`, which handles native datetime/Timestamp
and offset-aware/naive ISO strings uniformly.

Adds test_load_package_query_time_filter_union_and_intersection, a new e2e
test exercising the actual SIENTIAPDE-2011 behavior end-to-end: union of
active groups' levels, intersection of their ignore_models_id, and the
requirement that a model ignored by only one of several active groups must
not be excluded from the fetch.

Note: test_reports_main_workflow.py / test_alerts_main_workflow.py still have
a separate, pre-existing failure in process_notifications.py (same family of
bug: a notification's timestamp field parsed with a fixed strptime format
after crossing the same Temporal serialization boundary) — confirmed present
on the unmodified baseline too, unrelated to this ticket, tracked separately.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 12:15:23 -03:00
Eduardo Rios
1711f3b0d1 SIENTIAPDE-2011: Compute query-time levels union / ignore_models_id intersection
Push level and model-exclusion filtering down to the Mongo query instead of
fetching the full notification_queue unfiltered on every run.

- Fix await ordering in load_notification_package so sending_configs (active
  receiver_groups) resolves before load_latest_data is called, letting the
  query filter be built from group data.
- Add _compute_query_time_filter: unions active groups' `levels` (falls back
  to the workflow's default filter if any group has no restriction, since
  that group wants every level) and intersects their `ignore_models_id`
  (a model is only safe to drop from the fetch if every active group
  ignores it).
- Add unit tests covering mixed groups, a model ignored by only one group
  (must not be excluded from the fetch), and the empty active-groups case.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 11:46:19 -03:00
Eduardo Rios
3c69b35b3f fix: use DATETIME_FORMAT_MS_WITH_TZ instead of isoformat for last_data_timestamp
Addresses review feedback: prefer sientia_do's explicit datetime format
constant over Python's isoformat()/fromisoformat() when round-tripping
last_data_timestamp through Redis, matching the convention already used
elsewhere in mongo_db.py and slot_manager.py.
2026-09-09 10:54:22 -03:00
Eduardo Rios
c3cd58028c SIENTIAPDE-2007 SIENTIAPDE-2007: Compare native datetime in load_latest_data $gt filter and bump sientia_do pin to 1.12.2
Notification.timestamp is now stored as a native BSON Date instead of a
string, so load_latest_data must parse the ISO string coming from Redis
back to datetime before building the $gt filter, or the comparison
silently breaks (BSON String vs Date always evaluates False). Also fixes
put_last_data_timestamp, which would otherwise raise TypeError trying to
json.dumps a pandas Timestamp when persisting the new watermark to Redis.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 13:53:01 -03:00
cf3a367794 SIENTIAPDE-1646
SIENTIAPDE-1646: Refactor TemporalManager by extracting schedule update and task queue name building logic into dedicated helper methods.
2026-07-21 11:12:11 -03:00
a4b6f6aa88 SIENTIAPDE-1646
SIENTIAPDE-1646: Remove validate.sh script, refactor TemporalManager for improved readability, and update temporal schedule tests to explicitly define workflow types and align task queue naming conventions.
2026-07-21 10:17:30 -03:00
233a771e36 SIENTIAPDE-1646
SIENTIAPDE-1646 Update RUNTIME_WORKFLOWS in TemporalManager to include 'drift' and 'simple_metrics', expanding workflow capabilities and enhancing orchestration functionality.
2026-06-11 09:44:20 -03:00
c1e399894a SIENTIAPDE-1646
SIENTIAPDE-1646 Update RUNTIME_WORKFLOWS in TemporalManager to include 'minimal_retrain', enhancing workflow capabilities.
2026-06-10 14:12:34 -03:00
7b925069ac SIENTIAPDE-1646
SIENTIAPDE-1646 Update TemporalManager to consistently assign task queues for runtime workflows, enhancing schedule creation logic and ensuring proper handling of runtime names.
2026-05-25 14:46:50 -03:00
feca52a357 SIENTIAPDE-1646
SIENTIAPDE-1646 Add support for runtime workflows in TemporalManager by introducing RUNTIME_WORKFLOWS constant and updating schedule creation logic to handle runtime names appropriately.
2026-05-25 10:12:50 -03:00
5e918b458c SIENTIAPDE-1646
Update GITHUB_BRANCH in values.yaml to feature/SIENTIAPDE-1646, refactor mongo_db.py for cleaner code, and enhance worker.py by adding missing commas for improved syntax consistency.
2026-05-22 16:26:52 -03:00
474c2ef42c SIENTIAPDE-1646
Enhance orchestration configuration and documentation. Added `RUNTIME` variable to `.env.example`, updated `.gitignore` to exclude `openspec/` and `.cursor/`, and modified `README.md` to clarify queue naming conventions and runtime handling. Refactored activities to use synchronous database and email handling, improving performance and consistency. Updated test cases to reflect these changes and ensure compatibility with new activity definitions.
2026-05-22 15:02:16 -03:00
e7705964d5 SIENTIAPDE-1712
Fix error model retrieval in notification_generator.ipynb and add on_conflict parameter to common_config in orchestrator_functions.py for improved error handling.
2026-03-27 14:09:48 -03:00
7f8105dd1e SIENTIAPDE-1478
Fix spelling errors in poller behavior parameters in prepare_worker.py for consistency and clarity.
2026-01-21 15:42:36 -03:00
ba73bb7e9d SIENTIAPDE-1478
Add xgboost functions to schedule_types in formatters.py for enhanced orchestration capabilities
2026-01-15 11:08:48 -03:00
a46eaa2367 SIENTIAPDE-1478
Reintroduce prepare_worker import in worker.py to maintain consistency in worker setup, ensuring clarity and proper initialization for orchestrator workflows.
2026-01-09 12:36:21 -03:00
9079003100 SIENTIAPDE-1478
Refactor worker initialization by introducing prepare_worker function to streamline worker setup for orchestrator, alerts, and reports workflows, enhancing code clarity and maintainability.
2026-01-09 12:35:41 -03:00
3083c5edc4 SIENTIAPDE-1478
Update version in init_orchestration.ipynb to 3.11.14 and enhance README.md with detailed architecture principles, execution flows, and improved filtering mechanisms in workflows. Refactor orchestrator_functions.py for clarity in filter configuration and add support for PI Web API output configuration in predictions_batch. Update tests to reflect new configurations.
2026-01-09 09:56:50 -03:00
886c6362ce SIENTIAPDE-1445
Enhance MongoDB activity to handle missing topic configurations gracefully by using get() method and skipping empty collections, improving robustness in pipeline processing.
2025-12-18 12:16:37 -03:00
5d2d297aa2 SIENTIAPDE-1445
Refactor tag processing in pi_web_api_scouter function to improve clarity by renaming variables and enhancing readability of the configuration handling.
2025-12-18 11:58:14 -03:00
882f3b4de7 SIENTIAPDE-1445
Refactor values.yaml to comment out email configuration settings for improved security and clarity. Update orchestrator_functions.py to enhance tag processing by iterating over items in read_tags, improving code readability.
2025-12-18 11:51:43 -03:00
381b585c7a SIENTIAPDE-1445
Refactor gather_read_tags function to remove logger parameter and associated logging statements, streamlining the function for improved clarity and focus on processing pipelines.
2025-12-18 11:34:31 -03:00
97792e36e5 SIENTIAPDE-1445
Refactor gather_read_tags function to accept a logger parameter and replace print statements with structured logging for improved traceability.
2025-12-18 11:32:05 -03:00
4a672745c5 SIENTIAPDE-1445
Add debug print statement in gather_read_tags function to log workflow type and read tags for better traceability.
2025-12-18 11:29:33 -03:00
38684071a5 SIENTIAPDE-1445
Filter gather_read_tags to process only 'scouter' workflow types and add corresponding unit tests to validate this behavior.
2025-12-18 11:21:55 -03:00
c98469efd2 SIENTIAPDE-1445
Update GITHUB_BRANCH to feature/SIENTIAPDE-1445 and enhance formatters with a new registry for workflow types, improving configuration management. Refactor process_schedules to utilize the new registry and add error handling for unsupported workflow types. Update tests to validate new functionality and ensure proper integration.
2025-12-18 10:55:29 -03:00
61d4b23e69 SIENTIAPDE-1445
SIENTIAPDE-1273 Add base_scouter and pi_web_api_scouter functions to orchestrator utilities for enhanced configuration management. Update tests to validate new functionalities and ensure proper integration with existing workflows.
2025-12-18 10:02:47 -03:00
62e7a7dee9 SIENTIAPDE-1273
SIENTIAPDE-1273 Add 'save_transform' and 'transform_table_name' parameters to predictions_batch function for enhanced data processing capabilities. Update corresponding test cases to reflect these changes.
2025-11-19 08:12:08 -03:00
fdd859de5a SIENTIAPDE-1273
Enhance orchestrator utilities and activities with improved documentation and functionality. Update README to reflect new orchestrator functions for drift and simple metrics workflows. Refactor email, formatters, mongo_db, slot_manager, and temporal_manager activities to include detailed docstrings and improve clarity on input parameters and return values. Ensure consistent metadata handling across activities for better logging and tracking.
2025-11-17 16:30:29 -03:00
2f06036d0e SIENTIAPDE-1273
SIENTIAPDE-1273 Refactor drift function in orchestrator utilities for improved configuration and update formatters to include drift import. Enhance tests to validate new configurations and ensure integration with existing workflows.
2025-11-17 12:57:17 -03:00
7d0c23acb6 SIENTIAPDE-1273
Update sientia-dataops-library dependency to version 1.6.1 and add target_table_name to simple_metrics configuration for enhanced metrics tracking.
2025-11-17 10:47:40 -03:00
7b28424a34 SIENTIAPDE-1273
Implement simple metrics configuration in formatters and orchestrator utilities. Update tests to validate new simple metrics functionality and ensure proper integration with existing workflows.
2025-11-14 15:55:06 -03:00
5cc7667fbc SIENTIAPDE-1273
Update GITHUB_BRANCH to feature/SIENTIAPDE-1273 and increment Helm chart version to 0.6.0. Enhance TemporalManager to include offset in schedule intervals for improved scheduling flexibility.
2025-11-14 12:20:36 -03:00
c9b5e98726 SIENTIAPDE-1273
Implement drift monitoring configuration and update formatters to support drift workflows. Add drift function to orchestrator utilities and enhance tests for drift functionality.
2025-11-14 09:22:24 -03:00
92e87530b8 SIENTIAPDE-1325
SIENTIAPDE-1325 Update release workflow to trigger only on merged pull requests and adjust timestamp formatting in tests for consistency.
2025-11-10 09:51:06 -03:00
4faa7141e7 SIENTIAPDE-1325
Update import statements in mongo_db.py to include DATETIME_FORMAT_WITH_TZ for consistent timestamp formatting in data filtering.
2025-11-06 14:06:22 -03:00
aafc6d27d2 SIENTIAPDE-1325
Update image tag to 0.5.0 in values.yaml and change GITHUB_BRANCH to feature/SIENTIAPDE-1325 for specific external operation metrics. Remove unused timestamp formatting in mongo_db.py to streamline data handling.
2025-11-06 13:57:56 -03:00
acde9475ec SIENTIAPDE-1325
Remove unused Couchbase configurations and related code. Refactor Activities class to eliminate Couchbase dependency, updating initialization and shutdown methods. Update README and tests to reflect these changes. Upgrade sientia-dataops-library dependency version in requirements.txt.
2025-11-06 10:45:23 -03:00
1e6616cfc2 SIENTIAPDE-1314
Refactor workflow calls to use subworkflow naming convention for load_notification_package and process_notifications in alerts and reports modules. Update corresponding tests to reflect these changes.
2025-10-27 10:24:16 -03:00
f7ed72ee0c SIENTIAPDE-1312
Update image tag in values.yaml to 0.4.9; refactor imports in email.py, formatters.py, and mongo_db.py for improved organization and clarity.
2025-10-21 16:38:22 -03:00
6882d085e6 SIENTIAPDE-1312
SIENTIAPDE-1312: Refactor build_tag_config to accept a list of tags and return notifications for missing servers. Update Formatters to handle notifications during slot configuration. Enhance tests to validate new behavior and error reporting.
2025-10-21 08:58:39 -03:00
72fd7b2996 SIENTIAPDE-1312
SIENTIAPDE-1312: Update notification_id in TemporalManager to improve error reporting for schedule normalization failures.
2025-10-20 16:30:29 -03:00
61fea4bb75 SIENTIAPDE-1312
SIENTIAPDE-1312: Add 'fill_missing_tags' configuration option to scouter function for enhanced tag management.
2025-10-20 16:26:39 -03:00
e04c91f6f8 SIENTIAPDE-1312
SIENTIAPDE-1312: Update build_tag_config to ensure minimum frequency defaults to 1000 and convert frequency values to integers for accurate calculations of subscription_period_ms.
2025-10-20 12:47:02 -03:00
1666702d73 SIENTIAPDE-1312
SIENTIAPDE-1312: Update build_tag_config to calculate subscription_period_ms based on minimum frequency from tags. Enhance test_build_tag_config to include frequency and validate subscription_period_ms.
2025-10-20 12:42:20 -03:00
b095335cdc SIENTIAPDE-1312
Update sientia-dataops-library dependency to version 1.4.7 and enhance TemporalManager to support offset configuration for scheduling. Added offset handling in common configuration and updated related tests to validate new functionality.
2025-10-20 10:26:53 -03:00
9031b4c88f SIENTIAPDE-1231
Enhance README and code documentation for clarity and structure

- Added a comprehensive Table of Contents to the README for easier navigation.
- Introduced a new section on Code Quality & Validation, detailing the validation workflow and tools used.
- Improved descriptions and consistency in docstrings across various modules, including metrics, formatters, and MongoDB activities.
- Clarified function return types and arguments in the MongoDB and TemporalManager classes for better understanding.
2025-10-16 10:33:58 -03:00
6b826863f4 SIENTIAPDE-1231
Enhance type hinting and code structure in orchestrator activities

- Added type hints for better code clarity in `formatters.py`, `mongo_db.py`, `temporal_manager.py`, and `email_builder.py`.
- Updated `.gitignore` to include `coverage.xml` for improved coverage reporting.
- Improved readability by restructuring variable declarations and method signatures.
2025-10-16 08:52:38 -03:00
f3a6af5603 SIENTIAPDE-1231
Refactor orchestrator activities and configuration files

- Removed unused Temporal timeout environment variables from values.yaml.
- Reorganized import statements in various activity files for better readability.
- Updated logging messages to use consistent formatting across activities.
- Enhanced test cases to ensure proper initialization and shutdown of orchestrator activities.
- Improved overall code structure and readability by applying consistent formatting and style adjustments.
2025-10-15 17:20:52 -03:00