← 기술 블로그 목록으로 돌아가기
#943 • Task Governance & On-Device Local Persistence Architecture

공교육 교무행정과 군 연구실 태스크 유출 0초 차단: ZeliTodo의 온디바이스 로컬 태스크 거버넌스와 비동기 일정 영속화 아키텍처

"교사의 학생 상담 메모나 군부대 프로젝트 마일스톤이 Notion, Todoist 같은 외산 클라우드 SaaS에 무심코 업로드되어 유출되는 사고를 어떻게 방지하십니까?" 무거운 웹 기반 협업 도구의 계정 로그인 강제와 외부 서버 데이터 전송을 완벽히 차단하는 Zero-Telemetry 온디바이스 태스크 관리 런타임, ApplicationData.Current.LocalSettings 기반의 오프라인 로컬 영속화, !/!! 토큰 파서를 활용한 긴급도 3단계 자동 분류 및 동적 우선순위 렌더링, 완료 항목 취소선·투명도 자동 계층화, 실시간 진척도(Progress) 텔레메트리, 그리고 WindowKit Always-On-Top 플로팅 아키텍처 백서.

"초·중·고 교실에서 담임교사가 다루는 일상적인 할 일 목록에는 학생들의 학적 변동, 심리 상담 일지, 학교폭력 처리 일정, 특수교육 대상자 지원 내역 등 민감한 개인정보가 가득합니다. 군부대와 국방 과학 연구소의 연구원 역시 무기체계 시험 일정이나 보안 점검 체크리스트를 관리해야 합니다. 그러나 많은 사용자들이 무심코 노션(Notion)이나 투두이스트(Todoist) 같은 외산 클라우드 서비스에 이 정보를 입력합니다. 그 순간 국외 서버로 기밀이 전송되어 정보보안 감사 지적과 법적 책임으로 이어집니다. ZeliTodo는 단 1바이트의 외부 통신도 허용하지 않는 100% 온디바이스 로컬 영속화로 가장 안전한 업무 환경을 제공합니다."

1. 공교육 현장과 국방·보안 시설의 태스크 관리 딜레마: "편리함 뒤에 숨은 개인정보·기밀 유출 리스크"

현대 공공 업무 환경에서 교원과 연구원들은 수많은 다중 과업(Multi-Tasking)을 동시다발적으로 처리해야 합니다. 그러나 기존 업무 도구 환경은 심각한 보안 규제와 충돌합니다:

2. 상용 클라우드 SaaS(Notion/Todoist/Trello)의 구조적 한계: "폐쇄망 미작동과 일렉트론 메모리 낭비"

일반 기업용 클라우드 서비스들은 교육·국방 행정용 단말기에 도입하기에 다음과 같은 구조적 결함을 안고 있습니다:

  1. 상시 네트워크 연결 강제: 인터넷이 연결되지 않으면 로그인 토큰이 만료되어 앱이 열리지 않거나, 오프라인 변경 사항이 동기화 충돌로 증발합니다.
  2. 일렉트론(Electron) 런타임의 과도한 메모리 누수: 웹 브라우저 전체를 래핑한 상용 앱들은 할 일 몇 개를 띄워두는 것만으로 400MB~800MB의 RAM을 점유하여 8GB 이하 저사양 교원용 PC를 급격히 느려지게 만듭니다.
  3. 계정 가입 및 유료 구독료 단속: 팀 협업이나 고급 필터링 기능을 사용하려면 단말당 월 수 달러의 유료 구독을 강제하여 공공 예산 집행에 걸림돌이 됩니다.
flowchart TD subgraph INPUT_STREAM["⌨️ 고속 키보드 입력 인터페이스"] RAW["사용자 프롬프트 입력 (TxtNewItem)"] PARSE{"접두어 우선순위 토큰 파싱
(! / !!)"} 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
▲ [그림 1] ZeliDesk ZeliTodo의 토큰 파싱, 다중 키 정렬 및 온디바이스 로컬 영속화 파이프라인

3. ApplicationData LocalSettings 기반 완전 오프라인 샌드박스 영속화 아키텍처

ZeliTodo는 외부 데이터베이스나 별도의 클라우드 동기화 데몬을 일체 사용하지 않습니다. 대신 Windows 운영체제가 제공하는 UWP/WinUI 3 공식 샌드박스 스토리지인 Windows.Storage.ApplicationData.Current.LocalSettings를 직접 활용합니다.

사용자가 태스크를 추가하거나 체크박스를 토글할 때마다 고성능 System.Text.Json 직렬화 엔진이 인메모리 리스트를 즉각 로컬 컨테이너에 원자적(Atomic)으로 커밋하므로, 불시의 PC 정전이나 강제 종료 시에도 데이터 유실 위험이 0%입니다:

C# (ZeliTodoWindow.xaml.cs) ZeliTodo/Views/ZeliTodoWindow.xaml.cs
// ── 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)를 탑재하여, 키보드에서 손을 떼지 않고 타이핑만으로 우선순위를 즉시 부여합니다:

C# (BtnAdd_Click 토큰 파싱 로직) ZeliTodo/Views/ZeliTodoWindow.xaml.cs
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% 감소
sequenceDiagram autonumber actor Teacher as 교원 / 연구원 participant UI as WinUI 3 뷰 (ZeliTodoWindow) participant Engine as 인메모리 거버넌스 엔진 participant Storage as Windows LocalSettings Teacher->>UI: 체크박스(cb) 클릭 (완료 토글) UI->>Engine: capturedTodo.Done = true 갱신 Engine->>Storage: JsonSerializer.Serialize(_todos) 로컬 저장 Engine->>Engine: OrderBy(Done) ➔ ThenByDescending(Priority) 다중 키 정렬 Engine->>UI: 취소선(Strikethrough) 및 Opacity(0.4) 부여 Engine->>UI: 하단 침전 및 TxtProgress (완료율%) 텔레메트리 갱신 Note over UI,Teacher: 즉시 시각적 인지 전환 완료 (0ms UI 딜레이)
▲ [그림 2] 체크박스 완료 토글 시의 원자적 저장 및 동적 시각적 계층화 시퀀스

6. 실시간 작업 진척도(Progress) 및 긴급 잔여 작업 계측 텔레메트리

사용자가 자신의 작업 부하를 한눈에 파악할 수 있도록, ZeliTodo의 하단 상태 바는 매 렌더링 시점마다 정량적 텔레메트리 지표를 실시간 연산하여 출력합니다:

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는 전국의 초·중·고교 교무실과 군 연구실에서 가장 신뢰할 수 있는 디지털 업무 비서입니다. 키보드로 가볍게 느낌표를 찍어 할 일을 적고, 체크박스를 눌러 완료하는 지극히 단순하고 명쾌한 경험 뒤에는 철저한 온디바이스 데이터 거버넌스와 무결성 엔지니어링이 굳건히 작동하고 있습니다.

← 이전 기술 백서 #944 국방·공공 전산실 엔드포인트 보안 감사와 데이터 유출 0초 방어: ZeliScan의 온디바이스 포트 스캐너·자격증명 누출 진단 및 USB 보안 거버넌스 아키텍처 다음 기술 백서 → #942 노션(Notion) 없는 교원 연구노트와 국방 마크다운 보안 거버넌스: ZeliNote의 Markdig 파이프라인과 WebView2 실시간 렌더링 아키텍처
✅ ZeliDesk ZeliTodo 온디바이스 태스크 거버넌스 런타임 체험하기
클라우드 유출 걱정 없이 단 0초 만에 우선순위 할 일을 정리하고, 스마트한 업무 몰입을 경험하세요.
72종 유틸리티 전체 둘러보기 →