Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config/atlassian.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ confluence:
base_url: "TODO: https://<org>.atlassian.net/wiki"
space_key: "TODO: QMS"
# token via env: CONFLUENCE_API_TOKEN
# NOTE (belegt): approval workflow not native in Confluence Cloud.
# NOTE (verified): approval workflow not native in Confluence Cloud.
# Requires Marketplace app (e.g. Comala). Partially automatable only.

jira:
Expand Down
124 changes: 62 additions & 62 deletions config/core.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# QMS core configuration — tool-neutral (bestätigt)
# QMS core configuration — tool-neutral (confirmed)
# Defines QMS substance: clauses 4–10, documents, roles, records, KPIs, CAPA states.
# Tool-specific details live in the overlay files (selfhosted/atlassian/m365.yaml).

meta:
version: "0.1.0"
standard: "ISO 9001:2015"
# Scope: general ISO 9001, no medical devices (no ISO 13485 / IEC 62304) (bestätigt)
# Scope: general ISO 9001, no medical devices (no ISO 13485 / IEC 62304) (confirmed)

organisation:
name: "{{ org_name }}" # set in client overlay
Expand All @@ -15,198 +15,198 @@ organisation:

roles:
- id: qmo
label: "QM-Beauftragter/in"
responsibilities: ["Dokumentenlenkung", "Interne Audits", "CAPA-Koordination"]
label: "Quality Management Officer"
responsibilities: ["Document control", "Internal audits", "CAPA coordination"]
- id: mgmt
label: "Geschäftsführung"
responsibilities: ["Qualitätspolitik", "Management-Review", "Ressourcen"]
label: "Management"
responsibilities: ["Quality policy", "Management review", "Resources"]
- id: process_owner
label: "Prozessverantwortliche/r"
responsibilities: ["Prozessdokumentation", "KPI-Reporting"]
label: "Process Owner"
responsibilities: ["Process documentation", "KPI reporting"]
- id: staff
label: "Mitarbeitende"
responsibilities: ["Einhaltung der Verfahren", "NC-Meldung"]
label: "Staff"
responsibilities: ["Following procedures", "Reporting nonconformities"]

# ISO 9001:2015 Gliederung Klauseln 4–10
# ISO 9001:2015 clause structure 4–10
clauses:
- id: "4"
title: "Kontext der Organisation"
title: "Context of the Organisation"
documents: [context_analysis, stakeholder_register, scope]
- id: "5"
title: "Führung"
title: "Leadership"
documents: [quality_policy, org_chart, management_responsibilities]
- id: "6"
title: "Planung"
title: "Planning"
documents: [risk_register, opportunity_register, quality_objectives]
- id: "7"
title: "Unterstützung"
title: "Support"
documents: [resource_plan, competence_matrix, communication_plan, documented_info_procedure]
- id: "8"
title: "Betrieb"
title: "Operation"
documents: [process_map, customer_requirements_procedure, nonconformity_procedure]
- id: "9"
title: "Bewertung der Leistung"
title: "Performance Evaluation"
documents: [internal_audit_procedure, management_review_procedure, kpi_dashboard]
- id: "10"
title: "Verbesserung"
title: "Improvement"
documents: [capa_procedure, continual_improvement_procedure]

