mitai-jinkendo/backend
Lars 1f8791f4dd
All checks were successful
Deploy Development / deploy (push) Successful in 44s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 14s
feat: Phase 2 - Normalisierung + Workflow Executor
Backend:
- normalization_engine.py (200 Zeilen): Synonym-Mapping, 5 Statuswerte
  * normalize_decision_signal(): Kaskade (exact → case → synonym → invalid)
  * apply_synonym_mapping(): DB-basierte Synonyme (case-insensitive)
  * normalize_all_signals(): Batch-Processing gegen Katalog
  * load_question_catalog(): Lädt normalization_rules aus DB
- workflow_executor.py (440 Zeilen): Sequenzielle Workflow-Ausführung
  * execute_workflow(): Traversiert DAG in topologischer Reihenfolge
  * execute_node(): Führt analysis nodes aus (start/end = no-op)
  * aggregate_results(): Kombiniert analysis_core + normalized_signals
  * save_execution_state(): Persistiert in workflow_executions
- workflow_models.py: Erweitert um Phase 2 Models
  * SignalStatus Enum (valid, normalized, unclear, invalid, not_decidable)
  * NormalizedSignal (question_type, raw_value, normalized_value, status)
  * NodeExecutionState (node_id, status, analysis_core, normalized_signals)
  * ExecutionResult (execution_id, workflow_id, status, node_states, aggregated_result)
- workflow_engine.py: Neue Funktion get_execution_order()
  * Flattened topological sort für sequenzielle Execution
  * Phase 7: Wird zu levels (parallele Execution)
- prompt_executor.py: execute_workflow_prompt() Implementierung
  * Ruft workflow_executor.execute_workflow() auf
  * Konvertiert ExecutionResult zu API-Response
- routers/workflows.py (230 Zeilen): Workflow Execution API
  * POST /api/workflows/{id}/execute (mit enable_debug)
  * GET /api/workflows/executions/{id} (lädt gespeicherten State)
  * GET /api/workflows (listet alle aktiven Workflows)
  * GET /api/workflows/{id} (lädt einzelnen Workflow mit Graph)
- main.py: Router-Registrierung (workflows.router)

Tests:
- test_phase2_normalization.py (17 Tests): Alle Normalisierungs-Szenarien
  * Exact match, case-insensitive, synonym mapping, invalid, whitespace
  * Batch-Normalisierung, not_in_catalog, mixed validity
- test_phase2_workflow_executor.py (10 Tests): Executor + Aggregation
  * aggregate_results mit verschiedenen Konstellationen
  * execute_node für start/end/analysis/unknown
  * Integration mit question_augmenter + result_container_parser

Alle 27 Unit-Tests bestanden.

version: 0.9k (backend)
module:  workflow 0.3.0

Konzept: .claude/task/Workflow_engine_prompting_engine/anforderungsanalyse_umsetzungsplan.md (Phase 2)
2026-04-03 21:20:23 +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 feat: Phase 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +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
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 feat: Phase 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +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 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +02:00
workflow_engine.py feat: Phase 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +02:00
workflow_executor.py feat: Phase 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +02:00
workflow_models.py feat: Phase 2 - Normalisierung + Workflow Executor 2026-04-03 21:20:23 +02:00