rebase generation

This commit is contained in:
MaKarin
2026-04-07 19:40:41 +03:00
parent 73ddb1a948
commit aab7bfa691
180 changed files with 15512 additions and 364 deletions

View File

@@ -0,0 +1,72 @@
{
"entity": "ChangeEquipmentStatus",
"files": {
"controller": {
"path": "server/src/modules/change-equipment-status/change-equipment-status.controller.ts",
"must_contain": [
"@Controller('change-equipment-status')",
"@UseGuards(",
"JwtAuthGuard",
"RolesGuard",
"@Get()",
"@Post()",
"@Get(':equipmentId/:newStatus')",
"@Patch(':equipmentId/:newStatus')",
"@Delete(':equipmentId/:newStatus')"
],
"must_not_contain": [
"@Put(':equipmentId/:newStatus')"
],
"must_match_regex": [
"@Delete\\(':equipmentId/:newStatus'\\)[\\s\\S]{0,120}@Roles\\('admin'\\)|@Roles\\('admin'\\)[\\s\\S]{0,120}@Delete\\(':equipmentId/:newStatus'\\)"
]
},
"service": {
"path": "server/src/modules/change-equipment-status/change-equipment-status.service.ts",
"must_contain": [
"setListHeaders",
"_start",
"_end",
"_sort",
"_order",
"equipmentId",
"newStatus"
],
"must_match_regex": [
"equipmentId.*(equals|=)",
"newStatus.*in\\b|\\bin\\b.*newStatus"
]
},
"create_dto": {
"path": "server/src/modules/change-equipment-status/dto/create-change-equipment-status.dto.ts",
"must_contain": [
"from 'class-validator'",
"equipmentId!:",
"newStatus!:",
"date!:",
"number?:",
"responsible?:",
"@IsUUID(",
"@IsEnum(",
"@IsString(",
"@IsOptional("
],
"must_not_contain": [
"id?:",
"id!:"
]
},
"update_dto": {
"path": "server/src/modules/change-equipment-status/dto/update-change-equipment-status.dto.ts",
"must_contain": [
"from 'class-validator'",
"@IsOptional(",
"equipmentId?:",
"newStatus?:",
"date?:",
"number?:",
"responsible?:"
]
}
}
}

View File

@@ -0,0 +1,68 @@
{
"entity": "ChangeEquipmentStatus",
"resource": "change-equipment-statuses",
"files": {
"list": {
"path": "client/src/resources/change-equipment-status/ChangeEquipmentStatusList.tsx",
"must_contain": [
"List",
"FilterButton",
"ReferenceField",
"SelectField",
"TextField"
],
"must_match_regex": [
"ReferenceField[\\s\\S]{0,200}reference=\"equipment\"|reference=\"equipment\"[\\s\\S]{0,200}ReferenceField",
"source=\"newStatus\""
]
},
"create": {
"path": "client/src/resources/change-equipment-status/ChangeEquipmentStatusCreate.tsx",
"must_contain": [
"Create",
"SimpleForm",
"ReferenceInput",
"AutocompleteInput",
"SelectInput",
"DateInput"
],
"must_match_regex": [
"ReferenceInput[\\s\\S]{0,200}reference=\"equipment\"|reference=\"equipment\"[\\s\\S]{0,200}ReferenceInput",
"AutocompleteInput[\\s\\S]{0,200}filterToQuery|filterToQuery[\\s\\S]{0,200}AutocompleteInput",
"SelectInput[\\s\\S]{0,200}source=\"newStatus\"|source=\"newStatus\"[\\s\\S]{0,200}SelectInput",
"DateInput[\\s\\S]{0,200}source=\"date\"|source=\"date\"[\\s\\S]{0,200}DateInput"
]
},
"edit": {
"path": "client/src/resources/change-equipment-status/ChangeEquipmentStatusEdit.tsx",
"must_contain": [
"Edit",
"SimpleForm",
"ReferenceInput",
"AutocompleteInput",
"SelectInput",
"DateInput"
],
"must_match_regex": [
"ReferenceInput[\\s\\S]{0,200}reference=\"equipment\"|reference=\"equipment\"[\\s\\S]{0,200}ReferenceInput",
"AutocompleteInput[\\s\\S]{0,200}filterToQuery|filterToQuery[\\s\\S]{0,200}AutocompleteInput",
"SelectInput[\\s\\S]{0,200}source=\"newStatus\"|source=\"newStatus\"[\\s\\S]{0,200}SelectInput",
"DateInput[\\s\\S]{0,200}source=\"date\"|source=\"date\"[\\s\\S]{0,200}DateInput"
]
},
"show": {
"path": "client/src/resources/change-equipment-status/ChangeEquipmentStatusShow.tsx",
"must_contain": [
"Show",
"SimpleShowLayout",
"ReferenceField",
"SelectField",
"DateField"
],
"must_match_regex": [
"ReferenceField[\\s\\S]{0,200}reference=\"equipment\"|reference=\"equipment\"[\\s\\S]{0,200}ReferenceField",
"source=\"newStatus\""
]
}
}
}

View File

@@ -0,0 +1,15 @@
{
"entity": "ChangeEquipmentStatus",
"kebab": "change-equipment-status",
"resource": "change-equipment-statuses",
"description": "Current composite-key status history entity: equipment reference, enum status, date, and optional text metadata",
"tests": [
"dto-decorator-coverage",
"auth-guards-per-http-method",
"composite-key-route",
"fk-reference-input",
"fk-reference-field",
"content-range-header-pattern",
"enum-filter-in-operator"
]
}

