mattermost-push-plugin/agent-ops/roadmap/phase/android-runtime-confidence/milestones/ack-network-resilience.md

3.1 KiB

Milestone: ACK와 네트워크 회복성 검증

위치

  • Roadmap: agent-ops/roadmap/ROADMAP.md
  • Phase: agent-ops/roadmap/phase/android-runtime-confidence/PHASE.md

목표

Mattermost ACK와 inline reply delivery가 예측 가능한 요청을 만들고 실패 상황을 안전하게 처리하도록 검증한다. 네트워크 의존 로직은 mock server 또는 fake client로 분리해 소비 프로젝트 없이 확인할 수 있게 한다.

상태

[계획]

구현 잠금

  • 상태: 잠금
  • 결정 필요: 아래 체크리스트
    • ACK 실패 시 retry, drop, local queue 중 어떤 정책을 우선할지 결정한다
    • inline reply 실패 시 사용자에게 표시할 책임이 plugin인지 소비 앱인지 결정한다

범위

  • ACK request 생성과 auth token 사용 검증
  • reply delivery request 생성 검증
  • network failure, auth failure, server error 처리 기준 정의
  • fake HTTP client 또는 mock server 기반 테스트 추가

필수 기능

Epic: [ack] ACK 전송 계약

Mattermost 서버로 보내는 receipt ACK 경로를 검증한다.

  • [request-shape] ACK URL, method, header, body shape를 테스트한다
  • [auth] 저장된 auth token 사용 여부를 테스트한다
  • [success] 200/201 성공 응답 처리 기준을 테스트한다

Epic: [failure] 실패 처리

네트워크 실패가 plugin runtime을 불안정하게 만들지 않도록 한다.

  • [network-error] timeout 또는 connection failure 처리 기준을 테스트한다
  • [auth-error] 401/403 처리 기준을 정리한다
  • [server-error] 5xx 응답 처리 기준을 정리한다

Epic: [reply] Inline Reply Delivery

Inline reply 요청 흐름의 입력과 실패 경계를 명확히 한다.

  • [reply-request] reply text와 context가 Mattermost API 요청으로 변환되는지 테스트한다
  • [reply-failure] reply 실패 시 저장, 재시도, 노출 정책을 결정된 기준대로 구현한다

완료 기준

  • ACK 요청 생성이 네트워크 없이 테스트된다
  • 성공과 실패 응답 처리 기준이 테스트 또는 문서로 명확하다
  • inline reply delivery 실패 정책이 결정되고 구현에 반영되어 있다
  • 외부 Mattermost 서버 없이 기본 네트워크 로직을 검증할 수 있다

완료 리뷰

  • 상태: 없음
  • 요청일: 없음
  • 완료 근거: 없음
  • 리뷰 필요:
    • 사용자가 완료 결과를 확인했다
    • archive 이동을 승인했다
  • 리뷰 코멘트: 없음

범위 제외

  • 소비 앱의 사용자-facing error UI
  • Mattermost 서버 자체 동작 검증
  • 장기 offline queue 제품 정책 확정 전 대규모 queue 구현

작업 컨텍스트

  • 관련 경로: android/src/main/java/**, android/src/main/kotlin/**, android/src/test/**
  • 표준선(선택): HTTP 테스트는 fake client 또는 mock server를 사용하고 실제 서버에 의존하지 않는다
  • 선행 작업: Native 단위 테스트 확장
  • 후속 작업: 소비 프로젝트 도입 안정화
  • 확인 필요: ACK 실패 정책, inline reply 실패 책임 경계