{"openapi":"3.1.0","info":{"title":"aiclaude 제조AI 추론 API","description":"PC(Precast Concrete) 공장용 압축강도 예측·양생 이상감지 API. 배치플랜트·양생실 OPC-UA 태그명을 그대로 입력으로 받으며, 판정 결과를 MES/HMI 역기입 태그 형태로 반환한다.","version":"1.0.0"},"paths":{"/health":{"get":{"tags":["시스템"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/models":{"get":{"tags":["시스템"],"summary":"배포 모델 정보","operationId":"models_api_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/strength/predict":{"post":{"tags":["압축강도"],"summary":"배합 태그로 압축강도 예측·판정","operationId":"strength_predict_api_v1_strength_predict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrengthRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/curing/evaluate":{"post":{"tags":["양생"],"summary":"양생 시계열 이상감지·30분 온도예측","operationId":"curing_evaluate_api_v1_curing_evaluate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CuringRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/batch-completed":{"post":{"tags":["MES 연동"],"summary":"양생 완료 이벤트 → 강도예측 + HMI 역기입 태그 생성","operationId":"batch_completed_api_v1_events_batch_completed_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCompletedEvent"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/demo/state":{"get":{"tags":["시연"],"summary":"실시간 시뮬레이션 상태","operationId":"demo_state_api_v1_demo_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/reports/metrics":{"get":{"tags":["시스템"],"summary":"모델 검증 지표","operationId":"report_metrics_api_v1_reports_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"BatchCompletedEvent":{"properties":{"batch":{"$ref":"#/components/schemas/BatchTags"},"curing":{"items":{"$ref":"#/components/schemas/CuringSample"},"type":"array","minItems":2,"title":"Curing"},"fck":{"type":"number","title":"Fck","default":40},"demold_strength":{"type":"number","title":"Demold Strength","description":"탈형 가능 강도(MPa)","default":15}},"type":"object","required":["batch","curing"],"title":"BatchCompletedEvent"},"BatchTags":{"properties":{"BatchNumber":{"type":"string","title":"Batchnumber","default":"20261024-0001","examples":["20261024-0001"]},"CementWeight":{"type":"number","minimum":0.0,"title":"Cementweight","examples":[430]},"FineAggWeight":{"type":"number","minimum":0.0,"title":"Fineaggweight","examples":[760]},"CoarseAggWeight":{"type":"number","minimum":0.0,"title":"Coarseaggweight","examples":[980]},"StonedustWeight":{"type":"number","minimum":0.0,"title":"Stonedustweight","default":0,"examples":[40]},"WaterWeight":{"type":"number","exclusiveMinimum":0.0,"title":"Waterweight","examples":[172]},"AdmixtureWeight":{"type":"number","minimum":0.0,"title":"Admixtureweight","default":0,"examples":[5.5]},"SlumpValue":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Slumpvalue","examples":[120]},"BatchVolume_m3":{"type":"number","exclusiveMinimum":0.0,"title":"Batchvolume M3","description":"배치 체적(m³). kg/배치 → kg/m³ 환산에 사용","default":1.0}},"type":"object","required":["CementWeight","FineAggWeight","CoarseAggWeight","WaterWeight"],"title":"BatchTags","description":"배치플랜트 OPC-UA 태그 (kg/배치)."},"CuringRequest":{"properties":{"samples":{"items":{"$ref":"#/components/schemas/CuringSample"},"type":"array","minItems":61,"title":"Samples","description":"30초 간격 시계열 (최소 30분+1)"},"ambient":{"type":"number","title":"Ambient","description":"외기온도(°C)","default":15}},"type":"object","required":["samples"],"title":"CuringRequest"},"CuringSample":{"properties":{"Temperature_Zone1":{"type":"number","title":"Temperature Zone1"},"Temperature_Zone2":{"type":"number","title":"Temperature Zone2"},"Humidity":{"type":"number","title":"Humidity"},"SteamPressure":{"type":"number","title":"Steampressure"},"CuringPhase":{"type":"integer","maximum":4.0,"minimum":0.0,"title":"Curingphase"}},"type":"object","required":["Temperature_Zone1","Temperature_Zone2","Humidity","SteamPressure","CuringPhase"],"title":"CuringSample"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"StrengthRequest":{"properties":{"batch":{"$ref":"#/components/schemas/BatchTags"},"age_days":{"type":"number","maximum":365.0,"exclusiveMinimum":0.0,"title":"Age Days","default":28},"fck":{"type":"number","exclusiveMinimum":0.0,"title":"Fck","description":"설계기준강도(MPa)","default":40},"model":{"type":"string","enum":["ensemble","light"],"title":"Model","default":"ensemble"}},"type":"object","required":["batch"],"title":"StrengthRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}