documents:
# Klausel 4
# Clause 4
- id: context_analysis
title: "Kontextanalyse (interne/externe Themen)"
title: "Context Analysis (internal / external issues)"
template: null
clause: "4.1"
- id: stakeholder_register
title: "Interessenpartner-Register"
title: "Interested Parties Register"
template: null
clause: "4.2"
- id: scope
title: "Anwendungsbereich des QMS"
title: "QMS Scope"
template: null
clause: "4.3"
# Klausel 5
# Clause 5
- id: quality_policy
title: "Qualitätspolitik"
title: "Quality Policy"
template: policy
clause: "5.2"
- id: org_chart
title: "Organigramm / Verantwortungsmatrix"
title: "Organisation Chart / Responsibility Matrix"
template: null
clause: "5.3"
- id: management_responsibilities
title: "Führungsverantwortung"
title: "Management Responsibilities"
template: null
clause: "5.1"
# Klausel 6
# Clause 6
- id: risk_register
title: "Risikoregister"
title: "Risk Register"
template: null
clause: "6.1"
- id: opportunity_register
title: "Chancenregister"
title: "Opportunity Register"
template: null
clause: "6.1"
- id: quality_objectives
title: "Qualitätsziele und Maßnahmenplan"
title: "Quality Objectives and Action Plan"
template: null
clause: "6.2"
# Klausel 7
# Clause 7
- id: resource_plan
title: "Ressourcenplanung"
title: "Resource Plan"
template: null
clause: "7.1"
- id: competence_matrix
title: "Kompetenzmatrix"
title: "Competency Matrix"
template: null
clause: "7.2"
- id: communication_plan
title: "Kommunikationsplan"
title: "Communication Plan"
template: null
clause: "7.4"
- id: documented_info_procedure
title: "Verfahren: Lenkung dokumentierter Informationen"
title: "Procedure: Control of Documented Information"
template: procedure
clause: "7.5"
# Klausel 8
# Clause 8
- id: process_map
title: "Prozesslandkarte"
title: "Process Map"
template: null
clause: "8.1"
- id: customer_requirements_procedure
title: "Verfahren: Ermittlung Kundenanforderungen"
title: "Procedure: Determination of Customer Requirements"
template: procedure
clause: "8.2"
- id: nonconformity_procedure
title: "Verfahren: Umgang mit Nichtkonformitäten"
title: "Procedure: Control of Nonconforming Outputs"
template: procedure
clause: "8.7"
# Klausel 9
# Clause 9
- id: internal_audit_procedure
title: "Verfahren: Interne Audits"
title: "Procedure: Internal Audits"
template: procedure
clause: "9.2"
- id: management_review_procedure
title: "Verfahren: Management-Review"
title: "Procedure: Management Review"
template: procedure
clause: "9.3"
- id: kpi_dashboard
title: "KPI-Dashboard / Leistungskennzahlen"
title: "KPI Dashboard / Performance Indicators"
template: null
clause: "9.1"
# Klausel 10
# Clause 10
- id: capa_procedure
title: "Verfahren: Korrekturmaßnahmen (CAPA)"
title: "Procedure: Corrective Actions (CAPA)"
template: procedure
clause: "10.2"
- id: continual_improvement_procedure
title: "Verfahren: Kontinuierliche Verbesserung"
title: "Procedure: Continual Improvement"
template: procedure
clause: "10.3"

record_types:
- id: nc
label: "Nichtkonformität (NC)"
label: "Nonconformity (NC)"
clause: "8.7 / 10.2"
fields: [title, description, detected_by, detected_date, severity, root_cause, correction, correction_date, status]
- id: capa
label: "Korrektur-/Vorbeugungsmaßnahme (CAPA)"
label: "Corrective / Preventive Action (CAPA)"
clause: "10.2"
fields: [title, nc_ref, root_cause, action, responsible, due_date, effectiveness_check, status]
- id: audit
label: "Internes Audit"
label: "Internal Audit"
clause: "9.2"
fields: [audit_date, auditor, scope, findings, observations, result, follow_up_date]
- id: kpi
label: "KPI-Messung"
label: "KPI Measurement"
clause: "9.1"
fields: [kpi_id, period, target, actual, trend, action_required]

kpis:
- id: customer_satisfaction
label: "Kundenzufriedenheit"
label: "Customer Satisfaction"
unit: "Score 1–5"
target: ">= 4.0"
frequency: quarterly
clause: "9.1.2"
- id: nc_count
label: "Anzahl Nichtkonformitäten"
unit: "Anzahl"
target: "< Vorperiode"
label: "Number of Nonconformities"
unit: "count"
target: "< previous period"
frequency: monthly
clause: "9.1"
- id: capa_closure_rate
label: "CAPA-Abschlussrate"
label: "CAPA Closure Rate"
unit: "%"
target: ">= 90%"
frequency: monthly
clause: "10.2"
- id: audit_completion
label: "Auditplan-Erfüllung"
label: "Audit Plan Completion"
unit: "%"
target: "100%"
frequency: annually
clause: "9.2"
- id: training_completion
label: "Schulungsplan-Erfüllung"
label: "Training Plan Completion"
unit: "%"
target: ">= 95%"
frequency: annually
clause: "7.2"

