Procedures and Test Steps¶
Calibration procedures define the standardized workflow of a calibration. Procedures are managed on their own page under Inventory → Procedures; the individual test steps belong to a calibration and are edited and executed there in the "Test steps" tab.
Procedure management¶
The procedure list (/procedure) is a full grid (column filters, sorting, multi-select delete). The detail page offers the tabs Details, Device types, Test plans and Standard procedure.
Procedure fields¶
| Field | Description |
|---|---|
| Name | Procedure name (required) |
| Calibration item | What is calibrated (e.g. "Digital Multimeter") |
| Calibration method | Method (e.g. "Comparison") |
| Description | Detailed description of the procedure |
| Measurement conditions | Ambient conditions (e.g. "23 °C, 50 % r.h.") |
| Standards | Reference to the underlying standards |
| Scope | Area of application |
Duplicate (POST /api/v2/procedures/{id}/duplicate) creates a copy including device-type links, with "(Kopie)" appended to the name.
Pre-filling the header texts with AI¶
These six fields end up on the calibration certificate. They rarely stay empty out of carelessness — they are wording work, not data entry. The AI assistant can draft them: detail page → "Mehr" → "Kopftexte mit KI vorausfüllen".
The basis is what the procedure has assigned to it, not its name alone. The server reads the assigned device types, a sample of the devices behind them, and the specification sheets of those types with their ranges, resolutions and accuracies. The more of that is maintained, the more precise the text gets: "101 Federmanometer -1 bis 30 bar" plus a specification sheet yields a calibration item with range and accuracy class; without any assignment the suggestion stays generic. The dialog states what the result was derived from.
Options in the dialog:
- Fields — which of the six to draft. Unselected fields are not even asked for.
- Only empty fields (on by default) — existing wording is left untouched and is not transmitted to the AI either.
- Hint — anything not held in the record: method, reference standard used, your lab's ambient conditions.
Every suggestion is shown next to the current value and can be rejected individually. Only those that actually change something are preselected. Nothing is stored until you apply, and only what stayed checked — through the same path as a manual edit, so permission checks and the audit trail apply.
Check standards and measurement conditions
The model is instructed not to name any standard that does not follow from the supplied data, and never to reproduce the contents of a guideline. A suggested standard is still a suggestion, not a verified basis of testing — on a calibration certificate it is an assurance given to the customer. The same goes for measurement conditions: "23 °C ± 2 K" is the usual lab figure, but only your lab knows whether it holds there.
Prerequisites: an administrator enables the feature under Administration → KI-Assistent → Konfiguration ("Textvorschläge für Prozedurköpfe"); it is off by default. Using it requires ai_assistant_edit and procedure_edit. What exactly is transmitted is listed in the dialog under "Was an die KI übermittelt wird" — the device sample follows your own inventory visibility.
GET /api/v2/ai/procedure-text/availability
POST /api/v2/ai/procedure-text # { "procedure_id": "...", "only_empty": true }
The endpoint stores nothing; it answers with suggestions. Time budget 120 s, configurable via AI_PROCEDURE_TEXT_BUDGET_S.
Assigning device types¶
The "Device types" tab links the procedure to one or more device types via an assignment list:
GET /api/v2/procedures/{id}/types
POST /api/v2/procedures/{id}/types # { "type_id": "..." }
DELETE /api/v2/procedures/{id}/types/{typeId}
This link is purely informational ("this procedure knows these device types"). It does not decide which procedure applies to a device automatically — that is the standard procedure (see below).
Standard procedure per device type¶
The "Standard procedure" tab sets the procedure, directly from its own page, as the standard procedure for one or more device types. It then applies automatically to every device of that type. This is the procedure-side view of the same assignment that can also be managed on the device type and on the individual device.
- On assignment the procedure becomes the type's effective standard (
make_default). If the type already had a different standard procedure, it is superseded but kept as an additional assignment. - A device type can have several assigned procedures; exactly one is the standard (marked "Standard"). "Als Standard" promotes an inactive assignment to the type standard.
- Resolution/precedence: a device-level assignment overrides the type standard. Without a device-level assignment, the type standard applies.
GET /api/v2/procedures/{id}/standard-for-types
POST /api/v2/procedures/{id}/standard-for-types # { "type_id": "...", "make_default": true }
PUT /api/v2/procedures/{id}/standard-for-types/{typeId}/default
PUT /api/v2/procedures/{id}/standard-for-types/{typeId}/template # { "template_hash": "..." | null }
GET /api/v2/procedures/{id}/template-usage
DELETE /api/v2/procedures/{id}/standard-for-types/{typeId}
Test steps¶
Test steps are the individual measurement points of a calibration. The hierarchical step number (test_step, e.g. 1.001, 1.002, 2.001) is managed automatically: each row increments the minor digit; a Manual Test or Rating step closes the block.
| Property | Description |
|---|---|
| Order / step number | Managed automatically (up/down buttons to reorder) |
| Description | Name of the test step |
| Test type | Manual Test, Rating, Header, Comment, Message |
| Configuration | e.g. NUMERIC,UUT INDICATED (numeric measurement) or TEXT(Y=PASS) (confirmation) |
| Test value / prefix / unit | Nominal or reference value with SI prefix |
| Tolerance | Grammar: 1% (value-based), 2/ (range-based), 2U (absolute), 5D (resolution-based); combinable (1% 2D); for ratings: 1-2:fail\|3-5:pass |
| Uncertainty | Expanded measurement uncertainty (drives the guard bands) |
Execution (wizard)¶
The "Execute" button in the test-steps tab starts the execution wizard, which walks the steps in order:
- Numeric measurement: enter the measured value with SI prefix/unit — limits, guard bands, tolerance usage and Pass/Fail are computed server-side and shown immediately.
- Confirmation: passed / not passed (Y/N).
- Rating: grade 1–5; the rating map in the tolerance decides Pass/Fail.
- Info steps (comment, message, header) are shown and skipped.
Every action immediately writes a row into the measurement results.
GET /api/v2/calibrations/{id}/wizard # steps incl. results
POST /api/v2/test-steps/{id}/submit-measurement # { "varq": 10.1, "varq_p": "m", "varq_u": "V" }
POST /api/v2/test-steps/{id}/confirm-manual # { "pass": "Y" }
POST /api/v2/test-steps/{id}/confirm-rating # { "rating": 4 }
POST /api/v2/test-steps/{id}/clone
POST /api/v2/calibrations/{id}/test-steps/reorder # { "ordered_ids": [...] }
Test plans¶
Test sequences can be saved as versioned test plans and loaded into other calibrations.
Standard test plan per device type¶
The test plan that applies to a device type can be chosen from either side: on the device type (or device) under its standard procedure, or in the procedure's Test plans tab. The column Standard test plan for lists, per plan, the device types it is chosen for (blue: the procedure is that type's standard procedure; grey: it is not, so the plan does not apply yet) and how many devices chose it themselves. The row menu entry Standard test plan for device types sets or clears it for a type of the procedure; the devices' "standard test plan" field follows the choice. Devices with their own choice keep their plan. The device field "standard test plan" itself is read-only; on the device, the link Change in test requirements leads to the plan choice. Setting it requires procedure_edit and does not change which procedure is the type's standard.
Permissions¶
| Operation | Permission |
|---|---|
| View procedures | procedure_view |
| Create/edit procedures, type assignment, standard procedure per type | procedure_edit |
| Delete procedures | procedure_delete |
| View test steps (incl. wizard data) | calibration_view |
| Edit/execute test steps | calibration_edit |