admin/front 분리

This commit is contained in:
2026-07-20 17:49:24 +09:00
parent 9269278e40
commit ed41ef24cb
673 changed files with 16782 additions and 11277 deletions
@@ -0,0 +1,119 @@
spring:
application:
name: api
datasource:
url: jdbc:log4jdbc:mariadb://121.160.234.222:3000/ALISTLMS?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&connectionCollation=utf8mb4_uca1400_ai_ci
username: alist_dev
password: 1qaz2wsx!@
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
hikari:
maximum-pool-size: 10
minimum-idle: 5
connection-timeout: 10000
idle-timeout: 600000
data:
redis:
host: 121.160.234.222
port: 3001
password: 1qaz2wsx!@
servlet:
multipart:
max-file-size: -1
max-request-size: -1
migration:
datasource:
alist:
jdbc-url: jdbc:log4jdbc:sqlserver://bigfuntnp.co.kr:51433;databaseName=alist_dev;encrypt=false;trustServerCertificate=true
username: bigfuntnp
password: password12!@
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
maximum-pool-size: 5
minimum-idle: 1
connection-timeout: 10000
eltown:
jdbc-url: jdbc:log4jdbc:sqlserver://bigfuntnp.co.kr:51433;databaseName=eltown;encrypt=false;trustServerCertificate=true
username: bigfuntnp
password: password12!@
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
maximum-pool-size: 5
minimum-idle: 1
connection-timeout: 10000
logging:
config: classpath:logback-local.xml
jwt:
secret: "F9k3s!29dkF#1lP0X9QZx8eW!2m@0AbD"
access-token-validity-seconds: 3600
refresh-token-validity-seconds: 2592000
cookie:
secure: false # (HTTP) -> false
domain: # (HTTP) -> 비워두세요
name: ALIST_SSO
same-site: Lax # (HTTP) -> Lax
swagger:
login:
id: alist
password: "1qaz2wsx!@"
tus-file:
upload:
tus-endpoint: https://file-alist.pjt.kr/tus/file/
public-base-url: https://file-alist.pjt.kr
tmp-root: /srv/project/alist/uploads/tmp
final-root: /srv/project/alist/uploads
interrupt-seconds: 30
auth-cache:
ttl-seconds: 20
# types:
# notice:
# folder: notice 저장폴더
# max-size: 20MB 최대 용량
# image-only: false
# resize:
# enabled: true
# width: 800 고정넓이
# height: 600 고정높이
# max-width: 1200 최대 넓이
file:
upload:
view:
file-domain: http://localhost:8110
root-path: ${tus-file.upload.final-root}
max-size: 10MB
allowed-extensions: [jpg, jpeg, png, gif, pdf, hwp, hwpx, doc, docx, xls, xlsx, ppt, pptx, txt, csv, zip]
types:
profile:
folder: profile
max-size: 5MB
image-only: true
resize:
enabled: true
width: 400
height: 400
notice:
folder: notice
max-size: 20MB
image-only: false
resize:
enabled: true
max-width: 1200
springdoc:
api-docs:
enabled: true
swagger-ui:
enabled: true
sso:
session:
ttl-seconds: 7200
code:
ttl-seconds: 300
cookie:
name: ALIST_SSO
@@ -0,0 +1,121 @@
spring:
application:
name: api
main:
banner-mode: log
datasource:
url: jdbc:log4jdbc:mariadb://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&connectionCollation=utf8mb4_uca1400_ai_ci
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
hikari:
maximum-pool-size: 10
minimum-idle: 5
connection-timeout: 10000
idle-timeout: 600000
data:
redis:
host: ${REDIS_HOST}
port: ${REDIS_PORT}
password: ${REDIS_PASSWORD}
servlet:
multipart:
max-file-size: -1
max-request-size: -1
migration:
datasource:
alist:
jdbc-url: jdbc:log4jdbc:sqlserver://${ALIST_DB_HOST}:${ALIST_DB_PORT};databaseName=${ALIST_DB_NAME};encrypt=false;trustServerCertificate=true
username: ${ALIST_DB_USERNAME}
password: ${ALIST_DB_PASSWORD}
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
maximum-pool-size: 5
minimum-idle: 1
connection-timeout: 10000
eltown:
jdbc-url: jdbc:log4jdbc:sqlserver://${ELTOWN_DB_HOST}:${ELTOWN_DB_PORT};databaseName=${ELTOWN_DB_NAME};encrypt=false;trustServerCertificate=true
username: ${ELTOWN_DB_USERNAME}
password: ${ELTOWN_DB_PASSWORD}
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
maximum-pool-size: 5
minimum-idle: 1
connection-timeout: 10000
logging:
config: classpath:logback-pjt.xml
jwt:
secret: ${JWT_SECRET}
access-token-validity-seconds: 3600
refresh-token-validity-seconds: 2592000
cookie:
secure: true # 프로젝트 환경 (HTTPS)
domain: api-alist.pjt.kr
name: ALIST_SSO
same-site: None
swagger:
login:
id: ${SWAGGER_ID}
password: ${SWAGGER_PASSWORD}
tus-file:
upload:
tus-endpoint: https://file-alist.pjt.kr/tus/file/
public-base-url: https://file-alist.pjt.kr
tmp-root: /srv/project/alist/uploads/tmp
final-root: /srv/project/alist/uploads
interrupt-seconds: 30
auth-cache:
ttl-seconds: 20
# types:
# notice:
# folder: notice 저장폴더
# max-size: 20MB 최대 용량
# image-only: false
# resize:
# enabled: true
# width: 800 고정넓이
# height: 600 고정높이
# max-width: 1200 최대 넓이
file:
upload:
view:
file-domain: https://file-alist.pjt.kr
root-path: ${tus-file.upload.final-root}
max-size: 10MB
allowed-extensions: [jpg, jpeg, png, gif, pdf, hwp, hwpx, doc, docx, xls, xlsx, ppt, pptx, txt, csv, zip]
types:
profile:
folder: profile
max-size: 5MB
image-only: true
resize:
enabled: true
width: 400
height: 400
notice:
folder: notice
max-size: 20MB
image-only: false
resize:
enabled: true
max-width: 1200
springdoc:
api-docs:
enabled: true
swagger-ui:
enabled: true
sso:
session:
ttl-seconds: 7200
code:
ttl-seconds: 300
cookie:
name: ALIST_SSO
@@ -0,0 +1,47 @@
server:
port: 8112
forward-headers-strategy: framework
spring:
application:
name: api-front
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha # 태그 알파벳 순 정렬
operations-sorter: alpha # API 알파벳 순 정렬
api-docs:
path: /v3/api-docs
# API version rule: MAJOR.MINOR.PATCH
# MAJOR: 기존 API와 호환되지 않는 변경
# - 요청/응답 필드명 변경 또는 삭제
# - URL, HTTP Method, 인증 방식 변경
# - 기존 클라이언트가 수정 없이는 사용할 수 없는 변경
#
# MINOR: 기존 API와 호환되는 기능 추가
# - 신규 API 추가
# - 응답 필드 추가
# - 선택 요청 파라미터 추가
# - 기존 동작을 깨지 않는 기능 확장
#
# PATCH: 호환성에 영향 없는 수정
# - 버그 수정
# - 문서/Swagger 설명 수정
# - 내부 로직 개선
# - 성능 개선
api:
version: v1.0.1
management:
endpoints:
web:
exposure:
include: health,info,metrics
endpoint:
health:
show-details: always
health:
db:
enabled: false
@@ -0,0 +1,18 @@
q p ,,
db \ / `7MMF' db mm
;MM:o=--*--=o MM MM
,V^MM. / \ MM `7MM ,pP"Ybd mmMMmm
,M `MM d b MM MM 8I `" MM
AbmmmqMA MM , MM `YMMMa. MM
A' VML MM ,M MM L. I8 MM
.AMA. .AMMA. .JMMmmmmMMM .JMML.M9mmmP' `Mbmo
:: ALIST API ::
Application : ${spring.application.name}
Profile : ${spring.profiles.active}
Spring Boot : ${spring-boot.version}
Java : ${java.version}
Port : ${server.port}
PID : ${PID}
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 로그 디렉토리 -->
<property name="LOG_PATH" value="/logs" />
<!-- Spring Boot가 제공하는 %clr / 색상 변환기 등록 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 콘솔 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%clr(%d{HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n</pattern>
</encoder>
</appender>
<!-- 콘솔 appender: Boot 기본 제공 -->
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!-- ==== 로컬(local) ==== -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
<!-- springframework -->
<logger name="org.springframework" level="INFO"/>
<!-- project -->
<logger name="com.alist.api" level="DEBUG"/>
<!-- MyBatis SQL/파라미터 보고 싶으면 DEBUG -->
<logger name="org.mybatis" level="DEBUG"/>
<logger name="org.apache.ibatis" level="DEBUG"/>
<!-- log4jdbc -->
<logger name="jdbc.sqltiming" level="DEBUG"/>
<logger name="jdbc.resultsettable" level="DEBUG"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/>
</configuration>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 로그 디렉토리 -->
<property name="LOG_PATH" value="/logs" />
<property name="LOG_FILE_NAME" value="api-front" />
<!-- 파일 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 현재 로그는 고정 위치 (tail 편함) -->
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 롤링 파일은 날짜 폴더(yyyy/MM) 하위로 저장 -->
<fileNamePattern>
${LOG_PATH}/%d{yyyy/MM}/${LOG_FILE_NAME}.log-%d{yyyy-MM-dd}.%i
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>180</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5level | %-15thread | %-40logger{40} | %msg%n</pattern>
</encoder>
</appender>
<!-- ==== 빅펀개발(pjt) ==== -->
<!-- 기본 -->
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
<!-- springframework -->
<logger name="org.springframework" level="WARN"/>
<!-- project -->
<logger name="com.alist.api.front" level="INFO"/>
<!-- MyBatis -->
<logger name="org.mybatis" level="WARN"/>
<logger name="org.apache.ibatis" level="WARN"/>
<!-- log4jdbc -->
<logger name="jdbc.sqltiming" level="INFO"/>
<logger name="jdbc.resultsettable" level="OFF"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/>
</configuration>
@@ -0,0 +1,2 @@
User-agent: *
Disallow: /