Public Source Viewer

비나래아카이브 개발자 포털

실제 서비스 구조를 살펴볼 수 있는 공개용 코드 뷰어입니다. 인증, 세션, 외부 연동, 토큰, 관리자 식별 등 보안상 민감한 구현은 파일 단위 또는 줄 단위로 검열됩니다.

Redacted View
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