mitai-jinkendo/backend
Lars 2ce0874dcb
All checks were successful
Deploy Development / deploy (push) Successful in 50s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 14s
feat: Phase 3 - Logic Nodes + Conditional Branching
Backend:
- logic_evaluator.py (NEU, 307 Zeilen): Deterministischer Logic Evaluator
  - Vergleichsoperatoren: EQ, NEQ, IN, NOT_IN, GT, LT, GTE, LTE, CONTAINS
  - Logische Operatoren: AND, OR, NOT mit Verschachtelung
  - Resolve signal references (node_id.question_type)
  - Error handling für UNCLEAR/INVALID/NOT_DECIDABLE Signale

- workflow_executor.py (ERWEITERT):
  - execute_logic_node(): Bedingungen evaluieren, Pfade aktivieren/deaktivieren
  - execute_workflow(): BFS-Traversierung mit Edge-Activation statt Sequential
  - _apply_fallback(): 4 Fallback-Strategien (CONSERVATIVE_SKIP, DEFAULT_PATH, UNCERTAINTY_PATH, DOCUMENT_ONLY)
  - _has_active_incoming_edge(): Prüft ob Node erreichbar ist
  - _get_edges_by_label(): Findet then/else/uncertainty Pfade

- workflow_models.py (ERWEITERT):
  - LogicOperator.CONTAINS hinzugefügt

- version.py: 0.9k → 0.9l, workflow 0.3.0 → 0.4.0

Tests:
- test_phase3_logic_evaluator.py (NEU): 20 Unit Tests (alle passing)
  - Comparison operators (EQ, NEQ, IN, GT, LT, CONTAINS)
  - Logical operators (AND, OR, NOT)
  - Nested expressions
  - Error handling (missing refs, UNCLEAR/INVALID signals)

- test_phase2_workflow_executor.py (AKTUALISIERT): 11 Tests (alle passing)
  - execute_node() graph parameter hinzugefügt (Phase 3 requirement)
  - test_execute_node_unknown_type: logic → join (logic jetzt implementiert)

- test_phase3_workflow_branching.py (NEU): Integration Tests vorbereitet
  - Erfordert vollständige DB-Mock-Strategie (wird in E2E-Test nachgeholt)

Phase 2 Backward Compatibility:  Alle Phase 2 Tests bestehen weiterhin

