You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
6.2 KiB

# 릴리스 노트 — Web Configurator **v1.11.16**
- **배포일**: 2026-06-23
- **대상**: 디바이스 BSP 이미지 포함용 (DP World Smart Solutions · IoT 디바이스)
- **패키지**: 내부 git 태그 `v1.11.16` (커밋 히스토리가 없는 **클린 스냅샷**)
- **이전 버전**: v1.11.15
---
## 1. 한눈에 보기
이번 릴리스는 **배포 패키지 정비 릴리스**입니다. 앱 기능·디바이스 계약·UI는 v1.11.15와 동일하며,
다음 두 가지를 정비했습니다.
1. **MemoryMax 상향** (`48M → 128M`) — 운영 중 OOM-kill 위험 제거.
2. **BSP 통합 가이드 정비** — 네트워크-적용 하드닝 스크립트의 권장 통합 방식을
**"펌웨어 원본 스크립트 직접 교체(BSP 베이킹)"** 를 1차 방식으로 재구성.
- Python 3 **표준 라이브러리(stdlib)만** 사용 — 외부 pip 패키지 없음
- systemd 유닛 포함, nginx 설정은 optional sample → **이미지에 바로 포함 가능**
- 기존 디바이스 DB는 **부팅 시 자동 변환**(1회, 멱등) — 수동 작업 불필요
---
## 2. 주요 변경 (v1.11.15 → v1.11.16)
| 항목 | 변경 |
|---|---|
| **MemoryMax** | `web-configurator.service``MemoryMax`**48M → 128M** 로 상향. 48M는 support-bundle(진단 zip, 메모리 빌드)과 UI 동시 사용 시 실측 피크 ~40-50MB로 OOM-kill 위험이 있었음. 128M = 실피크 ~2.5x 여유 + 누수 방지 캡 유지 (장비 RAM 3.4GB 대비 3.7%). |
| **BSP 통합 방식 1차 = 직접 교체** | 네트워크-적용 하드닝본을 **`/usr/bin/dpworld-network-apply.sh` 원본 이름으로 교체 설치**하는 것을 BSP 베이킹의 기본 방식으로 명시. `.service.d` override 드롭인은 **라이브 디바이스 후적용(over-the-top) fallback** 으로 강등. (자세히 `BSP-INTEGRATION.md` §7 + `docs/firmware-boot-hardening.md`) |
| 패키지 구성 정리 | 배포물을 repo 루트(flat)로 정리, 내부 전용 참조/링크 정돈. 런타임 코드 변경 없음. |
> 앱 코드 자체는 **v1.11.15와 동일**합니다 (UI/기능 무변경). 본 릴리스는 배포 단위의
> 메모리 정책 + 통합 가이드 정비입니다.
---
## 3. 네트워크-적용 하드닝 — 통합 방식 (중요)
디바이스 펌웨어는 다음 base 구성을 제공합니다(firmware-native):
- `dpworld-network-apply.service` / `dpworld-network-seed.service` (유닛)
- `/usr/bin/dpworld-network-apply.sh` (base 스크립트)
이 base 스크립트에는 WiFi 국가 코드 변경 시 `modprobe -r wlan` 으로 모듈을 라이브 재로드하는
경로가 있어, QCA6490(cnss_pci)에서 **PMU 워치독 재부팅 루프**를 유발한 이력이 있습니다.
본 패키지의 `dpworld-network-apply-hardened.sh` 가 이 문제를 제거한 **완전 대체본**입니다.
**① 권장 — BSP 베이킹(직접 교체):** 펌웨어 이미지를 빌드하는 협력사는
`deploy/dpworld-network-apply-hardened.sh` 의 내용을 **`/usr/bin/dpworld-network-apply.sh`
원본 이름으로 설치**(펌웨어 원본 교체)하면 됩니다. base 서비스/시드 유닛이 이미 그 경로를
호출하므로 apply·`--boot` 모두 자동으로 하드닝 동작을 탑니다. **드롭인은 베이킹하지 않습니다.**
**② Fallback — 라이브 후적용(override):** 이미 구워진 디바이스에 펌웨어 교체 없이 얹을 때만,
하드닝본을 별도 파일로 두고 `dpworld-network-apply.service.d/` + `dpworld-network-seed.service.d/`
드롭인으로 ExecStart를 교체합니다. (우리 개발용 `scripts/deploy.ps1` 가 이 방식을 사용)
→ 단계별 절차는 `docs/firmware-boot-hardening.md` "펌웨어 베이킹 (BSP) — 원본 교체 방법" 참조.
---
## 4. 호환성 · 주의사항
- **디바이스 적용 시점**: dpworldapp 재시작 시 새 계약값으로 config가 재적용됩니다.
- **nginx optional**: `deploy/nginx.conf`는 BSP에서 `:80` reverse proxy를 제공할 때 쓰는 sample입니다. `scripts/deploy.ps1`는 nginx를 설치/수정하지 않으며, 디바이스가 앱을 `:9090`으로 직접 접근하면 없어도 됩니다. sample을 쓸 경우 `proxy_pass`를 앱 포트 `:9090`으로 맞추세요.
- **런타임 의존성**: python3 stdlib만 필요 (RDEPENDS 목록은 `BSP-INTEGRATION.md` 참조). 외부 패키지 없음.
- **dpworldapp**(텔레메트리 바이너리)는 firmware-native.
---
## 5. 배포 방법 (BSP)
1. **패키지 입수**: 내부 git 태그 `v1.11.16` (또는 동봉 스냅샷)
2. **레시피 작성**: `BSP-INTEGRATION.md`의 샘플 bitbake recipe + 설치 경로표 사용
- `src/``/opt/web-configurator/src/`
- `deploy/*.service` → systemd 유닛 디렉토리
- `deploy/dpworld-network-apply-hardened.sh`**`/usr/bin/dpworld-network-apply.sh`** (펌웨어 원본 교체, §3 ①)
- `deploy/nginx.conf` → optional nginx sample site config
- `web-configurator.service` enable
3. **검증**: 이미지 부팅 후 `systemctl status web-configurator` + `curl http://127.0.0.1:9090/`
---
## 6. 품질/검증
- v1.11.16 변경은 **앱 로직 무변경** — systemd 서비스 메모리 캡(MemoryMax) + 문서/주석/버전 문자열뿐입니다.
기능 동등 기준선 **v1.11.15**는 내부 테스트 스위트(Python + 프런트 `.mjs`)로 검증되었습니다.
- 테스트 스위트는 내부 저장소에서 관리되며 **본 배포물에는 포함되지 않습니다**.
- 패키지는 **커밋 히스토리 없음**(`git archive` 스냅샷) + 내부 분석/개발 자료 제외 (`DELIVERABLE-MANIFEST.txt` 참조).
---
## 7. 롤백
- BSP recipe의 버전 핀(태그/SRCREV)을 **v1.11.15**로 되돌리면 이전 버전 배포.
- 마이그레이션은 **멱등 + 변경 전 자동 백업**(config_safety)으로 보호됩니다.
---
## 버전 이력 (요약)
| 버전 | 일자 | 요약 |
|---|---|---|
| **v1.11.16** | 2026-06-23 | MemoryMax 48M→128M + BSP 베이킹(직접 교체) 가이드 1차 정비 (앱 기능 무변경) |
| v1.11.15 | 2026-06-23 | 사이드바 System 그룹 monitor 아이콘 정리 |
| v1.11.14 | 2026-06-23 | 사이드바 부모 그룹(System=Dashboard+Log / Firmware) 재편 |
| v1.11.11 | 2026-06-23 | config 쓰기 경로를 디바이스 config-reader 계약에 정렬 + 자동 마이그레이션 |
| v1.11.10 | 2026-06-20 | 전체 코드리뷰 fix (37건) |