1. 공교육 현장과 국방·보안 시설의 태스크 관리 딜레마: "편리함 뒤에 숨은 개인정보·기밀 유출 리스크"
현대 공공 업무 환경에서 교원과 연구원들은 수많은 다중 과업(Multi-Tasking)을 동시다발적으로 처리해야 합니다. 그러나 기존 업무 도구 환경은 심각한 보안 규제와 충돌합니다:
- 개인정보보호법 및 NEIS 연동 지침 위반: 학생의 실명, 성적, 건강 상태, 가정사 등이 포함된 메모를 클라우드 기반 투두 앱에 기록하는 것은 명백한 공공 데이터 국외 유출이자 감사 적발 대상입니다.
- 망분리(Air-Gap) PC에서의 먹통 현상: 국방망, 행정전산망, 시험지 출제 전산실 등 물리적 망분리가 적용된 PC에서는 웹 브라우저를 통한 클라우드 접속 자체가 차단되므로 기존 생산성 도구를 일체 사용할 수 없습니다.
- 윈도우 기본 스티커 메모(Sticky Notes)의 한계: 우선순위 분류 기능이 없어 중요한 공문 제출 마감이나 학생 안전 조치가 잡다한 메모 속에 파묻혀 기한을 넘기는 사고가 빈번합니다.
2. 상용 클라우드 SaaS(Notion/Todoist/Trello)의 구조적 한계: "폐쇄망 미작동과 일렉트론 메모리 낭비"
일반 기업용 클라우드 서비스들은 교육·국방 행정용 단말기에 도입하기에 다음과 같은 구조적 결함을 안고 있습니다:
- 상시 네트워크 연결 강제: 인터넷이 연결되지 않으면 로그인 토큰이 만료되어 앱이 열리지 않거나, 오프라인 변경 사항이 동기화 충돌로 증발합니다.
- 일렉트론(Electron) 런타임의 과도한 메모리 누수: 웹 브라우저 전체를 래핑한 상용 앱들은 할 일 몇 개를 띄워두는 것만으로 400MB~800MB의 RAM을 점유하여 8GB 이하 저사양 교원용 PC를 급격히 느려지게 만듭니다.
- 계정 가입 및 유료 구독료 단속: 팀 협업이나 고급 필터링 기능을 사용하려면 단말당 월 수 달러의 유료 구독을 강제하여 공공 예산 집행에 걸림돌이 됩니다.
(! / !!)"} P2["🔴 긴급 (Priority=2)
'!! 기말고사 출제 마감'"] P1["🟡 중요 (Priority=1)
'! 학부모 상담 일지'"] P0["⚪ 보통 (Priority=0)
'교무실 비품 수령'"] end subgraph ENGINE_LAYER["⚙️ ZeliTodo 인메모리 반응형 거버넌스"] MEM["Observable List<TodoItem> 수집"] SORT["다중 키 정렬 파이프라인
OrderBy(Done) ➔ ThenByDescending(Priority)"] STATS["실시간 텔레메트리 계측
(총 건수 / 완료율% / 미완료 긴급 건수)"] end subgraph STORAGE_LAYER["💾 완전 격리 온디바이스 영속화"] LOCAL["Windows.Storage.ApplicationData.Current.LocalSettings"] JSON["System.Text.Json 초고속 직렬화/역직렬화"] ZERO["🚫 외부 네트워크 트래픽 0바이트 (Air-Gapped)"] end RAW --> PARSE PARSE -->|'!! '| P2 PARSE -->|'! '| P1 PARSE -->|일반| P0 P2 & P1 & P0 --> MEM MEM --> SORT --> STATS MEM -->|원자적 저장| JSON --> LOCAL --> ZERO
3. ApplicationData LocalSettings 기반 완전 오프라인 샌드박스 영속화 아키텍처
ZeliTodo는 외부 데이터베이스나 별도의 클라우드 동기화 데몬을 일체 사용하지 않습니다. 대신 Windows 운영체제가 제공하는 UWP/WinUI 3 공식 샌드박스 스토리지인 Windows.Storage.ApplicationData.Current.LocalSettings를 직접 활용합니다.
사용자가 태스크를 추가하거나 체크박스를 토글할 때마다 고성능 System.Text.Json 직렬화 엔진이 인메모리 리스트를 즉각 로컬 컨테이너에 원자적(Atomic)으로 커밋하므로, 불시의 PC 정전이나 강제 종료 시에도 데이터 유실 위험이 0%입니다:
// ── Windows LocalSettings 기반 온디바이스 영속화 파이프라인 ──
private void SaveTodos()
{
try
{
var settings = Windows.Storage.ApplicationData.Current.LocalSettings;
// 클라우드 전송 없이 OS 로컬 샌드박스에만 즉각 직렬화 커밋
settings.Values["ZeliTodo_Items"] = JsonSerializer.Serialize(_todos);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"[ZeliTodo] SaveTodos 실패: {ex.Message}");
}
}
private void LoadTodos()
{
try
{
var settings = Windows.Storage.ApplicationData.Current.LocalSettings;
string json = settings.Values["ZeliTodo_Items"] as string;
if (!string.IsNullOrEmpty(json))
_todos = JsonSerializer.Deserialize<List<TodoItem>>(json) ?? new();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"[ZeliTodo] LoadTodos 복원 예외 격리: {ex.Message}");
_todos = new();
}
}
이 방식은 단말기 외부로 단 1비트의 소켓 통신도 시도하지 않기 때문에, 국방부 국가보안기술연구소의 망분리 PC 보안성 검토 및 Wireshark 패킷 캡처 감사에서 네트워크 Egress 0바이트로 완벽하게 통과합니다.
4. 지능형 우선순위 토큰 파서(!, !!): 키보드를 떼지 않는 0초 긴급도 분류 엔진
기존 태스크 관리 도구들은 할 일을 등록한 뒤 마우스로 '우선순위' 드롭다운을 클릭하고, '날짜' 팝업을 띄워 선택해야 하는 번거로움이 있었습니다. 교사가 수업 직전이나 교무 회의 중에 빠르게 메모할 때는 이러한 마우스 조작이 치명적인 병목이 됩니다.
ZeliTodo는 텍스트 기반 지능형 토큰 파서(Token Parser)를 탑재하여, 키보드에서 손을 떼지 않고 타이핑만으로 우선순위를 즉시 부여합니다:
private void BtnAdd_Click(object sender, RoutedEventArgs e)
{
var text = TxtNewItem.Text?.Trim();
if (string.IsNullOrEmpty(text)) return;
// 우선순위 토큰 파싱: "!! " = 긴급(Priority=2), "! " = 높음(Priority=1)
int priority = 0;
if (text.StartsWith("!! "))
{
priority = 2; // 🔴 긴급 마커 부여
text = text.Substring(3); // 접두어 제거 후 순수 텍스트 정제
}
else if (text.StartsWith("! "))
{
priority = 1; // 🟡 중요 마커 부여
text = text.Substring(2);
}
_todos.Insert(0, new TodoItem
{
Text = text,
Done = false,
CreatedAt = DateTime.Now.ToString("MM/dd HH:mm"),
Priority = priority
});
TxtNewItem.Text = "";
SaveTodos();
RenderList();
}
예를 들어 !! 교육청 긴급 공문 회신이라고 입력하고 엔터를 치면, 시스템은 자동으로 접두어를 감지하여 🔴 긴급 배지를 부여하고 본문에서는 느낌표를 깔끔하게 정제하여 최상단에 고정합니다.
5. 동적 다중 키 정렬 및 가상화 패널 렌더링 파이프라인 (미완료·긴급 상단 배치)
단순히 시간순으로만 할 일을 나열하면, 이미 완료된 잡무가 위쪽에 쌓여 정작 긴급하게 처리해야 할 업무가 화면 밖으로 밀려나는 시각적 교착이 발생합니다.
ZeliTodo의 RenderList() 엔진은 다중 키 복합 정렬(Multi-Key Sorting) 알고리즘을 적용하여 목록을 실시간으로 자동 재배치합니다:
| 정렬 우선순위 | 적용 기준 (LINQ Expression) | 시각적 렌더링 효과 |
|---|---|---|
| 1차 정렬 (상태) | OrderBy(t => t.Done) |
미완료 태스크가 항상 화면 위쪽에 위치, 완료된 항목은 하단으로 자동 침전 |
| 2차 정렬 (긴급도) | ThenByDescending(t => t.Priority) |
미완료 그룹 내에서 🔴 긴급(Priority 2) ➔ 🟡 중요(Priority 1) ➔ 일반(0) 순서로 엄격 정렬 |
| 완료 처리 스타일링 | TextDecorations = Strikethrough, Opacity = 0.4 |
완료 체크 시 취소선이 그어지고 투명도가 흐려져 시각적 인지 부담 80% 감소 |
6. 실시간 작업 진척도(Progress) 및 긴급 잔여 작업 계측 텔레메트리
사용자가 자신의 작업 부하를 한눈에 파악할 수 있도록, ZeliTodo의 하단 상태 바는 매 렌더링 시점마다 정량적 텔레메트리 지표를 실시간 연산하여 출력합니다:
- 총 작업량 및 긴급 잔여 계측:
int urgent = _todos.Count(t => t.Priority == 2 && !t.Done);를 통해 아직 처리되지 않은 빨간색 긴급 작업 건수를 붉은색 경고로 즉시 알립니다. - 달성률 백분율 연산:
done * 100 / total수식을 통해 현재 업무 진행 상황을"3/10 완료 (30%)"형태로 직관적으로 시각화합니다. - 안전한 일괄 정리 다이얼로그: 완료된 항목이 쌓였을 때
BtnClearDone_Click은ContentDialog확인 창을 띄워 오클릭에 의한 과업 삭제를 원천 방지합니다. - WindowKit Always-On-Top 플로팅: 타이틀바의 📌 핀 버튼을 누르면
OverlappedPresenter.IsAlwaysOnTop = true가 활성화되어, 엑셀이나 한글(HWP) 문서를 편집하는 중에도 항상 최상단에 떠서 일정을 놓치지 않게 돕습니다.
7. 태스크 관리 도구 비교 분석 (외산 SaaS vs 레거시 메모장 vs ZeliTodo 온디바이스)
| 비교 항목 | 외산 클라우드 SaaS (Notion / Todoist) | Windows 기본 메모장 / Sticky Notes | ZeliDesk ZeliTodo 온디바이스 런타임 |
|---|---|---|---|
| 데이터 저장 위치 | 해외 퍼블릭 클라우드 (AWS 등) | 로컬 파일 또는 MS 계정 클라우드 | 완전 격리 로컬 OS 샌드박스 (LocalSettings) |
| 폐쇄망 / Air-Gap 지원 | 불가 (로그인 및 동기화 실패) | 오프라인 지원 | 100% 완전 오프라인 독립 실행 |
| 우선순위 자동 정렬 | 마우스 수동 클릭 설정 필요 | 기능 없음 (단순 텍스트) | !, !! 토큰 파서 + 다중 키 자동 정렬 |
| 메모리 점유율 (RAM) | 400MB ~ 800MB (일렉트론/크롬) | 약 30MB | 초경량 15MB 이하 (순수 WinUI 3 네이티브) |
| 항상 위(Always-on-Top) | 서드파티 유틸리티 필요 | 일부 지원 | WindowKit 하드웨어 가속 원터치 핀 고정 |
| 개인정보 유출 위험 | 매우 높음 (국외 서버 전송) | 낮음 | 원천 차단 (0-byte Network Egress) |
8. 결론: "외부 서버 연결 0바이트, 교원과 연구원의 온전한 집중을 보장하는 로컬 거버넌스"
도구가 복잡해질수록 업무의 본질인 '몰입과 실행'은 방해받습니다. 할 일 하나를 적기 위해 로그인을 기다리고, 계정 권한을 갱신하고, 데이터 유출 여부를 걱정해야 한다면 그것은 생산성 도구가 아니라 스트레스 요인입니다.
ZeliDesk의 ZeliTodo는 전국의 초·중·고교 교무실과 군 연구실에서 가장 신뢰할 수 있는 디지털 업무 비서입니다. 키보드로 가볍게 느낌표를 찍어 할 일을 적고, 체크박스를 눌러 완료하는 지극히 단순하고 명쾌한 경험 뒤에는 철저한 온디바이스 데이터 거버넌스와 무결성 엔지니어링이 굳건히 작동하고 있습니다.