feat: 06-17 신규 작업본 반영 (개발사양서/기능검토/승인원/Source 등 추가)

.claude/ 제외(.gitignore 추가). 기존 초기커밋(5a96a69) 위에 신규·수정·이동분 커밋.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-18 07:54:58 +09:00
parent 5a96a696b1
commit 096111e983
529 changed files with 12439 additions and 1166 deletions
@@ -65,6 +65,25 @@ namespace ErvDashboard
MPm10.Text = $"{_state.Pm10Thr[p][3] + 1}~"; MVoc.Text = $"{_state.VocThr[p][3] + 1}~";
}
// 사양서 기본값으로 표 채우기 (전송은 '변경'에서) — 개발사양서 p.10
void FillDefaults(int p)
{
TCo2_1.Text = DashboardState.DefCo2Thr[p][0].ToString(); TCo2_2.Text = DashboardState.DefCo2Thr[p][1].ToString(); TCo2_3.Text = DashboardState.DefCo2Thr[p][2].ToString(); TCo2_4.Text = DashboardState.DefCo2Thr[p][3].ToString();
TPm25_1.Text = DashboardState.DefPm25Thr[p][0].ToString(); TPm25_2.Text = DashboardState.DefPm25Thr[p][1].ToString(); TPm25_3.Text = DashboardState.DefPm25Thr[p][2].ToString(); TPm25_4.Text = DashboardState.DefPm25Thr[p][3].ToString();
TPm10_1.Text = DashboardState.DefPm10Thr[p][0].ToString(); TPm10_2.Text = DashboardState.DefPm10Thr[p][1].ToString(); TPm10_3.Text = DashboardState.DefPm10Thr[p][2].ToString(); TPm10_4.Text = DashboardState.DefPm10Thr[p][3].ToString();
TVoc_1.Text = DashboardState.DefVocThr[p][0].ToString(); TVoc_2.Text = DashboardState.DefVocThr[p][1].ToString(); TVoc_3.Text = DashboardState.DefVocThr[p][2].ToString(); TVoc_4.Text = DashboardState.DefVocThr[p][3].ToString();
var d = DashboardState.DefDeadband[p];
DCo2.Text = d.Co2.ToString(); DPm25.Text = d.Pm25.ToString(); DPm10.Text = d.Pm10.ToString(); DVoc.Text = d.Voc.ToString();
MCo2.Text = $"{DashboardState.DefCo2Thr[p][3] + 1}~"; MPm25.Text = $"{DashboardState.DefPm25Thr[p][3] + 1}~";
MPm10.Text = $"{DashboardState.DefPm10Thr[p][3] + 1}~"; MVoc.Text = $"{DashboardState.DefVocThr[p][3] + 1}~";
}
// '읽어오기' : ERV 통신값(=_state, STATUS로 갱신)으로 표 재채움 (편집 내용 버림)
void Read_Click(object sender, RoutedEventArgs e) => FillGrid((int)_state.HystPreset);
// '프리셋' : 사양서 기본값으로 표 채움 (전송은 '변경')
void PresetDefault_Click(object sender, RoutedEventArgs e) => FillDefaults((int)_state.HystPreset);
static int P(TextBox tb) { int.TryParse(tb.Text, out int v); return v < 0 ? 0 : v > 65535 ? 65535 : v; }
void Preset_Click(object sender, RoutedEventArgs e)