63 lines
3.8 KiB
Markdown
63 lines
3.8 KiB
Markdown
---
|
|
domain: push-proxy-service
|
|
last_rule_review_commit: 8a7115d9c82e15b9f35bcfa019acb4b34962e81f
|
|
last_rule_updated_at: 2026-06-01
|
|
---
|
|
|
|
# push-proxy-service
|
|
|
|
## 목적 / 책임
|
|
|
|
`services/push-proxy`는 Mattermost push-proxy 원본 repository clone을 담당한다. nexo runtime image 검증에 쓰이더라도 원본 push notification proxy service로 유지하고, upstream-followable snapshot 기준을 보존한다.
|
|
|
|
## 포함 경로
|
|
|
|
- `services/push-proxy/` — Mattermost push-proxy repository snapshot
|
|
- `services/push-proxy/server/` — Android/APNs notification server, config, metrics, HTTP server implementation
|
|
- `services/push-proxy/config/` — sample push-proxy configuration
|
|
- `services/push-proxy/docker/` — container image build definitions
|
|
- `services/push-proxy/internal/` — internal version package
|
|
- `services/push-proxy/swagger/` — push-proxy API spec tooling
|
|
- `services/push-proxy/go.mod`, `services/push-proxy/Makefile` — Go module and release/build entrypoints
|
|
- `services/push-proxy/package.json` — swagger/npm tooling metadata
|
|
- `services/push-proxy/UPSTREAM.md` — upstream baseline 기록
|
|
|
|
## 제외 경로
|
|
|
|
- `services/core/` — Mattermost server/webapp runtime 책임
|
|
- `packages/messaging_flutter/` — Flutter push plugin 책임
|
|
- `apps/flutter-test/` — plugin 검증용 Flutter test host 책임
|
|
- `apps/mattermost/` — Mattermost mobile app clone 책임
|
|
- `docs/`, `bin/` — workspace 공통 문서와 command 책임
|
|
|
|
## 주요 구성 요소
|
|
|
|
- `services/push-proxy/main.go` — push-proxy process entrypoint
|
|
- `services/push-proxy/server/android_notification_server.go` — FCM notification delivery path
|
|
- `services/push-proxy/server/apple_notification_server.go` — APNs notification delivery path
|
|
- `services/push-proxy/server/config_push_proxy.go` — push-proxy configuration loading
|
|
- `services/push-proxy/server/metrics.go` — metrics exposure
|
|
- `services/push-proxy/docker/Dockerfile` — runtime image build 기준
|
|
- `services/push-proxy/UPSTREAM.md` — source repository, branch, snapshot commit 기록
|
|
|
|
## 유지할 패턴
|
|
|
|
- upstream branch는 Mattermost push-proxy `master` 기준으로 추적하고, snapshot commit은 `services/push-proxy/UPSTREAM.md`에 기록한다.
|
|
- 이 도메인은 push notification proxy server clone으로 유지하며 nexo 독자 서버 제품으로 재정의하지 않는다.
|
|
- runtime image build는 `services/push-proxy/docker/`와 Go module 기준을 사용하고, publish orchestration은 workspace-ops wrapper가 담당할 수 있다.
|
|
- upstream snapshot 반영은 app 또는 core snapshot과 섞지 않고 별도 작업 단위로 다룬다.
|
|
- nexo-specific patch가 필요하면 가능한 한 snapshot 밖의 compose, 문서, wrapper, 작은 명시 patch로 둔다.
|
|
|
|
## 다른 도메인과의 경계
|
|
|
|
- **core-service**: Mattermost server runtime은 `services/core`가 소유하며, push-proxy는 server가 위임하는 push notification delivery endpoint 역할을 한다.
|
|
- **messaging-flutter**: device token 저장, native notification 표시, ACK/open/reply 처리는 Flutter plugin이 소유하며, push-proxy는 Android/APNs push 전달 서버 역할만 한다.
|
|
- **mattermost-app**: Mattermost mobile app은 push-proxy를 필요로 하는 client clone이며, push-proxy server 구현을 소유하지 않는다.
|
|
- **workspace-ops**: workspace wrapper가 image build/publish를 호출할 수 있지만 push-proxy server 구현과 Dockerfile 기준은 이 도메인이 소유한다.
|
|
|
|
## 금지 사항
|
|
|
|
- `services/push-proxy/UPSTREAM.md` baseline을 근거 없이 변경하지 않는다.
|
|
- 이 도메인을 `services/core` 하위 구성 요소로 흡수하거나 nexo 독자 서버 제품으로 확장하지 않는다.
|
|
- upstream-owned 파일에 대량 rename, formatting-only churn, 광범위 재배치를 작업 범위 없이 수행하지 않는다.
|
|
- generated/build/cache 산출물을 소스 변경처럼 다루지 않는다.
|