Skip to content

feat(core): App Link URI 계약과 엔진 중립 목적지 파서를 세운다 #1857

Closed as not planned
1 of 1 issue completed
Closed as not planned

Description

@OnlyReadOneBook

작업 유형

enhancement — 신규 기능·기존 기능 개선

주 담당 모듈

core — 코어

개요

#924에서 엔진 중립 공통 URI 파서와 비수신자 목적지 계약을 분리한다. Android intent 수신과 인증 후 재개는 #924, 수신자 경로·서버 식별자·접근 관문은 #1951이 각각 소유한다. 이 이슈는 #1951 없이 독립적으로 완료할 수 있다.

현재 범위

  • https://afternote.kro.kr의 scheme·host·포트·userinfo·query·fragment·정규 path 검증.
  • Home(/), 작성자 애프터노트 홈·상세(/afternote, /afternote/{id}), 타임레터 상세(/timeletter/{id}), 데일리질문 작성(/mindrecord/daily-question), 알림 설정(/settings/notification) 6개 목적지.
  • 양의 ASCII 10진 정수 ID, 정규 URL 왕복, 로그인·작성자 생체인증 관문 계약.
  • 허용하지 않은 경로와 잘못된 입력을 안전한 기본 진입 및 고정된 거절 사유로 반환한다.
  • Nav2/Nav3 및 Android Intent 타입과 결합하지 않는다.

분리된 수신자 계약

/received, /received/senders/{senderId}, /received/afternote/{id}는 #1951에서 최종 서버 식별자·관문을 확정한 뒤 구현한다. PR #1859에서 관련 목적지/UUID 정규식/RECEIVER_IDENTITY/성공 계약 테스트를 실제로 제거했다. 현재는 이 경로를 지원 목적지로 선언하지 않고 거절하며, 이 거절 회귀를 검증한다. 미래 계약을 로컬 SenderRegistry UUID로 미리 고정하지 않는다.

완료 조건

  • 현재 6개 목적지의 parsing·ID validation·관문 판정과 정규 URL 왕복 검증.
  • 미지원 경로·잘못된 ID·query 등 거절 사유 검증.
  • 수신자 미확정 계약이 현재 코드·문서·성공 테스트에 포함되지 않음.
  • core common 테스트 65개, konsist 54개 및 core common ktlintCheck 통과(최신 develop 통합 기준).
  • PR feat(core): 공통 URI 검증과 비수신자 App Link 계약을 세운다 (#1857) #1859 병합.

참고

Activity

  1. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    and removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 3, 2026
  2. OnlyReadOneBook commented on Sep 11, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    #924 로 흡수해 닫는다. 파서만 먼저 코어에 올리는 분리는 소비처가 없어 검증할 수 없고, 발송 쪽(인텐트 수신·FCM 링크 계약)이 정해지면 다시 고칠 가능성이 크다. PR #1859 는 드래프트로 두고, 그 코드는 #924 브랜치의 첫 커밋으로 가져간다. 수신자 경로 분리(#1951)는 그대로 유지한다.

  3. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:core공용 코어·네트워크 기능 영역enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions