docs: document full NIRO feature and research catalogue

This commit is contained in:
seo committed 2026-11-02 10:31:17 +09:00
1 parent 3c45ce3248
commit 3e9275e4ca
4 files changed
+286 -41

No files matched your search

+14 -4
View File
@@ -4,7 +4,9 @@
**이 저장소는 실차 작업 성과와 선별한 소스를 공개하는 곳입니다. 누구나 적용할 수 있는 완성형 설치 패키지나 공식 펌웨어가 아닙니다.** 제조사 펌웨어·지도·APK/ODEX 원본·실차 로그·인증정보는 제공하지 않습니다.
공개본 작성: 2026-11-02 · 기능 상태 기준: 2026-11-01의 비공개 운영 기록
공개본 갱신: 2026-11-02 · 차량 상태 기준: 2026-11-01 운영 기록 · 서버 기능은 해당 시점 소스·운영 문서 기준
[전체 기능·수정·연구 목록](docs/FEATURES_KO.md)에 **20개 분야·131개 세부 항목**을 정리했습니다. 현재 적용 기능뿐 아니라 부분 검증·보류·원복·폐기한 작업도 포함합니다. 131개의 독립 기능이 모두 완성됐다는 뜻은 아닙니다.
## 어떤 일을 했나
@@ -15,22 +17,30 @@
| 온라인 날씨 | 순정 홈·상세 날씨·대기질·예보를 로컬 백엔드에 연결 | 실차 적용·갱신 확인 |
| 시동 브리핑 | 순정 날씨 TTS 경로의 대기 원인을 분석하고 실행 시간대를 확장 | 냉간 부팅 음성 출력 확인 |
| 캘린더·스포츠 | HA 일정과 외부 스포츠 데이터를 순정 요청·응답 모델로 변환 | 순정 화면 확인, 공급자별 범위 제한 |
| 실시간 주차 | 공공 주차장 정보와 확인된 가용 대수를 순정 목록·지도·상세에 연결 | 실차 확인, CarPay 결제는 별개·미제공 |
| 내 차 위치 공유 | 수신자별 독립 링크, 기존 링크 갱신, SMS 중복 방지·부분 실패 격리·개별 해지 | 혼합 수신자와 링크 해지 실차 확인 |
| 사람에게 목적지 공유 | 현재 위치와 분리한 정적 목적지 지도 링크를 문자로 전달 | 실차 발송·수신 확인, 오프라인 화면의 숨김 버튼은 미해결 |
| Send to Car | 주소 검색부터 차량의 순정 POI 저장·ACK까지 연결 | 실차 수신·재부팅 자동 복구 확인 |
| HA·MQTT | 유효한 차량 값을 변화 이벤트에 연결하고 초기값·미확인값을 분리 | 운영 중, 센서별 신뢰도 구분 |
| 마지막 확인값 | 핵심 참고값·관측 시각을 별도 보존하고 실시간 unavailable과 분리 | 단절·복구 시험, 제어·차계부 판정에는 사용 안 함 |
| 디지털 액자 | 순정 사진 공급·분할 화면·해상도·비율·재부팅 복구 연결 | 운영·실차 확인, 개인 사진은 미공개 |
| 지도 RPM·차속 | 수신된 RPM 표시, 내비 내부 차속 보정, 주·야간 가독성 보완 | 실차 적용, ECU 원시값은 변경하지 않음 |
| 지도 축척 | 5단계 자동 축척 사이에 75·150·300·600 m를 추가 | 9단계 적용, 일부 구간·표시 실차 확인 |
| 순정 메뉴 | Wi-Fi 설정·경치 좋은 길·탐색 회피 옵션을 제한된 분기에서 복원 | 적용, 세부 비교 시험 범위는 문서에 명시 |
| DMB/TPEG | 수신 경합·재연결·보존 정책을 분석하고 유효한 교통값 갱신 경계를 보정 | 운영 중, 방송 지연·미지원 도로는 해결하지 못함 |
| 후면 단속 안내 | 검증된 기준 DB와 일치하는 기존 후면 속성 보존 | 알려진 기존 카메라 대상, 신규 후면 자동 분류는 미지원 |
| 지도·엔진 호환 | 신지도와 구형 엔진 조합의 경로 계산 crash를 분석하고 대응 엔진에 기존 변경 이식 | 동일 실패 목적지 재계산 성공 |
| 읽기 진단·원격제어 | 순정 진단·제어 경로와 최종 응답을 서버 상태기계에 연결 | 확인된 기능만, 완전 전원 차단 뒤 수신은 불가 |
| 읽기 진단 | 수동·자동·딜러 진단의 순정 읽기 보고와 결과 보존 | 실차 확인, 예약·원격 보고는 미구현 |
| 원격제어 | 허용 동작의 순정 실행 경로·최종 ACK를 서버 상태기계에 연결 | 대표 동작 실차 확인, 완전 전원 차단 뒤 수신은 불가 |
| 포털·모니터링 | 인증·권한 공유·차량 상태 조합·관리자 API 디버깅·실시간 화면 | 운영 확인, 개인 접속 정보·원문 로그는 미공개 |
| 자가 차계부 | 장부·가져오기·주행 판정·금융 사건 분류·주유 후보·PWA·영수증 보조 | 서버 구현·시험 기준, 실제 금융·주행 자료는 미공개 |
| 운영 기반 | 부팅 worker·SSH·Tailscale·Wi-Fi 저장·자동 연결·불필요 자산 정리 | 실차 확인, 개인 접속·배포 설정은 미공개 |
**미완료도 숨기지 않습니다.** Naver 경로를 순정 지도에 완전히 이식하는 작업과 IP 교통정보는 보류, 무선 AA/CarPlay는 이식 검토 단계입니다. 연료 잔량 %는 신뢰할 수 있는 원천을 찾지 못해 측정값처럼 발행하지 않습니다. ECU 정비 쓰기는 제공하지 않습니다.
**미완료도 숨기지 않습니다.** Naver 경로 완전 이식과 IP 교통정보는 보류, 무선 AA/CarPlay는 이식 검토 단계입니다. ECO 주 경로·예약 진단·전 패치 자동 OTA·완전 전원 차단 뒤 wake는 미구현이며, Bluetooth 끊김은 분석했지만 수정 완료가 아닙니다. 연료 잔량 %는 신뢰할 수 있는 원천을 찾지 못해 측정값처럼 발행하지 않습니다. ECU 정비 쓰기와 실제 CarPay 결제는 제공하지 않으며 N 모드 실험은 폐기했습니다.
## 먼저 읽기
- [전체 기능과 검증 범위](docs/FEATURES_KO.md)
- [전체 기능·수정·보류·폐기와 검증 범위](docs/FEATURES_KO.md)
- [차량–서버–HA 구조](docs/ARCHITECTURE_KO.md)
- [어려웠던 문제와 확인된 한계](docs/RESEARCH_KO.md)
- [공개 범위·출처·검증 원칙](docs/PUBLICATION_KO.md)
+12
View File
@@ -15,6 +15,18 @@ Android 4.4 계열 서비스·Binder·순정 앱·내비 native
핵심은 Android의 root 권한과 차량 ECU의 권한을 구분하는 것입니다. 헤드유닛에서 root를 얻어도 모든 차량 신호가 수신되는 것은 아니며, 모든 ECU 제어가 가능한 것도 아닙니다.
TApp는 일부 텔레매틱스 요청의 broker이지 모든 앱의 유일한 인터넷 프록시가 아닙니다. DMB/TPEG는 별도 방송 수신·decoder·교통 서비스·내비 경로를 거치며, MQTT는 차량에서 이미 받은 값을 운반합니다. 외부 공급자가 없는 도로 정보나 수신하지 못한 연료 잔량을 통신 방식만 바꿔 만들 수는 없습니다.
## 세 가지 위치·목적지 흐름
| 흐름 | 보내는 대상과 데이터 | 구분 |
|---|---|---|
| 내 차 위치 공유 | 사람에게 최신 차량 위치·허용 차량정보의 수신자별 링크 | 이동하면서 갱신, 개별 중지·만료 |
| 목적지 문자 공유 | 사람에게 선택한 목적지의 정적 지도 링크 | 현재 차량 상태·이동 GPS와 분리 |
| Send to Car | 웹에서 차량의 순정 POI 저장·알림·ACK 경로 | 외부 경로 형상을 순정 안내에 이식하는 기능은 아님 |
차계부는 신선한 모뎀·차량 관측과 영속 상태를 사용하는 별도 서버 소비자입니다. HA의 화면 참고용 `last_known` 센서나 오래된 시동값으로 주행을 확정하지 않으며, 개인 장부·금융·영수증 데이터는 공개 소스의 시험 입력에 포함하지 않습니다.
## 세 가지 코드 계층
| 계층 | 역할 | 공개본의 범위 |
+253 -37
View File
@@ -1,42 +1,258 @@
# 기능별 구현과 확인 범위
# 전체 기능·수정·연구 현황
기준: 2026-11-01 운영 기록. 이 표는 전체 개인 프로젝트의 성과이며, 해당 기능의 완성 소스·배포물이 모두 공개돼 있다는 뜻은 아닙니다. `실차 확인`도 표에 적힌 조건과 대상에 한정됩니다.
공개 문서 갱신: **2026-11-02**. 차량 상태는 **2026-11-01 운영 기록**, 서버·차계부는 같은 시점의 소스와 운영 문서를 기준으로 재서술했습니다. 이번 문서 정리에서 차량·주유·결제 시험을 새로 수행한 것은 아닙니다.
| 기능 | 구현·관측한 내용 | 남은 한계 |
**전체 개인 프로젝트의 기능 기록이지, 모든 기능의 완성 소스·설치 파일이 공개됐다는 뜻은 아닙니다.** 공개 소스 범위는 README를 따릅니다. 동일 기능의 반복 시험판은 묶고, 보류·원복·폐기도 현재 적용 기능과 분리했습니다.
## 상태 표기와 공개 범위
- **실차 확인**: 기재한 차량 화면·원천·통신 또는 물리 동작을 확인. 모든 조건 검증을 뜻하지 않음.
- **운영 확인**: 서버 배포·응답·저장 또는 운영 관측 확인. 물리 동작 증거와 구분.
- **부분 확인 / 구현·시험**: 적용이나 시험은 있지만 명시한 현장 확인·coverage가 남음.
- **분석·보류**: 조사·후보는 있으나 운영 기능으로 활성화하지 않음.
- **원복·폐기 / 미제공**: 실험을 되돌렸거나 운영 기능으로 제공하지 않음.
키·비밀번호·전화번호·공유 원문 token·실제 좌표·주행/결제 기록·개인 접속 주소·내부 배포 정보는 제외했습니다. 일반적인 계약 명칭·단위·설계·검증 수치는 설명을 위해 남깁니다.
## 01. 운영 기반과 네트워크
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| BASE-01 | 영구 부팅 worker | root 부팅 진입과 동일한 worker로 기능별 준비·감시 통합 | 실차 확인. upstream NEMESIS Manager 전체와는 다름 |
| BASE-02 | 제한된 payload 적용 | 대상 버전·해시·활성 조건 검사 후 ODEX/native payload 적용 | 실차 확인. sentinel·파일만으로 성공 판정하지 않음 |
| BASE-03 | 원격 관리·기본 도구 | OpenSSH·기본 셸 도구·curl 구성과 재부팅 관리 경로 확인 | 실차 확인. 접속 정보·키는 미공개 |
| BASE-04 | Tailscale 경로 복구 | daemon·인터페이스 주소·정책 경로 누락 감시와 복구 | 실차 확인. 경로 강제 삭제 후 자가복구 관측 |
| BASE-05 | ADB 비활성·USB host | 과거 TCP ADB 시험 종료, SSH 관리·USB host 유지 | 원복·운영 확인. 무선 projection과 별개 |
| BASE-06 | Wi-Fi 연결·저장 복구 | STA 활성화·순정 저장 API·재부팅 자동 연결, 저장값 소실 장애 대응 | 실차 확인. 설정을 비운 최초 호출 주체는 미확정 |
| BASE-07 | 순정 Wi-Fi 메뉴 | 설정 홈 데이터/네트워크 타일과 Wi-Fi 탭만 복원 | 실차 확인. 무선 projection feature와의 결합 분리 |
| BASE-08 | 임시·구버전 자산 정리 | 실행 참조·해시 확인 후 stage·capture·시험판·미사용 백업 정리 | 실차 확인. 영속 상태·현재 기준선까지 삭제하지 않음 |
## 02. TApp와 로컬 백엔드
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| DATA-01 | 기능별 Wi-Fi transport | 날씨·캘린더·스포츠·공유·진단 등 필요한 URI만 로컬 연결 | 실차 확인. 모든 앱의 통신을 TApp가 대신하지 않음 |
| DATA-02 | 기능별 진입 조건 | 해당 기능의 진입·callback 조건만 제한적으로 수정 | 실차/부분 확인. 전역 가입·modem 상태 위장 안 함 |
| DATA-03 | TLS·인증 경계 | 로컬 호스트 범위 제한·hostname 검증·인증 유지 | 운영 확인. 전역 trust-all·시스템 CA 일괄 교체 아님 |
| DATA-04 | 독립 차량 API | 일반 웹과 차량 API의 코드·비밀·저장 경계 분리 | 운영 확인. 개인 서버 설정은 미공개 |
| DATA-05 | APK/ODEX 재현 검증 | class 순서·dependency·checksum·실행 mapping 대조 | 로컬/실차 확인. 다른 펌웨어에 같은 산출물 적용 불가 |
## 03. 순정 날씨와 대기질
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| WEA-01 | 순정 온라인 날씨 | 위치·현재 날씨·기온·아이콘을 순정 모델과 UI에 연결 | 실차 확인. 별도 날씨 앱으로 교체하지 않음 |
| WEA-02 | 시간별·주간 예보 | 이후 시간대와 주간 예보를 순정 상세 화면에 연결 | 실차 확인. 응답 일수와 화면 카드 수는 다를 수 있음 |
| WEA-03 | 상세 진입·새로고침 | 날씨 전용 진입과 요청→parser→callback→UI 갱신 | 실차 확인. 전역 서비스 상태 변경 아님 |
| WEA-04 | 대기질 결합·등급 | 관측 PM 우선·모델 fallback 구분, 등급 없는 농도의 UI용 등급 보완 | 실차/운영 확인. 관측과 모델 출처를 숨기지 않음 |
| WEA-05 | 완성 응답 캐시 | 완성된 유효 응답 캐시와 upstream 장애 시 제한된 stale fallback | 운영 확인. stale을 새 관측으로 위장하지 않음 |
| WEA-06 | 요청 병합·재사용 | 중복 병합·최근 응답 재사용·실패 backoff·요청/완료 계수 | 구현·시험. 독립 gate·계수 소스와 합성 시험 공개 |
## 04. 시동 웰컴 날씨 안내
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| TTS-01 | 순정 웰컴 날씨 | WeatherTTS·VoiceHandler·오디오 시작/종료 경로 사용 | 실차 확인. 뉴스 headline 브리핑 아님 |
| TTS-02 | 날씨 전용 준비 대기 | Wi-Fi 로컬 날씨만 불필요한 셀룰러 준비 대기 우회 | 실차 확인. 긴급 서비스·전역 준비 상태는 불변 |
| TTS-03 | 실행 시간 확장 | 낮 시간 조건을 하루 전체로 확장, 야간 냉간 부팅 출력 확인 | 실차 확인. 언어·사용자 동의·음성 준비 조건 유지 |
## 05. 캘린더
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| CAL-01 | HA 일정 변환 | 읽기 전용 목록·일정을 순정 계정/이벤트 모델로 변환 | 실차 확인. 개인 일정·계정은 미공개 |
| CAL-02 | 목록·수동 갱신 | 설정한 HA 계정에 한해 휴대폰 프로필 조건·안내 팝업 보완 | 실차 확인. 다른 계정·기능으로 우회 확대 안 함 |
| CAL-03 | 공급자 표기·동기화 | 내부 공급자 표기 정돈·일정 필드·재부팅 후 동기화 확인 | 실차 확인. 모든 시간대·알림 조합 시험은 아님 |
## 06. 스포츠
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| SPORT-01 | 순정 스포츠 변환 | 팀·리그·경기·순위를 순정 team/live/rank 모델로 변환 | 실차/운영 확인. 최신 실시간 coverage는 별도 |
| SPORT-02 | 다종목 목록·DB | 6종목·9리그·180팀의 순정 DB 반영 확인 | 실차 확인. 공급자 목록이 현행 공식 구성을 보장하지 않음 |
| SPORT-03 | 스포츠 Wi-Fi 판정 | 내비의 스포츠 활성 판단과 해당 앱 진입만 보완 | 실차 확인. 다른 온라인 기능 전체를 바꾸는 패치 아님 |
| SPORT-04 | 공급 범위 제한 | 요청 종목만 허용하고 미공급 종목·시즌 데이터는 만들지 않음 | 운영 확인. 골프·크리켓·현 시즌·로고 coverage는 제한 |
## 07. 실시간 주차와 CarPay 구분
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| PARK-01 | 주차장 검색·상세 | 공공 데이터의 명칭·좌표·주소·총면수·요금·시간을 순정 모델로 변환 | 실차 목록·지도 마커·상세·callback 확인 |
| PARK-02 | 실시간 가용 대수 | 같은 관리 ID로 결합된 관측 항목에만 가용 대수 제공 | 실차/운영 확인. 정적 총면수를 빈자리로 위장 안 함 |
| PARK-03 | 내비 연동·재부팅 | 주차 요청·응답·갱신과 기능별 진입 경계 연결 | 실차 확인. 다른 서비스까지 개통하는 변경 아님 |
| PARK-04 | CarPay 결제 경계 | 정보 조회와 제휴 검색·결제·입출차 계약 분리 | 분석·미제공. 가짜 결제·정산 성공 구현 안 함 |
## 08. 내 차 위치 공유
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| SHARE-01 | 기본 공유 진입 | 순정 입력·발신 목록의 기능별 진입 조건 보완 | 실차 확인. TMU identity 전체 위장 아님 |
| SHARE-02 | 상단 동작 아이콘 | 지도 시계 옆 공유 아이콘에서 가입 안내 없이 발신함 진입 | 실차 확인. 목적지 공유 버튼과 다른 경로 |
| SHARE-03 | 지도 메뉴 진입 | 별도 native call site의 공유 진입만 수정 | 실차 확인. 공통 서비스 검사 일괄 우회 아님 |
| SHARE-04 | 차량 번호 표시 | 공유 입력·발신 목록에서 비어 있는 순정 번호 표시 보완 | 실차 확인. 실제 번호는 비밀 설정에서만 읽음 |
| SHARE-05 | 번호 정규화·중복 제거 | 국내·국제 표기 통일, 원래 목록 순서와 개별 ACK 유지 | 서버·실차 확인. 같은 번호에 중복 SMS 안 보냄 |
| SHARE-06 | 기존 링크 재사용 | 유효한 기존 수신자는 SMS 없이 위치·허용 차량정보 갱신 | 서버·실차 확인. 목록 존재만으로 성공 처리 안 함 |
| SHARE-07 | 신규 수신자 분리 | 수신자별 delivery·링크·SMS와 실패 격리 | 서버·실차 확인. 타인의 정상 링크를 함께 폐기 안 함 |
| SHARE-08 | 중복·공급자 제한 복구 | 수신자별 요청 중복 방지, 같은 수신자의 유효 이력으로만 제한 복구 | 서버·실차 확인. 다른 사람의 이력 사용 안 함 |
| SHARE-09 | 재공유·초기 GPS 경합 | 기존 이력 재시작과 첫 GPS보다 공유가 앞서는 상황 보완 | 부분 확인. 추가 GPS 동봉의 실요청 검증은 별도 |
| SHARE-10 | 앱 Binder 재연결 | 서비스 재시작 뒤 끊어진 앱 연결로 생긴 시작 실패 복구 | 실차 확인. 모든 실패가 인터넷 장애인 것은 아님 |
| SHARE-11 | 수신자별 중지 | 삭제·중지한 수신자 링크만 폐기하고 접근 차단 | 서버·실차 확인. 나머지 활성 링크 유지 |
| SHARE-12 | 모바일 지도·차량정보 | 같은 페이지에서 위치·허용 차량정보·마커·이동 궤적 갱신 | 실차 확인. 진단·제어 권한을 공개하지 않음 |
| SHARE-13 | 근사 도로명 주소 | 정확한 주소가 없으면 주변 도로명 탐색, 건물번호 없는 근사 주소 표시 | 운영 확인. 해당 도로 위에 있다는 보장은 아님 |
| SHARE-14 | 전달·만료 상태 | 공급자 접수·최종 수신 상태·링크 만료/폐기를 구분 | 서버·실차 확인. 접수만으로 브라우저 확인까지 완료 아님 |
## 09. 목적지 공유와 Send to Car
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| DEST-01 | 사람에게 목적지 공유 | 목적지 명칭·좌표의 별도 정적 링크를 문자 발송 | 실차 확인. 수신 링크의 목적지 지도 확인 |
| DEST-02 | 목적지 링크 권한 분리 | 현재 위치·차량정보와 분리, 이동 GPS로 목적지를 덮지 않음 | 서버 시험. 목적지 링크의 차량 상태 미표시는 정책 |
| DEST-03 | 숨김 목적지 버튼 | 오프라인 길안내 화면의 버튼·별도 진입 조건 조사 | 부분 확인·미해결. Activity 직접 실행 성공과 구분 |
| DEST-04 | 포털 주소 검색·전송 | 주소 후보 선택으로 좌표 수동 입력을 줄이고 순정 POI 수신에 연결 | 실차 확인. 암호 재입력은 줄이되 세션·CSRF 유지 |
| DEST-05 | 순정 저장·최종 ACK | poller→parser→POI DB·팝업→최종 ACK와 재부팅 자동 복구 | 실차 확인. 외부 경로 geometry 전송은 아님 |
## 10. 읽기 전용 차량 진단
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| DIAG-01 | 수동 진단 | 진입 조건 보완·순정 HSCAN으로 응답한 12개 고유 ECU 읽기 | 실차 확인. 외부 진단장비 충돌 방지 유지 |
| DIAG-02 | 자동 진단 보고 | 순정 background·자동 이벤트를 로컬 읽기 보고에 연결 | 실차·재부팅 확인. 예약 보고와 별개 |
| DIAG-03 | 딜러 진단 보고 | 순정 딜러 스캔·보고·DB 보존 연결 | 실차 확인. 딜러 코딩·정비 전체 활성화 아님 |
| DIAG-04 | DTC·보고서 보존 | raw 코드·상태 byte·대상·결과 원형 보존 | 서버·실차 확인. OEM 설명 없는 코드는 추측 안 함 |
| DIAG-05 | 예약·원격 보고 | 순정 예약 코드와 한국형 원격 수신 지원 여부 조사 | 분석·미구현. 로컬 계약·실차 실행 완료 아님 |
## 11. 제한된 순정 원격제어
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| RC-01 | 명령 상태기계 | 대기·임대·실행·성공/실패/거부·TTL·재임대·중복 callback 경계 | 운영·시험. HTTP 전송만으로 성공 확정 안 함 |
| RC-02 | 차량 실행기 | 허용된 7개 동작만 일회성 거래로 순정 TApp ingress에 전달 | 실차 확인. raw endpoint·MICOM 직접 쓰기 제공 아님 |
| RC-03 | 물리 결과·최종 응답 | 대표 시동·도어 잠금 해제와 최종 ACK·작동 중 안전 거부 확인 | 실차 확인. 모든 동작의 현장 검증까지 확대 안 함 |
| RC-04 | awake/wake 경계 | Android·네트워크·poller가 살아 있는 동안 수신·실행 | 운영 제한. 완전 차단 뒤 별도 저전력 수신기·wake는 미구현 |
## 12. 포털·모니터·서버
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| WEB-01 | 관리자 포털·세션 | 상태·진단·공유·명령·목적지 화면과 인증·CSRF·접근 제한 | 운영 확인. 비밀값은 소스에 넣지 않음 |
| WEB-02 | 차량 reporter | 상태·읽기 진단을 서로 다른 주기로 인증 전송 | 실차 확인. reporter 전체가 변화 즉시 전송되는 것은 아님 |
| WEB-03 | 권한형 공유 링크 | 소유자가 지정한 권한·만료·폐기·감사 관리 | 운영 확인. 순정 문자 링크는 제한된 읽기 권한만 |
| WEB-04 | 원문 API 디버깅 | 관리자용 메타데이터 목록과 선택한 요청/응답 상세 분리 | 운영 확인. 원문 모드의 민감 로그는 공개 제외 |
| WEB-05 | 차량 통합 모니터 | 기존 모뎀과 Gen5W scalar cache를 조합해 상태·변화 표시 | 운영 확인. 표시 성공이 원천 유효성을 대신하지 않음 |
| WEB-06 | WebSocket·MQTT 운영 | 인증된 실시간 갱신·장애 시 HTTP 대체·소비자별 ACL·broker | 운영·시험. 브라우저에 MQTT 비밀번호를 넘기지 않음 |
## 13. Home Assistant·MQTT
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| TEL-01 | 원시 항목 전수 분류 | 약 2천 개의 공용/캐시 key를 차종·원천·단위·초기값별 검토 | 분석·반영. 1,999개 모두 유효 센서라고 하지 않음 |
| TEL-02 | callback 변화 전송 | 전체 dumpsys 반복 대신 listener와 변화값 bounded queue 사용 | 실차 확인. 미수신 원천값을 즉시 만들 수는 없음 |
| TEL-03 | 토픽별 scalar 발행 | 바뀐 항목만 retained topic으로 발행, 재연결 상태 복구 | 실차 확인. 매번 전체 JSON을 다시 보내지 않음 |
| TEL-04 | RPM 직접 수신 | 지연된 주기 callback 대신 EMS1 수신 변화 즉시 속성·queue 전달 | 실차 확인. ECU→HA/화면까지 지연 0이란 뜻 아님 |
| TEL-05 | 유효 0과 단절 분리 | 실제 0 RPM과 unavailable·미확인 구분 | 실차 확인. 단절을 가짜 0으로 채우지 않음 |
| TEL-06 | 마지막 확인값 | 핵심 유효값 5개+상태·시각 2개 참고 보존, 과거 시동·속도·기어 제외 | 서버·실차 단절 시험. 제어·차계부 입력으로 사용 안 함 |
| TEL-07 | 복원·기록 시각 보호 | 초기 template 오류 수정·새 이력 비교·원래 시각 유지 | 서버·격리 시험. HA 기록 시각과 차량 측정 시각은 다름 |
| TEL-08 | 조명 채널 분리 | 외부/내부 미등·전조등·안개등·비상등 분리, 초기 0의 거짓 OFF 방지 | 적용·시험. 원천이 계속 0인 채널은 여전히 미확인 |
| TEL-09 | RCTA·배터리 검증 | 좌우 후방 교차 경고의 예약값·미확인과 미수신 배터리 경보 제한 | 적용·시험. BSD 기능 ON/OFF와 RCTA 경고는 별개 |
| TEL-10 | 비동기 발행·keepalive | broker 지연과 수신 thread 분리, 지속 수신 중 PINGREQ 유지 | 실차/서버 시험. queue 초과·drop은 관측값으로 남김 |
## 14. 디지털 액자
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| FRAME-01 | 순정 사진 공급 | 목록·다운로드를 순정 DB·파일·변경 알림에 연결 | 실차 확인. 개인 사진은 미공개 |
| FRAME-02 | 두 표시 경로 | 설정·분할 화면의 계정/기능 조건만 제한적으로 보완 | 실차 확인. 재부팅 뒤 사진·mapping 확인 |
| FRAME-03 | 해상도·비율 | 업로드 한도·자동 축소, 전체/분할 화면 비율 각각 유지 | 운영·실차 확인. 1920×720·640×720 이내 맞춤 |
| FRAME-04 | 회전·투명도 | EXIF 회전·PNG 투명도를 고려한 변환 | 서버 시험. 모든 codec·손상 입력 지원 아님 |
## 15. 순정 내비·지도·경로 옵션
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| NAV-01 | 중앙 차속 보정 | 내비 공유 입력 한 지점에서 1 이상일 때 -1, 0 유지 | 실차 확인. ECU·계기판·OBD 원시 속도 불변 |
| NAV-02 | 구간 평균 표시 | 표시 입력만 보정하고 계산·초과 판단 보존 | 적용·ARM 시험. 모든 실제 구간 화면 검증은 별도 |
| NAV-03 | 지도 RPM | 속도 atlas 대신 순정 텍스트 객체로 RPM/1,000·소수 한 자리 표시 | 실차 확인. 실제 0일 때만 0.0, 원천 없으면 숨김 |
| NAV-04 | RPM 주·야간 색 | 전용 foreground를 주간 검정·야간 흰색으로 유지 | 적용·실차 일부 확인. 다른 문자열·속도 색은 불변 |
| NAV-05 | 9단계 자동 축척 | 50·75·100·150·200·300·400·600·800 m | 적용·재부팅 확인. 모든 속도·특수 화면 회귀 완료 아님 |
| NAV-06 | AUTO 숫자 연동 | 실제 배율과 라벨의 중간 단계 불일치 보완 | 실제 150 m/라벨 150 m 확인, 나머지는 ARM 시험과 구분 |
| NAV-07 | 경치 좋은 길 | 설치 DB·사진·scene의 메뉴·4코스·미리보기·목적지/경유지 복원 | 실차 확인. 새 온라인 코스 생성 아님 |
| NAV-08 | 회피 조건 5종 | 고속도로·페리·유료도로·터널·비포장 설정과 순정 비용 경로 연결 | 적용·메뉴·기본 계산 확인. 유형별 비교 주행은 미완료 |
| NAV-09 | 주 경로 종류 구분 | 추천·최소요금·최단거리, 회피 조건, 온라인 5종 계약 분리 | 분석·실차 확인. ECO·온라인 전종 활성화 상태 아님 |
| NAV-10 | 지도·엔진 호환 | 신지도/구형 엔진의 HAFP crash 분석, 대응 엔진에 기존 기능 재이식 | 동일 실패 목적지 계산 성공. 지도만 바꿔도 항상 호환되는 것은 아님 |
| NAV-11 | native 변경 검증 | 입력 해시·ELF·허용 창·분기·ABI·mapping·UI를 분리 확인 | 로컬/실차 확인. OEM stub 시험과 실제 렌더링은 다름 |
## 16. DMB/TPEG 교통정보
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| TPEG-01 | post-lock 대기 | 실제 자동 스캔의 PCBER/FIC 확정 대기를 10초로 조정 | 실차 적용. 60분 정보 보존 TTL과 다른 시간값 |
| TPEG-02 | 부팅 준비 순서 | 튜너 준비를 preboot 앞쪽에 완료, 부팅 뒤 몰래 서비스 재시작하지 않음 | 재부팅 수신 확인. 준비 실패는 상태로 기록 |
| TPEG-03 | 서비스 재연결 | 종료된 수신 서비스 Binder를 붙잡던 미수신 경로 복구 | 실차 packet·내비 callback 확인 |
| TPEG-04 | 도로별 유효값 보존 | 누락·무효 0은 이전 값 유지, 새 유효값으로 교체, 최대 60분 보존 | 적용·회귀 확인. 정확한 60분 화면 경계는 별도 |
| TPEG-05 | 수신·coverage 분리 | RF·packet·callback·도로별 시각·화면 갱신 따로 분석 | 분석 확인. 방송 지연·미지원 골목·만료 회색은 남음 |
## 17. 후면 단속 카메라
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| CAM-01 | 기존 rear 복원 | 기준 DB와 parcel·종류·속도·좌표·방향이 맞는 기존 항목만 복원 | DB·기존 주행 확인. 전 카메라 후면 지정 아님 |
| CAM-02 | 저장 뒤 후처리 | 순정 DB 검증·rename 성공 후 병합하도록 hook 위치 수정 | 적용·재부팅 확인. 새 엔진의 다음 DB 교체 내구성은 별도 |
| CAM-03 | 원자 갱신·필드 보존 | CRC·의미 검사 후 후면 외 값이 바뀌지 않는 후보만 교체 | DB·시험 확인. 실패 후보 강제 적용 안 함 |
| CAM-04 | 신규 후면 한계 | 현 무선·IP decoder에 rear 입력이 없는 계약 확인 | 분석 확인. 새 분류원 없이 신규 후면 추정 안 함 |
## 18. 자가 차계부와 관련 서버 기능
이 절은 서버 코드·시험·운영 문서 기준입니다. 실제 주유·정비 결제·취소의 현장 acceptance를 이번 공개 작업에서 새로 확인한 것은 아닙니다. 개인 금융·위치·영수증 자료는 공개하지 않습니다.
| ID | 기능·수정 | 구현과 확인 범위 | 상태·제약 |
|---|---|---|---|
| LEDGER-01 | 장부·통계 | 주유·정비·기타비용·주행 입력·수정·soft-delete·통계·내보내기 | 구현·시험. 개인 비용·누적거리는 미공개 |
| LEDGER-02 | 기존 장부 가져오기 | XLS/XLSX 미리보기·정규화·합계 검증·중복 방지·원본 보존 | 구현·시험. 같은 0원 점검 임의 병합 안 함 |
| LEDGER-03 | 모뎀 기준 주행 판정 | 신선한 시동·주행 근거로 시작, 헤드유닛 단절·정차를 종료로 오인 안 함 | 구현·시험. stale 시동은 OFF 아닌 UNKNOWN |
| LEDGER-04 | 종료 유예·재연결 | 유예 내 재시동은 동일 세션 복귀, 상태·끝점 영속 저장 | 구현·운영 보완. 기본 종료 유예 30분 |
| LEDGER-05 | 거리·연비 | 종료-시작 누적거리 차, 확인된 단위만 정규화, 역행·급증 거절 | 구현·시험. 속도 적분·과거값 현재화 안 함 |
| LEDGER-06 | 주유·방문 후보 | 위치·거리·수신 근거의 후보와 확인/수정/무시/되돌리기 | 구현·시험. 미확보 연료 %로 주유 자동 확정 못 함 |
| LEDGER-07 | 금융 사건 | HA 승인·취소·입출금·이체를 제한 필드로 정규화 | 구현·시험. 알림 원문·전체 카드/계좌번호 저장 안 함 |
| LEDGER-08 | 규칙·학습·AI 보조 | 사용자 규칙·확정 이력·결정론 분류 우선, 불명확 사건만 보조 | 구현·시험. AI가 금액·내역 생성/DB 직접 쓰기 안 함 |
| LEDGER-09 | 주유소·금액 배분 | 유가 조회·검증 장소 기억·주유/세차 배분과 출처 보존 | 구현·시험. 후보가 경쟁하면 자동 확정 안 함 |
| LEDGER-10 | PWA·오프라인 초안 | 설치 안내·제한 앱 셸 캐시·멱등 동기화·schema 갱신 경계 | 구현·시험. 인증·장부·금융 API 캐시 안 함 |
| LEDGER-11 | 영수증·정비 규칙 | 로컬 OCR·민감 숫자 마스킹·날짜/거리 주기·확인 알림 | 구현·시험. 영수증 이미지를 외부 AI로 보내지 않음 |
| LEDGER-12 | 백업·복원·감사 | 장부 백업·복원 미리보기·감사·운영 DB 보관/무결성 | 구현·시험. 백업은 공개 저장소로 보내지 않음 |
## 19. 분석·보류·미지원
| ID | 주제 | 확보한 것 | 완료로 보지 않는 범위 |
|---|---|---|---|
| RESEARCH-01 | TApp 복구 | 최적화 명령·class·dependency 복구·검증 | 제조사 디컴파일 전체는 공개하지 않음 |
| RESEARCH-02 | MICOM·차량 I/O | Binder·native·UART/SPI·variant·신뢰 경계 분류 | 암호화 MCU의 전체 instruction 분석 미완료 |
| RESEARCH-03 | 연료 잔량 % | getter·HSCAN·MICOM 수신과 실제 게이지 변화 대조 | 유효 원천 미확보. 고정값·0·미수신값 환산 안 함 |
| RESEARCH-04 | Naver 경로 | 요청 codec·지도 link 매칭·단일 응답·parser 시험 | 무기한 보류. 실제 안내·임의 경로·주기/이탈 재탐색 미완료 |
| RESEARCH-05 | IP 교통 | 계약·PVID·외부 관측 변환 연구 | 무기한 보류. 전체 coverage·색상·fallback 미완료 |
| RESEARCH-06 | ECO 주 경로 | 한국형 비용 factory·연료 표·강제 연결 실패 조건 확인 | 미적용. 메뉴·비용 class만 강제 연결 안 함 |
| RESEARCH-07 | 무선 AA/CarPlay | 이전 SPP 실패·원복, 외부 구현과 니로 앱 호환성 검토 | 실연결·오디오·재연결·인터넷 STA+AP 동시 운용 미완료 |
| RESEARCH-08 | Bluetooth 끊김 | 무선 AAC 유지 중 내부 PCM relay/jitter buffer 고갈 경계 확인 | 순정 유지. 단일 원인 명령·수정 완료 아님 |
| RESEARCH-09 | ECU 정비 쓰기 | 읽기와 DTC 삭제·액추에이터·코딩의 요구 조건 구분 | 전송기·검증·복구 미확보, 포털 요청 UI도 제거 |
| RESEARCH-10 | OTA·완전 차단 wake | 업데이트 내구성·별도 수신기·에뮬레이터 한계 검토 | 전 패치 자동 OTA 서버·저전력 wake 장치 미구현 |
## 20. 원복·폐기한 방식
| ID | 과거 방식 | 현재 처리 |
|---|---|---|
| Wi-Fi·관리 경로 | 순정 STA 연결·설정 저장·재부팅 자동 연결, SSH·Tailscale 운영 | 다른 차종·공유기 조합은 미검증 |
| 순정 Wi-Fi 메뉴 | 순정 설정 타일·Wi-Fi 탭 관련 분기만 제한적으로 복원 | 전역 feature 판정 위장 안 함 |
| 날씨·대기질 | 홈·상세·예보·갱신, 관측과 모델 fallback 구분 | 공급자 coverage·갱신 주기 의존 |
| 웰컴 날씨 TTS | 날씨 전용 대기 경로와 실행 시간대 보정, 야간 냉간 부팅 출력 | 뉴스 브리핑 구현 아님 |
| HA 캘린더 | 읽기 전용 일정 변환·순정 목록·수동 갱신 | 일정 필드별 모든 현장 조합은 미검증 |
| 스포츠 | 지원 6종목의 팀 데이터·순정 parser·목록 | 현재 시즌·경기·순위는 공급자 플랜 의존, 골프·크리켓 미공급 |
| 위치공유 | 번호 정규화·수신자별 링크·기존 링크 재사용·신규 SMS·부분 실패 격리·개별 해지 | 최신 GPS 대기·Binder 재연결 등 지속 개선 |
| 공유 웹 화면 | 같은 페이지의 위치·허용 차량정보·지도·이동 궤적 갱신 | 링크 수명·권한을 넘는 정보는 미공개 |
| 목적지 전송 | 주소 검색→대기열→순정 POI→최종 ACK | Android·네트워크가 꺼지면 수신 불가 |
| 순정 진단 | 12개 고유 ECU와 읽기 보고 경로 확인 | 외부 장비 충돌 방지 유지, 정비 쓰기 제외 |
| 원격제어 | 확인된 시동·도어 명령의 순정 실행과 최종 응답 연계 | 모든 명령 검증 아님, 완전 전원 차단 뒤 제어 불가 |
| HA·MQTT | 의미를 확인한 센서·변화값 전달, 잘못된 초기값 발행 제한 | 공용 getter가 모두 해당 차량의 유효 센서는 아님 |
| 디지털 액자 | 순정 표시 경로·이미지 리사이즈·서로 다른 화면 비율 대응 | 두 화면에 같은 픽셀 배열을 강제로 맞추지 않음 |
| 지도 RPM | 실제 수신 RPM/1,000과 소수 한 자리, 주·야간 색상 | 연료 %나 ECU 제어와 별개 |
| 내비 차속 | 내비 내부 한 입력 경계에서 1 이상일 때 -1, 0 유지 | ECU 원시 속도 변경 아님 |
| 구간 평균속도 | 화면 표시 보정, 계산·초과 판단 경로 보존 | 실제 구간 진입의 모든 화면 회귀는 미완료 |
| 자동 축척 | 50·75·100·150·200·300·400·600·800 m | 일부 단계의 실제 렌더링·라벨 확인, 전 화면 검증 아님 |
| 경치 좋은 길 | 설치 지도 DB·사진·기존 scene을 이용해 메뉴·목록·미리보기 복원 | 별도 온라인 추천 경로가 아님 |
| 회피 옵션 | 고속도로·페리·유료도로·터널·비포장 회피 메뉴와 OEM 비용 경로 연결 | 각 도로 유형의 비교 주행 시험은 미완료 |
| 지도·엔진 | 신지도와 맞는 엔진으로 HAFP 경로 계산 crash 대응 | 지도만 바꿔도 항상 호환된다는 뜻 아님 |
| DMB/TPEG | PCBER/FIC·서비스 재연결·개별 값 보존 경계 보정 | 방송 지연·수신 음영·미지원 도로는 남음 |
| 후면 카메라 | 일치 조건을 만족하는 기존 후면 DB 속성 보존 | 방송에 없는 신규 rear 속성은 추정하지 않음 |
| RETIRED-01 | Launcher 날씨 ODEX·위젯 임의 주입 | 원복. 순정 계약·TApp 경계 사용 |
| RETIRED-02 | Launcher/Qibla Wi-Fi·전역 generic 성공 판정 | 폐기. 순정 설정 타일·탭의 최소 수정으로 대체 |
| RETIRED-03 | 전체 dumpsys·전체 JSON 주기 반복 | callback·의미 검증·항목별 변화 토픽으로 대체 |
| RETIRED-04 | 지연 RPM getter·숫자 atlas에 소수점 추가 | 폐기. 수신 전용 source·별도 순정 텍스트 사용 |
| RETIRED-05 | 여러 화면에서 따로 차속 -1 | 원복 후 내비 중앙 입력 한 곳으로 통합 |
| RETIRED-06 | 초기 DMB late-lock +100 ms | 원복. 현재 post-lock 대기·교통 TTL과 구분 |
| RETIRED-07 | N 모드 앱·payload·센서·운영 참조 | 완전 폐기. 제조사 ROM 공용 class 자체 삭제 아님 |
| RETIRED-08 | 경로/IP bridge·후보·과거 sidecar | 보류 기능의 차량 실행 자산 제거, 연구 자료는 비공개 PC 보존 |
## 보류·미구현·미지원
## 혼동하면 안 되는 경계
| 항목 | 상태와 이유 |
|---|---|
| Naver 경로 완전 이식 | 무기한 보류. 단일 geometry의 지도 link 변환과 parser 시험은 있었지만, 순정 지도 안내·옵션·재탐색 전체는 미완료 |
| IP 교통정보 | 무기한 보류. 계약과 설치 지도 식별자 변환을 연구했으나 전체 coverage·실차 표시 완료 아님 |
| 무선 AA/CarPlay | 순정 비활성. 외부 구현과 니로 원본의 호환성 분석 단계, 실연결 성공 아님 |
| 인터넷 STA+projection AP 동시 사용 | 미구현·실차 검증 필요 |
| ECO 주 경로 | 미적용. 한국형 비용 factory·연료 표 경로가 연결되지 않아 메뉴 노출만으로 해결 불가 |
| 실제 연료 잔량 % | 미확인. 고정 getter·미수신값을 잔량으로 환산하지 않음 |
| DTC 삭제·강제 액추에이터·ECU 코딩 | 운영 기능으로 제공하지 않음 |
| 실제 CarPay 결제 | 구현하지 않음. 가맹·차량·결제 인증을 로컬 성공 응답으로 대체하지 않음 |
| MCU 내부 전체 역분석 | 완료 아님. Android/native 경계와 암호화된 MCU 실행 코드를 구분 |
- 위치공유, 정적 목적지 문자 링크, 웹에서 차량으로 보내는 목적지는 다른 기능입니다.
- 경로 종류·회피 조건·외부 온라인 계약은 다릅니다.
- TPEG packet 주기·post-lock 대기·도로별 TTL은 다릅니다.
- MQTT 송신 성공·값의 유효성·최신성·실제 차량 상태는 다릅니다.
- 분석·합성 시험·적용·실차 관측·모든 조건 검증을 같은 완료로 묶지 않습니다.
추가 구현·새 검증이 생기면 해당 항목의 상태·근거·한계를 함께 갱신합니다. 기능명을 나열하는 것과 개인 운영·운행·금융 자료를 공개하는 것은 별개입니다.
+7
View File
@@ -4,6 +4,12 @@
기존 비공개 운영 저장소의 `.git`·이력·설정·리모트를 복사하지 않고 새 이력으로 시작합니다. 이 저장소를 운영 배포의 기준선으로 사용하지 않습니다.
## 기능 설명과 소스 공개의 구분
2026-11-02 문서 확장에서 전체 프로젝트의 기능·수정·연구·원복 이력을 [기능 목록](FEATURES_KO.md)에 정리했습니다. 차량은 2026-11-01 운영 기록, 서버는 해당 시점의 코드·운영 문서를 근거로 하며, 공개 문서 작성 자체를 새로운 실차·금융 시험으로 기록하지 않습니다.
기능 설명을 늘린 것은 해당 기능의 전체 소스·실행 payload·자동 설치법까지 공개한 것이 아닙니다. 공개 코드는 아래 선별 모듈 범위를 유지합니다. 기능 설명에서는 개인 운영 주소·계정·전화번호·좌표·실제 금융 내역을 빼고 역할·데이터 흐름·확인 범위·한계만 남겼습니다.
## 초기 공개 소스의 출처
| 공개 모듈 | 성격 | 시험 입력 |
@@ -31,6 +37,7 @@ Java namespace는 원래 코드의 `com.chaegeon.niro`를 유지합니다. 이
- 차량의 실제 GPS·주행 기록·전화번호·VIN·차량 고유 식별자
- API 키·비밀번호·SSH 개인키·MQTT 인증정보·공유 원문 token
- 실차·운영 서버의 원문 로그·DB·백업·내부 주소·배포 설정
- 개인 일정·사진·영수증·금융 알림·카드/계좌 식별자·실제 장부와 주유 내역
- 차량 자동 접속·재부팅·실제 명령 실행·ECU 쓰기 기능
- 이전 비공개 Git 이력과 운영 배포 파일