Files
HC900-Crawler/src/Hc900Crawler/appsettings.json
windpacer 30a3286d35 feat(report): 적산(.QV) 정확 메트릭 + 물질수지 폐합 + 웹 대시보드
PV-중앙값 근사 대신 유량 적산(.QV)으로 정확한 적분 메트릭 추가, 웹에서 바로 보기.

- QV 메트릭 4종: production_total·yield_qv·energy_intensity_qv·mass_balance_closure.
  적산 Δ 헬퍼(QvDeltaAsync)는 값 급감(reset/wrap)으로 구간분할 후 구간별 (마지막-처음)
  합산 → gap·양자화 강건, DCS 일일적산과 동일 의미(노이즈 과대계상 없음).
- 매핑은 appsettings SteamAdvisor:Columns 재사용(.QV 치환, 7컬럼). 폐합 스트림은
  Report:Closure:C-6111(Feed + Outputs[제품·경비물·중비물]).
- 웹 대시보드: GET /api/report/columns, /api/report/summary →
  리포트 탭에서 컬럼·날짜 선택 시 물질수지 신뢰블록(IN/OUT/폐합%, 98~101% 색상)
  + 메트릭 표를 즉시 렌더. 엑셀 export와 병존.
- 물리적 타당성 게이트: 수율>1.5·에너지원단위>5·≤0 → no_data+사유(garbage 차단).

검증(2026-05-15 C-6111): 생산 8455kg·수율 0.8739·에너지 0.7791·폐합 99.04%
(feed 9675/out 9582), 17주 폐합 99.1~99.8%. C-9111 garbage 수율 → no_data 처리 확인.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 07:54:34 +09:00

105 lines
3.8 KiB
JSON

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.EntityFrameworkCore": "Warning",
"Microsoft.EntityFrameworkCore.Database.Command": "Warning",
"Hc900Crawler.Infrastructure.Hc900.Hc900HistoryService": "Warning",
"Hc900Crawler.Infrastructure.Control.FeedforwardSupervisor": "None",
"Hc900Crawler.Infrastructure.Control.FeedforwardConfigStore": "None",
"Hc900Crawler.Infrastructure.Kb.KbIngestWorker": "Warning",
"Hc900Crawler.Infrastructure.Kb.KbStartupService": "Warning"
},
"Console": {
"LogLevel": {
"Default": "Information",
"Microsoft.EntityFrameworkCore": "Warning",
"Hc900Crawler.Infrastructure.Control.FeedforwardSupervisor": "None"
},
"FormatterName": "simple",
"FormatterOptions": {
"TimestampFormat": "HH:mm:ss "
}
}
},
"AllowedHosts": "*",
"Cors": {
"AllowedOrigins": [ "*" ]
},
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=iiot_platform;Username=postgres;Password=postgres;Search Path=hc900"
},
"Hc900": {
"GatewayAddress": "http://localhost:50051",
"PollIntervalMs": 1000
},
"PidControllers": {
"Enabled": true
},
"Feedforward": {
"SimOverrideEnabled": true,
"FeedRampDryRun": false,
"FeedRampStepSec": 10
},
"McpServer": {
"WorkingDirectory": "../../mcp-server"
},
"Sinam": {
"ScriptPath": "scripts/build_register_map_from_sinam.py",
"WorkingDirectory": "/home/windpacer/projects/hc900_ax",
"UploadDir": "docs/uploads",
"OutputDir": "docs",
"ProcessTimeoutSeconds": 120
},
"DocBrowser": {
"Root": "/home/windpacer/projects/hc900_ax",
"MaxTextBytes": 2097152,
"MaxUploadBytes": 52428800
},
"Kb": {
"QdrantUrl": "http://localhost:6333",
"VectorSize": 768,
"StorageRoot": "../../storage/kb",
"AdminInitialPassword": "admin",
"AdminSessionMinutes": 60,
"WorkerPollIntervalSeconds": 2,
"MaxAttempts": 3,
"Throttle": {
"MaxFailAttempts": 5,
"FailWindowMinutes": 5,
"LockoutMinutes": 15
}
},
"SteamAdvisor": {
"ModelPath": "/home/windpacer/projects/hc900_ax/scripts/analysis/C-6PG-Dump-20260605111_model.json",
"PlotDataDir": "/home/windpacer/projects/hc900_ax/scripts/analysis",
"ModelDir": "/home/windpacer/projects/hc900_ax/scripts/analysis",
"DefaultColumn": "C-6111",
"Columns": {
"C-6111": { "Feed": "FICQ-6101.PV", "Product": "FICQ-6118.PV", "TC": "TI-6111C.PV", "SteamOp": "TICA-6111A.OP", "SteamFlow": "FIQ-6115" },
"C-6211": { "Feed": "FICQ-6201.PV", "Product": "FICQ-6218.PV", "TC": "TI-6211C.PV", "SteamOp": "TICA-6211A.OP", "SteamFlow": "FIQ-6215" },
"C-8111": { "Feed": "FICQ-8101.PV", "Product": "FICQ-8118.PV", "TC": "TI-8111C.PV", "SteamOp": "TICA-8111A.OP", "SteamFlow": "FIQ-8115" },
"C-9111": { "Feed": "FICQ-9101.PV", "Product": "FICQ-9118.PV", "TC": "TI-9111C.PV", "SteamOp": "TICA-9111A.OP", "SteamFlow": "FIQ-9115" },
"C-9211": { "Feed": "FICQ-9201.PV", "Product": "FICQ-9218.PV", "TC": "TI-9211C.PV", "SteamOp": "TICA-9211A.OP", "SteamFlow": "FIQ-9215" },
"C-10111": { "Feed": "FICQ-10101.PV", "Product": "FICQ-10118.PV", "TC": "TI-10111C.PV", "SteamOp": "TICA-10111A.OP", "SteamFlow": "FIQ-10115" },
"C-10211": { "Feed": "FICQ-10201.PV", "Product": "FICQ-10218.PV", "TC": "TI-10211C.PV", "SteamOp": "TICA-10211A.OP", "SteamFlow": "FIQ-10215" }
}
},
"Report": {
"Closure": {
"C-6111": { "Feed": "FICQ-6101", "Outputs": [ "FICQ-6118", "FICQ-6114", "FICQ-6116" ] }
}
},
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://0.0.0.0:5000"
}
},
"Limits": {
"MaxRequestBodySize": 104857600
}
}
}