Konzept: .claude/task/Workflow_engine_prompting_engine/konzept_workflow_engine_konsolidated.md
Anforderungsanalyse: .claude/task/Workflow_engine_prompting_engine/phase3_anforderungsanalyse.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 08:02:22 +02:00
..
calculations fix: Convert goal values to float before progress calculation 2026-03-28 12:39:26 +01:00
data_layer fix: Part B protein placeholders - aggregate by date 2026-04-02 12:43:33 +02:00
migrations feat: Phase 0 - Workflow Engine Foundation 2026-04-03 16:55:51 +02:00
placeholder_registrations feat: Activity Cluster Placeholder Registry - Complete Implementation (17 Placeholders) 2026-04-03 08:20:25 +02:00
routers fix: Use dict keys instead of numeric indices for RealDictCursor rows 2026-04-03 21:34:47 +02:00
tests feat: Placeholder Metadata V2 - Normative Implementation + ZIP Export Fix 2026-03-29 21:23:37 +02:00
apply_v9c_migration.py feat: v9c Phase 1 - Feature consolidation & cleanup migration 2026-03-20 18:57:39 +01:00
auth.py fix: correct indentation in auth.py _check_impl function 2026-03-21 07:06:53 +01:00
check_features.py fix: pipeline typo and add features diagnostic script 2026-03-20 22:32:09 +01:00
check_migration_024.py debug: diagnostic script for Migration 024 state 2026-03-27 07:39:18 +01:00
db_init.py fix: only process numbered migrations (XXX_*.sql pattern) 2026-03-21 10:08:56 +01:00
db.py refactor: move init_db() to db.py 2026-03-19 09:49:46 +01:00
Dockerfile fix: replace psql with Python for DB checks (no apt-get needed!) 2026-03-18 10:01:19 +01:00
evaluation_helper.py fix: convert Decimal to float for JSON serialization in evaluation 2026-03-23 13:28:07 +01:00
feature_logger.py feat: add structured JSON logging for all feature usage (Phase 2) 2026-03-20 22:18:12 +01:00
fix_seed_goal_types.py fix: make Migration 024 idempotent + add seed data fix script 2026-03-27 07:40:42 +01:00
generate_complete_metadata_v2.py feat: Placeholder Metadata V2 - Normative Implementation + ZIP Export Fix 2026-03-29 21:23:37 +02:00
generate_complete_metadata.py feat: Complete Placeholder Metadata System (Normative Standard v1.0.0) 2026-03-29 20:32:37 +02:00
generate_placeholder_catalog.py feat: Complete Placeholder Metadata System (Normative Standard v1.0.0) 2026-03-29 20:32:37 +02:00
goal_utils.py fix: add start_date and created_at to get_active_goals query 2026-03-28 17:18:53 +01:00
logic_evaluator.py feat: Phase 3 - Logic Nodes + Conditional Branching 2026-04-04 08:02:22 +02:00
main_old.py refactor: modular backend architecture with 14 router modules 2026-03-19 11:15:35 +01:00
main.py feat: Phase 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +02:00
migrate_to_postgres.py fix: Migration-Fehler - meas_id Spalte in ai_insights 2026-03-19 08:39:36 +01:00
models.py feat: unified prompt system migration schema (Issue #28 Phase 1) 2026-03-25 10:43:10 +01:00
normalization_engine.py fix: Use dict keys for all RealDictCursor row access in Phase 2 code 2026-04-03 21:36:44 +02:00
placeholder_metadata_complete.py feat: Complete Placeholder Metadata System (Normative Standard v1.0.0) 2026-03-29 20:32:37 +02:00
placeholder_metadata_enhanced.py feat: Placeholder Metadata V2 - Normative Implementation + ZIP Export Fix 2026-03-29 21:23:37 +02:00
placeholder_metadata_extractor.py feat: Add Placeholder Metadata Export to Admin Panel 2026-03-29 20:37:52 +02:00
placeholder_metadata.py feat: Placeholder Metadata V2 - Normative Implementation + ZIP Export Fix 2026-03-29 21:23:37 +02:00
placeholder_registry_export.py feat: Placeholder Registry Framework + Part A Nutrition Metrics 2026-04-02 11:46:16 +02:00
placeholder_registry.py feat: Placeholder Registry Framework + Part A Nutrition Metrics 2026-04-02 11:46:16 +02:00
placeholder_resolver.py fix: Placeholder Catalog nutzt Registry als Single Source of Truth 2026-04-03 08:47:22 +02:00
profile_evaluator.py feat: Training Type Profiles - Phase 1.1 Foundation (#15) 2026-03-23 10:49:26 +01:00
profile_templates.py feat: Training Type Profiles Phase 2.1 - Backend Profile Management (#15) 2026-03-23 11:50:40 +01:00
prompt_executor.py feat: Phase 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +02:00
quality_filter.py feat: global quality filter setting (Issue #31) 2026-03-23 22:29:49 +01:00
question_augmenter.py feat: Phase 1 - Fragenergänzung + Strukturierter Container 2026-04-03 18:02:25 +02:00
requirements.txt fix: add python-dateutil dependency for vitals CSV import 2026-03-23 15:41:30 +01:00
result_container_parser.py feat: Phase 1 - Fragenergänzung + Strukturierter Container 2026-04-03 18:02:25 +02:00
rule_engine.py feat: Training Type Profiles - Phase 1.1 Foundation (#15) 2026-03-23 10:49:26 +01:00
run_migration_024.py feat: manual migration 024 runner script 2026-03-27 07:28:43 +01:00
schema.sql fix: add missing meas_id column to photos table 2026-03-18 12:23:13 +01:00
startup.sh fix: replace psql with Python for DB checks (no apt-get needed!) 2026-03-18 10:01:19 +01:00
version.py feat: Phase 3 - Logic Nodes + Conditional Branching 2026-04-04 08:02:22 +02:00
workflow_engine.py fix: Access topological_order directly from engine, not from non-existent validator attribute 2026-04-03 21:38:45 +02:00
workflow_executor.py feat: Phase 3 - Logic Nodes + Conditional Branching 2026-04-04 08:02:22 +02:00
workflow_models.py feat: Phase 3 - Logic Nodes + Conditional Branching 2026-04-04 08:02:22 +02:00