image
Akan.js
한국어
문서 (V1)
image
Akan.js
현재 Akan.js v1 문서를 보고 있습니다.최신 v2 문서 보기
문서 (V1)
MIT 라이선스 하에 배포되었습니다.
Akan.js 공식 컨설팅 서비스Akansoft
Copyright © 2026 Akan.js 모든 권리 보유.
시스템 관리자bassman
소개
• 시작하기
• 작동원리
• 실습하기
튜토리얼
• 상세하게 보여주기
• 상태 변경하기
• 서비스 내에서 상호작용
• 슬라이스로 표시하기
• 페이지를 통한 UX
• 스칼라 사용하기
• 인사이트 사용하기
• 데이터 연결하기
시스템 아키텍처
• 개요
• 백엔드 시스템
• 프론트엔드 시스템
• 환경변수
• 기본 스칼라 타입
• 도메인 기반 모듈
• CSS
모듈 규칙
• 개요
• model.constant.ts
• model.dictionary.ts
• model.document.ts
• model.service.ts
• model.signal.ts
• model.store.ts
• Model.Template.tsx
• Model.Unit.tsx
• Model.Util.tsx
• Model.View.tsx
• Model.Zone.tsx
스칼라 규칙
• 개요
• scalar.constant.ts
• scalar.dictionary.ts
• scalar.document.ts
소개
• 시작하기
• 작동원리
• 실습하기
튜토리얼
• 상세하게 보여주기
• 상태 변경하기
• 서비스 내에서 상호작용
• 슬라이스로 표시하기
• 페이지를 통한 UX
• 스칼라 사용하기
• 인사이트 사용하기
• 데이터 연결하기
시스템 아키텍처
• 개요
• 백엔드 시스템
• 프론트엔드 시스템
• 환경변수
• 기본 스칼라 타입
• 도메인 기반 모듈
• CSS
모듈 규칙
• 개요
• model.constant.ts
• model.dictionary.ts
• model.document.ts
• model.service.ts
• model.signal.ts
• model.store.ts
• Model.Template.tsx
• Model.Unit.tsx
• Model.Util.tsx
• Model.View.tsx
• Model.Zone.tsx
스칼라 규칙
• 개요
• scalar.constant.ts
• scalar.dictionary.ts
• scalar.document.ts
이전
model.service.ts
다음
model.store.ts

model.signal.ts

Signal은 모듈의 외부 인터페이스를 정의합니다. 다양한 프로토콜(HTTP, GQL, WebSocket)을 통해 Service 로직을 외부 세계와 연결합니다.
📡세 가지 Signal 유형
  • Internal: 백그라운드 작업, 크론 잡
  • Endpoint: 공개 API (REST/GQL, WebSocket)
  • Slice: 프론트엔드용 데이터 서브셋

내부 작업 정의하기

`internal()`을 사용하여 사용자 요청과 독립적으로 실행되는 크론 잡이나 프로세스 큐와 같은 백그라운드 작업을 정의합니다.
method설명예제
interval(ms)'ms' 밀리초마다 실행되는 반복 작업을 정의합니다.
process(ReturnType)워커가 처리하는 백그라운드 프로세스 큐를 정의합니다.
interval(ms)

'ms' 밀리초마다 실행되는 반복 작업을 정의합니다.

process(ReturnType)

워커가 처리하는 백그라운드 프로세스 큐를 정의합니다.

product.signal.ts

공개 API 정의하기

`endpoint()`를 사용하여 표준 API 메서드를 정의합니다. Query, Mutation, 실시간 구독을 혼합하여 사용할 수 있습니다.
Method Types
method설명예제
query(ReturnType, options?)GraphQL Query 또는 HTTP GET 엔드포인트를 정의합니다.
mutation(ReturnType, options?)GraphQL Mutation 또는 HTTP POST 엔드포인트를 정의합니다.
message(ReturnType, options?)WebSocket 메시지 핸들러를 정의합니다.
pubsub(payloadType)PubSub 토픽 핸들러를 정의합니다.
query(ReturnType, options?)

GraphQL Query 또는 HTTP GET 엔드포인트를 정의합니다.

mutation(ReturnType, options?)

GraphQL Mutation 또는 HTTP POST 엔드포인트를 정의합니다.

message(ReturnType, options?)

WebSocket 메시지 핸들러를 정의합니다.

pubsub(payloadType)

PubSub 토픽 핸들러를 정의합니다.

Parameter Builders
파라미터는 엄격하게 범위가 지정됩니다. 예를 들어, Query에서 `.room()`을 사용하거나 Subscription에서 `.body()`를 사용할 수 없습니다.

표준 모델 API