View File

@@ -0,0 +1,82 @@
{
"entity": "Equipment",
"files": {
"controller": {
"path": "server/src/modules/equipment/equipment.controller.ts",
"must_contain": [
"@Controller('equipment')",
"@UseGuards(",
"JwtAuthGuard",
"RolesGuard",
"@Get()",
"@Post()",
"@Get(':id')",
"@Patch(':id')",
"@Delete(':id')"
],
"must_not_contain": [
"@Put(':id')",
"@Post(':id')"
],
"must_match_regex": [
"@Delete\\(':id'\\)[\\s\\S]{0,80}@Roles\\('admin'\\)|@Roles\\('admin'\\)[\\s\\S]{0,80}@Delete\\(':id'\\)"
],
"comment": "Equipment controller must expose the CRUD verbs expected by the DSL-compatible React Admin contract."
},
"service": {
"path": "server/src/modules/equipment/equipment.service.ts",
"must_contain": [
"setListHeaders(response",
"_start",
"_end",
"_sort",
"_order",
"q"
],
"must_match_regex": [
"contains\\(|mode.*insensitive|insensitive.*mode",
"status.*in\\b|\\bin\\b.*status"
],
"comment": "Service must translate React Admin list params into Prisma filters and delegate header wiring through the shared helper."
},
"create_dto": {
"path": "server/src/modules/equipment/dto/create-equipment.dto.ts",
"must_contain": [
"from 'class-validator'",
"name!:",
"serialNumber!:",
"dateOfInspection?:",
"commissionedAt?:",
"status?:",
"@IsString(",
"@IsOptional(",
"@IsEnum("
],
"must_not_contain": [
"id?:",
"id!:"
],
"comment": "Required fields use '!' suffix; optional fields use '?' with @IsOptional(); enum fields use @IsEnum(); class-validator must be imported."
},
"update_dto": {
"path": "server/src/modules/equipment/dto/update-equipment.dto.ts",
"must_contain": [
"from 'class-validator'",
"name?:",
"serialNumber?:",
"dateOfInspection?:",
"commissionedAt?:",
"status?:",
"@IsOptional(",
"@IsString(",
"@IsEnum("
],
"must_not_contain": [
"name!:",
"serialNumber!:",
"status!:"
],
"comment": "Update DTO: all fields are optional ('?' suffix with @IsOptional())."
}
}
}

View File

@@ -0,0 +1,67 @@
{
"entity": "Equipment",
"resource": "equipment",
"files": {
"list": {
"path": "client/src/resources/equipment/EquipmentList.tsx",
"must_contain": [
"List",
"FilterButton",
"TextField",
"SelectField",
"name",
"serialNumber"
],
"must_match_regex": [
"SelectArrayInput",
"source=\"status\""
],
"comment": "Equipment list must expose the current fields, filter UI, and enum filters."
},
"create": {
"path": "client/src/resources/equipment/EquipmentCreate.tsx",
"must_contain": [
"Create",
"SimpleForm",
"SelectInput",
"TextInput"
],
"must_match_regex": [
"TextInput[\\s\\S]{0,300}source=\"name\"|source=\"name\"[\\s\\S]{0,300}TextInput",
"TextInput[\\s\\S]{0,300}source=\"serialNumber\"|source=\"serialNumber\"[\\s\\S]{0,300}TextInput",
"DateInput[\\s\\S]{0,300}source=\"dateOfInspection\"|source=\"dateOfInspection\"[\\s\\S]{0,300}DateInput",
"DateInput[\\s\\S]{0,300}source=\"commissionedAt\"|source=\"commissionedAt\"[\\s\\S]{0,300}DateInput",
"SelectInput[\\s\\S]{0,300}source=\"status\"|source=\"status\"[\\s\\S]{0,300}SelectInput"
],
"comment": "Equipment create form must keep type-correct inputs for text, enum, and date fields."
},
"edit": {
"path": "client/src/resources/equipment/EquipmentEdit.tsx",
"must_contain": [
"Edit",
"SimpleForm",
"SelectInput",
"TextInput"
],
"must_match_regex": [
"TextInput[\\s\\S]{0,300}source=\"name\"|source=\"name\"[\\s\\S]{0,300}TextInput",
"TextInput[\\s\\S]{0,300}source=\"serialNumber\"|source=\"serialNumber\"[\\s\\S]{0,300}TextInput",
"DateInput[\\s\\S]{0,300}source=\"dateOfInspection\"|source=\"dateOfInspection\"[\\s\\S]{0,300}DateInput",
"DateInput[\\s\\S]{0,300}source=\"commissionedAt\"|source=\"commissionedAt\"[\\s\\S]{0,300}DateInput"
],
"comment": "Equipment edit form must keep the same type-correctness guarantees as create."
},
"show": {
"path": "client/src/resources/equipment/EquipmentShow.tsx",
"must_contain": [
"Show",
"SimpleShowLayout",
"TextField",
"SelectField",
"name",
"serialNumber"
],
"comment": "Show must display the current equipment identity and status fields."
}
}
}

View File

@@ -0,0 +1,15 @@
{
"entity": "Equipment",
"kebab": "equipment",
"resource": "equipment",
"description": "Current equipment entity: UUID primary key, text fields, nullable date fields, and an enum status field",
"tests": [
"dto-decorator-coverage",
"auth-guards-per-http-method",
"content-range-header-pattern",
"enum-filter-in-operator",
"q-filter-contains-pattern",
"react-admin-component-types",
"class-validator-import"
]
}