--- domain: core-service last_rule_review_commit: 60eb73c2813f47e7157464bcd24b4db314c2ffce last_rule_updated_at: 2026-05-26 --- # core-service ## 목적 / 책임 Mattermost 기반 메시징 서버 코어와 관련 웹앱, API 문서, 로컬 compose 실행 환경을 담당한다. upstream baseline과 비교 가능한 상태를 유지하는 것이 중요하다. ## 포함 경로 - `services/core/server/` — Go 기반 Mattermost server module - `services/core/webapp/` — Mattermost webapp, platform packages, frontend tooling - `services/core/api/` — API reference tooling - `services/core/compose/` — local core runtime Docker Compose - `services/core/e2e-tests/`, `services/core/tools/` — core 검증 및 보조 도구 - `services/core/UPSTREAM.md` — upstream baseline 기록 ## 제외 경로 - `packages/messaging_flutter/` — Flutter push plugin 책임 - `apps/client/` — plugin consumer app 및 integration host 책임 - `docs/`, `bin/` — 워크스페이스 공통 운영 문서와 entrypoint 책임 ## 주요 구성 요소 - `services/core/server/go.mod` — Mattermost server Go module 기준 - `services/core/webapp/package.json` — webapp npm workspace 기준 - `services/core/api/package.json` — API reference tooling 기준 - `services/core/compose/docker-compose.yml` — local core 서비스 구성 ## 유지할 패턴 - Mattermost upstream에서 온 구조와 명명은 필요한 경우에만 변경한다. - 제품 특화 변경은 좁은 파일 범위로 유지하고, upstream 재동기화를 방해하지 않게 설명 가능한 단위로 남긴다. - Go 검증은 기본 `bin/test`에서 skip되며, 필요할 때 `NEXO_CORE_GO_TEST=1` 등 명시적 플래그로 실행한다. - webapp 변경은 기존 npm workspace와 package script를 따른다. ## 다른 도메인과의 경계 - **messaging-flutter**: server는 push payload와 ACK endpoint 성격을 제공하고, native 알림 표시와 device token 저장은 plugin이 담당한다. - **client-app**: server runtime과 client host 검증은 분리한다. client app에서 server 내부 코드를 직접 수정하지 않는다. - **workspace-ops**: 공통 실행 스크립트가 core 명령을 호출할 수 있지만 core 내부 정책은 이 도메인이 소유한다. ## 금지 사항 - `services/core/UPSTREAM.md` baseline을 근거 없이 변경하지 않는다. - 대량 rename, formatting-only churn, upstream 파일의 광범위 재배치를 작업 범위 없이 수행하지 않는다. - generated/build/cache 산출물을 소스 변경처럼 다루지 않는다.