capa_states:
- id: open
label: "Offen"
label: "Open"
transitions: [in_progress, cancelled]
- id: in_progress
label: "In Bearbeitung"
label: "In Progress"
transitions: [effectiveness_check, cancelled]
- id: effectiveness_check
label: "Wirksamkeitsprüfung"
label: "Effectiveness Review"
transitions: [closed, in_progress]
- id: closed
label: "Abgeschlossen"
label: "Closed"
transitions: []
- id: cancelled
label: "Zurückgezogen"
label: "Cancelled"
transitions: []
4 changes: 2 additions & 2 deletions config/m365.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Microsoft 365 overlay — SharePoint (docs) + Power Automate (workflows) [Phase 3]
# NOTE (belegt): PnP template engine is PowerShell/.NET-native.
# NOTE (verified): PnP template engine is PowerShell/.NET-native.
# The m365 adapter shells out to PnP PowerShell. See adapters/m365/.

target: m365
Expand All @@ -15,7 +15,7 @@ sharepoint:
client_id: "TODO"
tenant_id: "TODO"
# client_secret via env: SHAREPOINT_CLIENT_SECRET
document_library: "QM-Dokumente"
document_library: "QM Documents"

power_automate:
# Place exported flow definitions in adapters/m365/flows/
Expand Down
22 changes: 11 additions & 11 deletions config/selfhosted.yaml
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
# Self-hosted overlay — XWiki (docs) + Redmine (records) (bestätigt)
# Self-hosted overlay — XWiki (docs) + Redmine (records) (confirmed)
# Copy per client: cp config/selfhosted.yaml config/clients/<client>.yaml

target: selfhosted

organisation: # overrides core.yaml placeholders for this client
name: "TODO: Kundenname GmbH"
short: "TODO: KD"
quality_officer: "TODO: Vorname Nachname"
management: "TODO: Vorname Nachname"
name: "TODO: Client Company Ltd"
short: "TODO: CC"
quality_officer: "TODO: First Last"
management: "TODO: First Last"

xwiki:
base_url: "http://localhost:8080" # TODO: production URL
space_key: "QMS"
username: "TODO"
# password via env: XWIKI_PASSWORD
parent_page: "QM-Handbuch"
# [Nicht verifiziert] Approval/publication workflow may require XWiki Extension.
parent_page: "QM Manual"
# [Not verified] Approval/publication workflow may require XWiki Extension.
# TODO: verify extension availability and configure approval_extension here.

redmine:
base_url: "http://localhost:3000" # TODO: production URL
project_key: "qms"
# api_key via env: REDMINE_API_KEY
# IMPORTANT (verifiziert): custom field DEFINITIONS cannot be created via API.
# IMPORTANT (verified): custom field DEFINITIONS cannot be created via API.
# Run manual setup once before deploying. See docs/redmine-setup.md.
tracker_mapping:
nc: "Nichtkonformität" # must match tracker name in Redmine
nc: "Nonconformity" # must match tracker name in Redmine
capa: "CAPA"
audit: "Internes Audit"
kpi: "KPI-Messung"
audit: "Internal Audit"
kpi: "KPI Measurement"
54 changes: 54 additions & 0 deletions templates/capa_form.md.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# CAPA Form — Corrective Action

| | |
|---|---|
| **CAPA ID** | {{ capa_id }} |
| **Organisation** | {{ org_name }} |
| **Opened** | {{ opened_date }} |
| **Opened by** | {{ opened_by }} |
| **ISO Clause** | 10.2 |

---

## 1. Background

**Source (NC ID / Audit Finding / other trigger):** {{ source_ref }}

**Problem Description:**

TODO: describe the problem

## 2. Immediate Correction

**Action:** TODO
**Completed by:** TODO
**Completed on:** TODO

## 3. Root Cause Analysis

**Method:** ☐ 5-Why ☐ Ishikawa ☐ Other: TODO

**Root Cause Identified:**

TODO: describe root cause

## 4. Corrective Action

| Action | Responsible | Due Date | Done |
|--------|-------------|----------|------|
| TODO | TODO | TODO | ☐ |

## 5. Effectiveness Review

**Review planned for:** TODO
**Review conducted on:** TODO
**Result:** ☐ Effective ☐ Not effective → new CAPA required

## 6. Closure

**Closed on:** TODO
**Closed by:** TODO

---

*ISO 9001:2015 · Clause 10.2 · {{ org_name }}*
Loading