first commit

This commit is contained in:
2026-01-02 19:20:35 +09:00
commit a10cb30c4a
94 changed files with 28609 additions and 0 deletions

602
schema.json Normal file
View File

@@ -0,0 +1,602 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://example.com/schema/procedure.json",
"title": "Procedure Configuration Schema",
"description": "Schema for intelligent calibrator procedure configuration. Structure: Procedure → TestTaskGroup/ResultDisplay → TestActivityGroup → TestAction",
"type": "object",
"required": ["procedure", "tables"],
"properties": {
"procedure": {
"type": "object",
"description": "Main procedure definition",
"required": ["id", "name", "version", "activitySequence"],
"properties": {
"id": {
"type": "string",
"description": "Unique procedure identifier"
},
"name": {
"type": "string",
"description": "Procedure display name"
},
"version": {
"type": "string",
"description": "Procedure version"
},
"document": {
"type": "string",
"description": "Procedure documentation in HTML/Markdown"
},
"metadata": {
"type": "object",
"description": "Additional procedure metadata"
},
"activitySequence": {
"type": "array",
"description": "Top-level activity sequence: testTaskGroups and resultDisplays",
"items": {
"anyOf": [
{ "$ref": "#/$defs/testTaskGroup" },
{ "$ref": "#/$defs/resultDisplay" },
{ "$ref": "#/$defs/activityReference" }
]
},
"minItems": 1
}
}
},
"tables": {
"type": "object",
"description": "Reusable table definitions for data storage and display",
"additionalProperties": { "$ref": "#/$defs/tableDefinition" }
},
"testTaskGroups": {
"type": "object",
"description": "Reusable test task group definitions",
"additionalProperties": { "$ref": "#/$defs/testTaskGroup" }
},
"testActivityGroups": {
"type": "object",
"description": "Reusable test activity group definitions",
"additionalProperties": { "$ref": "#/$defs/testActivityGroup" }
},
"testActions": {
"type": "object",
"description": "Reusable test action definitions",
"additionalProperties": { "$ref": "#/$defs/testAction" }
},
"resultDisplays": {
"type": "object",
"description": "Reusable result display definitions",
"additionalProperties": { "$ref": "#/$defs/resultDisplay" }
},
"fieldDefinitions": {
"type": "object",
"description": "Reusable field definitions for tables",
"additionalProperties": { "$ref": "#/$defs/fieldDefinition" }
}
},
"$defs": {
"testTaskGroup": {
"type": "object",
"description": "Top-level test task group containing multiple test activity groups",
"required": ["id", "name", "stages"],
"properties": {
"id": {
"type": "string",
"description": "Unique test task group identifier"
},
"name": {
"type": "string",
"description": "Test task group display name"
},
"metadata": {
"type": "object",
"description": "Additional metadata"
},
"stages": {
"type": "array",
"description": "Ordered sequence of test activity groups (stages)",
"items": {
"anyOf": [
{ "$ref": "#/$defs/testActivityGroup" },
{ "$ref": "#/$defs/groupReference" }
]
},
"minItems": 1
}
}
},
"resultDisplay": {
"type": "object",
"description": "Result display activity for showing test results",
"required": ["id"],
"properties": {
"id": {
"type": "string",
"description": "Unique result display identifier"
},
"name": {
"type": "string",
"description": "Result display title"
},
"document": {
"type": "string",
"description": "Display instructions in HTML/Markdown"
},
"tableRefs": {
"type": "array",
"items": { "$ref": "#/$defs/tableReference" }
}
}
},
"testActivityGroup": {
"type": "object",
"description": "Test activity group containing multiple test actions",
"required": ["id", "name", "actions"],
"properties": {
"id": {
"type": "string",
"description": "Unique activity group identifier"
},
"name": {
"type": "string",
"description": "Activity group display name"
},
"document": {
"type": "string",
"description": "Documentation in HTML/Markdown"
},
"metadata": {
"type": "object",
"description": "Additional metadata"
},
"tableRefs": {
"type": "array",
"items": { "$ref": "#/$defs/tableReference" }
},
"actions": {
"type": "array",
"description": "Array of test actions in this group, or references to them",
"items": {
"anyOf": [
{ "$ref": "#/$defs/testAction" },
{ "$ref": "#/$defs/testActionReference" }
]
},
"minItems": 1
}
}
},
"testAction": {
"type": "object",
"description": "Individual test action (measurement, check, or data acquisition)",
"required": ["id", "document", "mode"],
"properties": {
"id": {
"type": "string",
"description": "Unique test action identifier"
},
"document": {
"type": "string",
"description": "Instructions/documentation in HTML/Markdown"
},
"mode": {
"type": "string",
"enum": ["manual", "auto"],
"description": "Execution mode: manual requires user input, auto attempts automatic data acquisition"
},
"functionType": {
"type": "string",
"description": "Function type for this test action (e.g., RESISTANCE_4WIRE, VOLTAGE_V, etc.)"
},
"channel": {
"type": "string",
"enum": ["input1", "input2", "output1", "output2"],
"description": "Channel used for this test action: input1, input2, output1, or output2"
},
"functionParameters": {
"description": "Function-specific parameters as key-value pairs",
"oneOf": [
{
"type": "object"
},
{
"type": "array"
}
]
},
"metadata": { "type": "object" },
"dataFields": {
"type": "array",
"items": { "$ref": "#/$defs/fieldSelector" }
},
"validationCriteria": { "type": "object" },
"uploadStrategy": {
"type": "string",
"enum": ["immediate", "onComplete", "inherit"],
"default": "inherit",
"description": "Data upload strategy for this action: immediate (upload after action), onComplete (upload with table), inherit (use table's strategy)"
},
"uploadFields": {
"type": "array",
"description": "Specific fields to upload immediately after this action completes",
"items": { "type": "string" }
}
},
"allOf": [
{
"oneOf": [
{
"properties": { "mode": { "const": "auto" } },
"required": ["functionType", "functionParameters"],
"description": "Auto mode check items must define functionType and functionParameters"
},
{
"properties": { "mode": { "const": "manual" } }
}
]
},
{
"oneOf": [
{
"properties": {
"functionType": {
"enum": [
"DATA_ACQUISITION",
"DATA_ACQUISITION_WITH_VALIDATION"
]
}
}
},
{ "required": ["channel"] }
]
}
]
},
"tableDefinition": {
"type": "object",
"description": "Table definition for data storage (grid or form layout)",
"required": ["id", "name"],
"properties": {
"id": {
"type": "string",
"description": "Unique table identifier"
},
"name": {
"type": "string",
"description": "Table display name"
},
"description": {
"type": "string",
"description": "Table description"
},
"tableType": {
"type": "string",
"enum": ["grid", "form", "series"],
"default": "grid",
"description": "Table layout type: grid for row-column table, form for key-value layout, series for time-series data recording"
},
"layoutConfig": {
"type": "object",
"description": "Layout configuration for form-type tables",
"properties": {
"totalColumns": {
"type": "integer",
"default": 12,
"description": "Total columns in grid system (typically 12)"
}
}
},
"isShared": { "type": "boolean", "default": false },
"uploadStrategy": {
"type": "string",
"enum": ["immediate", "grouped", "byRow", "onComplete"],
"default": "onComplete",
"description": "Data upload strategy: immediate (per field), grouped (per group), byRow (per row), onComplete (entire table)"
},
"uploadGroups": {
"type": "array",
"description": "Upload groups for grouped upload strategy, supporting field groups or specific cells by row-column position",
"items": { "$ref": "#/$defs/fieldSelector" }
},
"columnHeaders": {
"type": "array",
"description": "Column headers for grid-type tables, or references to them",
"items": {
"anyOf": [
{ "$ref": "#/$defs/fieldDefinition" },
{ "$ref": "#/$defs/fieldDefinitionReference" }
]
}
},
"rowHeaders": {
"type": "array",
"description": "Row headers for grid-type tables",
"items": {
"type": "object",
"required": ["id", "name"],
"properties": {
"id": { "type": "string" },
"name": { "type": "string" }
}
}
},
"staticCells": {
"type": "array",
"description": "Static content entries for tables. Each entry selects one or more cells/fields via fieldSelector and renders fixed text.",
"items": {
"type": "object",
"field": {
"type": "string",
"description": "Field ID (for form-type tables)"
},
"row": {
"oneOf": [
{ "type": "string", "description": "Row ID" },
{
"type": "integer",
"description": "Row index (0-based)"
}
]
},
"column": {
"oneOf": [
{ "type": "string", "description": "Column ID" },
{
"type": "integer",
"description": "Column index (0-based)"
}
]
},
"content": {
"type": "string",
"description": "Static text content to display. When targeting form fields, the field is treated as read-only and shows this fixed value."
},
"oneOf": [
{ "required": ["field", "content"] },
{ "required": ["row", "column", "content"] }
]
}
},
"fields": {
"type": "array",
"description": "Fields for form-type and time-series tables, or references to them",
"items": {
"anyOf": [
{ "$ref": "#/$defs/fieldDefinition" },
{ "$ref": "#/$defs/fieldDefinitionReference" }
]
}
}
},
"oneOf": [
{
"properties": { "tableType": { "const": "form" } },
"required": ["fields"],
"description": "Form-type tables must define fields"
},
{
"properties": { "tableType": { "const": "grid" } },
"required": ["columnHeaders", "rowHeaders"],
"description": "Grid-type tables must define columnHeaders and rowHeaders"
},
{
"properties": { "tableType": { "const": "series" } },
"required": ["fields"],
"description": "Time-series tables must define fields"
}
]
},
"fieldDefinition": {
"type": "object",
"description": "Field definition for table columns or form fields",
"required": ["id", "name"],
"properties": {
"id": {
"type": "string",
"description": "Unique field identifier"
},
"name": {
"type": "string",
"description": "Field display name"
},
"type": {
"type": "string",
"enum": [
"numeric",
"text",
"selection",
"boolean",
"datetime",
"calculated"
]
},
"defaultValue": {
"description": "Default value for the field"
},
"options": {
"type": "array",
"description": "Options for selection type fields"
},
"formula": {
"type": "string",
"description": "Formula for calculated type fields"
},
"validationRules": {
"type": "object",
"properties": {
"min": { "type": "number" },
"max": { "type": "number" },
"precision": { "type": "integer", "minimum": 0 },
"pattern": { "type": "string" },
"minLength": { "type": "integer", "minimum": 0 },
"maxLength": { "type": "integer", "minimum": 0 },
"required": { "type": "boolean" }
}
},
"isRequired": { "type": "boolean", "default": false },
"isReadOnly": { "type": "boolean", "default": false },
"unit": { "type": "string" },
"description": { "type": "string" },
"uploadImmediately": {
"type": "boolean",
"default": false,
"description": "Whether to upload this field immediately after value change"
},
"layoutConfig": {
"type": "object",
"description": "Layout configuration for form-type tables",
"properties": {
"labelSpan": {
"type": "integer",
"minimum": 1,
"maximum": 11,
"default": 1,
"description": "Columns occupied by field label"
},
"valueSpan": {
"type": "integer",
"minimum": 1,
"maximum": 11,
"default": 11,
"description": "Columns occupied by field value"
},
"rowSpan": {
"type": "integer",
"minimum": 1,
"default": 1,
"description": "Rows occupied by this field"
},
"order": {
"type": "integer",
"description": "Display order in form layout"
}
}
}
},
"oneOf": [
{
"properties": { "type": { "const": "selection" } },
"required": ["options"],
"description": "Selection-type fields must define options"
},
{
"properties": { "type": { "const": "calculated" } },
"required": ["formula"],
"description": "Calculated-type fields must define formula"
},
{
"properties": {
"type": {
"enum": ["numeric", "text", "boolean", "datetime"]
}
}
}
]
},
"fieldSelector": {
"type": "object",
"description": "Selector for table fields or cells, supporting both form-type (field IDs) and grid-type (row-column positions) tables",
"properties": {
"tableRef": { "$ref": "#/$defs/tableReference" },
"fields": {
"type": "array",
"items": { "type": "string" },
"description": "Array of field IDs (for form-type tables)"
},
"cells": {
"type": "array",
"description": "Array of specific cells by row-column position (for grid-type tables)",
"items": {
"type": "object",
"required": ["row", "column"],
"properties": {
"row": {
"oneOf": [
{ "type": "string", "description": "Row ID" },
{ "type": "integer", "description": "Row index (0-based)" }
]
},
"column": {
"oneOf": [
{ "type": "string", "description": "Column ID" },
{
"type": "integer",
"description": "Column index (0-based)"
}
]
}
}
}
},
"ignore": {
"type": "boolean",
"default": false,
"description": "Whether to skip this field when filling table data from function return values"
}
},
"oneOf": [
{ "required": ["fields"] },
{ "required": ["cells"] },
{
"properties": { "ignore": { "const": true } },
"required": ["ignore"]
}
]
},
"activityReference": {
"type": "object",
"description": "Reference to a top-level activity (testTaskGroup or resultDisplay)",
"required": ["$ref"],
"properties": {
"$ref": {
"type": "string",
"pattern": "^#/(testTaskGroups|resultDisplays)/.+$",
"description": "JSON Pointer to a testTaskGroup or resultDisplay"
}
}
},
"groupReference": {
"type": "object",
"description": "Reference to a test activity group",
"required": ["$ref"],
"properties": {
"$ref": {
"type": "string",
"pattern": "^#/testActivityGroups/.+$",
"description": "JSON Pointer to a testActivityGroup"
}
}
},
"testActionReference": {
"type": "object",
"description": "Reference to a test action",
"required": ["$ref"],
"properties": {
"$ref": {
"type": "string",
"pattern": "^#/testActions/.+$",
"description": "JSON Pointer to a testAction"
}
}
},
"fieldDefinitionReference": {
"type": "object",
"description": "Reference to a field definition",
"required": ["$ref"],
"properties": {
"$ref": {
"type": "string",
"pattern": "^#/fieldDefinitions/.+$",
"description": "JSON Pointer to a fieldDefinition"
}
}
},
"tableReference": {
"type": "string",
"pattern": "^#/tables/.+$",
"description": "JSON Pointer to a table definition (e.g., #/tables/myTable)"
}
}
}