Public Source Viewer
비나래아카이브 개발자 포털
실제 서비스 구조를 살펴볼 수 있는 공개용 코드 뷰어입니다. 인증, 세션, 외부 연동, 토큰, 관리자 식별 등 보안상 민감한 구현은 파일 단위 또는 줄 단위로 검열됩니다.
src/types/models.ts
공개 가능
1
// 사용자 인터페이스
2
export interface User {
3
username: string;
4
[SECURITY REDACTED] 민감한 설정/인증/토큰 관련 코드입니다.
5
theme?: string;
6
bookmarks?: number;
7
dailyBookmarks?: number;
8
lastActiveDate?: string;
9
tetrisBookmarks?: number;
10
dailyTetrisBookmarks?: number;
11
lastTetrisDate?: string;
12
verifiedUntil?: string;
13
profileImage?: string;
14
dailyPostNotif?: boolean;
15
[SECURITY REDACTED] 민감한 설정/인증/토큰 관련 코드입니다.
16
[SECURITY REDACTED] 민감한 설정/인증/토큰 관련 코드입니다.
17
}
18
19
// 블로그 포스트 인터페이스
20
export interface Post {
21
id: number;
22
author: string;
23
title: string;
24
content: string;
25
createdAt: string;
26
image: string | null;
27
isPrivate: boolean;
28
replies: Reply[];
29
updatedAt?: string;
30
}
31
32
// 댓글/답글 인터페이스
33
export interface Reply {
34
id?: string;
35
username: string;
36
content: string;
37
createdAt: string;
38
replies?: Reply[];
39
[SECURITY REDACTED] 민감한 설정/인증/토큰 관련 코드입니다.
40
}
41
42
// AI 채팅 메시지 인터페이스
43
export interface ChatMessage {
44
role: 'system' | 'user' | 'assistant';
45
content: string;
46
}
47
48
export interface AiNote {
49
id: string;
50
title?: string;
51
question: string;
52
excerpt: string;
53
tags?: string[];
54
pinned?: boolean;
55
sourceViewId?: string;
56
createdAt: string;
57
updatedAt?: string;
58
}
59
60
export interface PersonalNote {
61
id: string;
62
title: string;
63
content: string;
64
tags?: string[];
65
pinned?: boolean;
66
createdAt: string;
67
updatedAt?: string;
68
}
69
70
export interface SecurityLogEntry {
71
id: string;
72
type: 'login_success' | 'login_failure' | 'login_blocked' | 'signup_success' | 'admin_action' | 'access_denied' | 'feature_use';
73
actor: string | null;
74
target?: string | null;
75
action: string;
76
detail?: string;
77
ip?: string;
78
userAgent?: string;
79
path?: string;
80
createdAt: string;
81
}
82
83
// 애플리케이션 설정 인터페이스
84
export interface Settings {
85
isSignupEnabled: boolean;
86
isAnonymousPostingEnabled: boolean;
87
isGptEnabled: boolean;
88
isSubwayApiEnabled?: boolean;
89
isPushEnabled?: boolean;
90
isDiscordShareEnabled?: boolean;
91
isDiscordPersonaCommandEnabled?: boolean;
92
isDiscordAiCommandEnabled?: boolean;
93
}
94
95
// 서버 설정 인터페이스
96
export interface Config {
97
Use_Port: number;
98
Use_SSH_Port: number;
99
}
100
101
// 광장 메시지 인터페이스
102
export interface PlazaMessage {
103
id: string;
104
username: string;
105
content: string;
106
timestamp: string;
107
}
108
109
// 페르소나 인터페이스
110
export interface Persona {
111
hinanaUsername: string;
112
discordUserId: string;
113
discordUsername: string;
114
personaName?: string;
115
persona: string;
116
createdAt: string;
117
updatedAt: string;
118
}
119
120
// 테트리스 스코어 인터페이스
121
export interface TetrisScore {
122
username: string;
123
score: number;
124
lines: number;
125
lines4: number;
126
playTime: number;
127
hinanaScore: number;
128
timestamp: string;
129
}
130