다음 메서드들은 모든 모델에 대해 자동으로 생성되며 `fetch` 객체를 통해 사용할 수 있습니다.
method설명예제
view[Model](id: string): Promise<ViewReturn>상세 보기 데이터를 가져옵니다. { [Model], [Model]View }를 반환합니다.
edit[Model](id: string): Promise<EditReturn>편집을 위한 데이터를 가져옵니다. { [Model], [Model]Edit }를 반환합니다.
merge[Model](id: string | null, data: Partial<Model>): Promise<Model>모델 데이터를 생성하거나 업데이트합니다. 업데이트된 Model을 반환합니다.
view[Model](id: string): Promise<ViewReturn>

상세 보기 데이터를 가져옵니다. { [Model], [Model]View }를 반환합니다.

edit[Model](id: string): Promise<EditReturn>

편집을 위한 데이터를 가져옵니다. { [Model], [Model]Edit }를 반환합니다.

merge[Model](id: string | null, data: Partial<Model>): Promise<Model>

모델 데이터를 생성하거나 업데이트합니다. 업데이트된 Model을 반환합니다.

Slice 및 Store 정의하기

`slice()`를 사용하여 특정 컨텍스트(예: '내 티켓', '프로젝트 티켓')에 대한 API를 그룹화합니다. 클라이언트 측 Store와 페이지네이션 Action을 자동으로 생성합니다.
⚡자동화 기능
Slice를 정의하면 클라이언트에서 `fetch.init[SliceName]`이 자동으로 생성됩니다. 데이터 로딩, 페이지네이션, 상태 관리를 한 번에 처리합니다.
Server Definition
ticket.signal.ts
Slice Auto-Generated Methods
각 Slice 정의에 대해 특별히 생성되는 메서드들입니다.
method설명예제
[Model]List[Suffix](...args, skip, limit, sort): Promise<Model[]>페이지네이션 인자가 포함된 데이터 목록을 가져옵니다. Model 배열을 반환합니다.
[Model]Insight[Suffix](...args): Promise<Insight>집계 통계를 가져옵니다. Insight 객체를 반환합니다.
init[Model](query?, option?): Promise<InitReturn>기본 옵션으로 목록을 초기화합니다. { [Model]Init, [Model]List, [Model]Insight }를 반환합니다.
init[SliceName](...args): Promise<InitReturn>Slice 목록 데이터를 초기화합니다. { [Slice]Init, [Slice]List, [Slice]Insight }를 반환합니다.

Guard 사용 및 정의

Guard는 Signal을 보호합니다. 내장 가드를 사용하거나 `Guard` 인터페이스를 구현하여 직접 정의할 수 있습니다.
Creating a Custom Guard
method설명예제
canActivate(context)요청이 허용되는지 여부를 나타내는 불리언 값을 반환합니다.
getRequest(context)사용자 계정을 포함한 요청 객체를 추출하는 헬퍼입니다.
canActivate(context)

요청이 허용되는지 여부를 나타내는 불리언 값을 반환합니다.

getRequest(context)

사용자 계정을 포함한 요청 객체를 추출하는 헬퍼입니다.

libs/shared/nest/authGuards.ts
Applying Guards
model.signal.ts
내부 작업 정의하기
공개 API 정의하기
표준 모델 API
Slice 및 Store 정의하기
Guard 사용 및 정의
field설명예제
.param(name, Type, options?)필수 경로 파라미터. (사용 가능: Query, Mutation, Process)
.search(name, Type, options?)쿼리 스트링 또는 선택적 인자. (사용 가능: Query, Mutation)
.body(name, Type, options?)요청 바디 파라미터. (사용 가능: Mutation)
.msg(name, Type, options?)메시지 페이로드 필드. (사용 가능: Message)
.room(name, Type, options?)PubSub 룸 식별자. (사용 가능: PubSub)
.param(name, Type, options?)

필수 경로 파라미터. (사용 가능: Query, Mutation, Process)

.search(name, Type, options?)

쿼리 스트링 또는 선택적 인자. (사용 가능: Query, Mutation)

.body(name, Type, options?)

요청 바디 파라미터. (사용 가능: Mutation)

.msg(name, Type, options?)

메시지 페이로드 필드. (사용 가능: Message)

.room(name, Type, options?)

PubSub 룸 식별자. (사용 가능: PubSub)

Chat Example
Client Usage (fetch)
`fetch` 객체를 사용하여 클라이언트에서 엔드포인트 메서드를 호출합니다.
Client Usage
[Model]List[Suffix](...args, skip, limit, sort): Promise<Model[]>

페이지네이션 인자가 포함된 데이터 목록을 가져옵니다. Model 배열을 반환합니다.

[Model]Insight[Suffix](...args): Promise<Insight>

집계 통계를 가져옵니다. Insight 객체를 반환합니다.

init[Model](query?, option?): Promise<InitReturn>

기본 옵션으로 목록을 초기화합니다. { [Model]Init, [Model]List, [Model]Insight }를 반환합니다.

init[SliceName](...args): Promise<InitReturn>

Slice 목록 데이터를 초기화합니다. { [Slice]Init, [Slice]List, [Slice]Insight }를 반환합니다.

Client Usage
Client Page (page.tsx)