Files
innovatieplatform/wiki/concepts/innovation-lifecycle.md
znetsixe 926872a082 Add document converter, seeder data structure, and project wiki
- ai-service/convert.py: converts Office/PDF files to markdown with frontmatter
- database/seeders/data/: folder structure for themas, projects, documents, etc.
- database/seeders/data/raw/: drop zone for Office/PDF files to convert
- wiki/: project architecture, concepts, and knowledge graph documentation
- Remove unused Laravel example tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 08:33:42 +02:00

2.9 KiB

title, created, updated, status, tags, sources
title created updated status tags sources
Innovation Lifecycle 2026-04-08 2026-04-08 evolving
concept
lifecycle
phases
governance
app/Enums/FaseType.php
app/Enums/ProjectStatus.php
app/Services/ProjectService.php

Innovation Lifecycle

Every innovation project at the R&D lab follows a 9-phase lifecycle, from initial signal to final evaluation. The platform enforces this via FaseType and ProjectStatus enums with transactional phase transitions.

Phases

signaal → verkenning → concept → experiment → pilot → besluitvorming → overdracht_bouwen → overdracht_beheer → evaluatie
# Phase Dutch Purpose
1 Signal Signaal Initial idea or observation captured
2 Exploration Verkenning Research and feasibility assessment
3 Concept Concept Design a proposed solution
4 Experiment Experiment Small-scale test of the concept
5 Pilot Pilot Larger-scale test in production environment
6 Decision Besluitvorming Go/no-go decision by governance
7 Handover to Build Overdracht bouwen Transfer to development/implementation team
8 Handover to Operations Overdracht beheer Transfer to operational team for maintenance
9 Evaluation Evaluatie Post-handover review and lessons learned

Special Statuses

These are Project-only statuses (not lifecycle phases):

Status Purpose
Geparkeerd Temporarily halted — can resume later
Gestopt Permanently stopped — documented why
Afgerond Successfully completed the full lifecycle

Phase Transition Logic

Phase transitions go through ProjectService::transitionPhase() in a database transaction:

  1. Close current active phase (set status → afgerond, set einddatum)
  2. Create new phase record (via FaseType::tryFrom() mapping)
  3. Update project status
  4. Write audit log entry with from and to states

Key constraint: FaseType::tryFrom($newStatus->value) — the first 9 ProjectStatus values map 1:1 to FaseType. Special statuses (geparkeerd, gestopt, afgerond) do not create new Fase records.

Park and Stop

  • Park (ProjectService::park()): closes active phase with reason in opmerkingen, sets status to geparkeerd
  • Stop (ProjectService::stop()): same mechanics, sets status to gestopt
  • Both log the transition reason in the audit trail

Audit Trail

Every phase transition, park, or stop creates an AuditLog record:

AuditLog::create([
    'user_id' => Auth::id(),
    'action' => "project.phase_transition",
    'entity_type' => 'project',
    'entity_id' => $project->id,
    'payload' => ['from' => 'signaal', 'to' => 'verkenning'],
]);

Metro Map Representation

  • Level 1: Project status shown as station dot color (green=completed, cyan=active, yellow=parked, red=stopped)
  • Level 2: Each lifecycle phase is a station on the project's "lifecycle" line, with active phase highlighted