Skip to content

isos-consulting/MES-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

648 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ISO Server


๐Ÿ—’ ๊ฐœ์š”


์ด ํ”„๋กœ์ ํŠธ๋Š” ISOS์˜ MES(์ƒ์‚ฐ๊ด€๋ฆฌ์‹œ์Šคํ…œ) ํ”„๋กœ๊ทธ๋žจ์ธ ISO์˜ Server ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

โ—๏ธ ๊ฐœ๋ฐœํ™˜๊ฒฝ(Production / Development / Test)๋ณ„๋กœ

์•„๋ž˜์˜ ๋ชจ๋“ˆ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Initial Name Name(En) Desciprtion
ADM ๊ด€๋ฆฌ์ž Admin ๊ด€๋ฆฌ์ž ์˜ต์…˜ ๋ฐ ๊ธฐ์ค€์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
AUT ์ธ์ฆ/์ธ๊ฐ€ Authentication/Authorization ์‚ฌ์šฉ์ž ๋ฐ ๊ถŒํ•œ, ์ธ์ฆ์— ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
STD ๊ธฐ์ค€์ •๋ณด Standard ISO์˜ ๊ธฐ์ดˆ ๋ฐ์ดํ„ฐ์ธ ๊ธฐ์ค€์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
MAT ์ž์žฌ/๊ตฌ๋งค๊ด€๋ฆฌ Material ์ž์žฌ์˜ ๊ตฌ๋งค์™€ ์žฌ๊ณ ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
PRD ์ƒ์‚ฐ๊ด€๋ฆฌ Production ์ œํ’ˆ์˜ ์ƒ์‚ฐ์— ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
EQM ์„ค๋น„๊ด€๋ฆฌ Equipment ๊ณต์žฅ์˜ ์„ค๋น„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
MLD ๊ธˆํ˜•๊ด€๋ฆฌ Mold ๊ณต์žฅ์˜ ๊ธˆํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
INV ์žฌ๊ณ ๊ด€๋ฆฌ Inventory ์ „์‚ฌ์˜ ๋ชจ๋“  ์žฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
OUT ์™ธ์ฃผ๊ด€๋ฆฌ Outsourcing ํ˜‘๋ ฅ์‚ฌ์™€ ๊ด€๋ จ๋œ ์™ธ์ฃผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
QMS ํ’ˆ์งˆ๊ด€๋ฆฌ Quality ์ˆ˜์ž…๊ฒ€์‚ฌ, ๊ณต์ •๊ฒ€์‚ฌ, ์ตœ์ข…๊ฒ€์‚ฌ๋“ฑ ํ’ˆ์งˆ์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
SAL ์ œํ’ˆ/์˜์—…๊ด€๋ฆฌ Sales ์ œํ’ˆ์˜ ํŒ๋งค์™€ ์žฌ๊ณ ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‰ Version


  • Lastest: v0.1.0 (2022-02-07)

โœ๏ธ API Document



1๏ธโƒฃ Modules


Module Version Description
typescript ^4.2.3 Typescript Module
ts-node ^9.1.1 Typescript ํŒŒ์ผ ์‹คํ–‰ Module
axios ^0.24.0 Http Connect Module
babel-plugin-istanbul ^6.0.0 ES6 ๊ด€๋ จ Module
babel-plugin-transform-decorators-legacy ^1.3.5 ES6 ๊ด€๋ จ Module
babel-plugin-transform-runtime ^6.23.0 ES6 ๊ด€๋ จ Module
babel-preset-es2015-node6 ^0.4.0 ES6 ๊ด€๋ จ Module
babel-preset-minify ^0.5.1 ES6 ๊ด€๋ จ Module
bcrypt ^5.0.1 ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™” Module
cookie-parser ^1.4.5 Express์—์„œ Cookie๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Module
cors ^2.8.5 Cross Origin Resource Sharing ์„ค์ • Module
crypto-js ^4.0.0 ์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™” Module
dotenv ^8.2.0 ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ Code Level์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Module(.env)
esm ^3.2.25 Typescript์—์„œ export๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Module
express ^4.17.1 Http Server Module
express-async-errors ^3.1.1 Express์˜ ๋น„๋™๊ธฐ Error Handling Module
express-validator ^6.14.0 Express์˜ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ Middleware Module
fs ^0.0.1-security File Stream Module
http-status ^1.5.0 Http Response Module
jest ^26.6.3 Testing Module
jsonwebtoken ^8.5.1 JWT(Json Web Token) ์‚ฌ์šฉ Module
lodash ^4.17.21 ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํŽธํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” Module
moment ^2.29.1 ์‹œ๊ฐ„์„ ํŽธํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” Module
morgan ^1.10.0 Logging Module
pg ^8.6.0 Postgresql(RDBMS) Module
redis ^3.1.2 Redis(Cache Database) Module
reflect-metadata ^0.1.13 Sequelize-Typescript ์ข…์† Module
sequelize ^6.6.2 ORM(Object Relational Mapping) Module
sequelize-cli ^6.2.0 Sequelize์˜ CLI(Command Line Interface) Module
sequelize-typescript ^2.1.0 Sequelize์˜ Typescript Version Module
supertest ^6.1.3 Testing Module
tsc-watch ^4.2.9 ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ํŒŒ์ผ์ด ์—…๋ฐ์ดํŠธ ๋  ๋•Œ๋งˆ๋‹ค ์žฌ ์ปดํŒŒ์ผ์„ ์‹œ์ผœ์ฃผ๋Š” Module
uuid ^8.3.2 UUID๋ฅผ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Module
winston ^3.3.3 Logging Module
winston-daily-rotate-file ^4.5.5 Winston์—์„œ Loggingํ•œ ํŒŒ์ผ์„ ์ผ์ •์ฃผ๊ธฐ์— ๋”ฐ๋ผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Module

2๏ธโƒฃ Project ๊ตฌ์กฐ (Foldering)



Foler/File Naming Convention Description
๐Ÿ“ shells {file_name}.sh AWS CI/CD ํ™˜๊ฒฝ ์ค‘ CodeDeploy ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Hook์— ๋Œ€ํ•œ Shell Script ํŒŒ์ผ ์œ„์น˜
(โ—๏ธ Development ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ)
๐Ÿ“ src - Application์ด ์‹คํ–‰๋˜๋Š”๋ฐ ํ•„์š”ํ•œ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ bin - Application์˜ ์‹œ์ž‘ ์œ„์น˜์ธ www.ts ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ caches {file_name}.cache.ts Cache(Redis) Database๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ configs - ํ™˜๊ฒฝ๋ณ€์ˆ˜์™€ ์ถ”๊ฐ€ Module๋“ค์˜ Config(ํ™˜๊ฒฝ์„ค์ •) ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ controllers {file_name}.controller.ts Client ์š”์ฒญ์— ๋”ฐ๋ผ์„œ ์‹คํ–‰๋˜๋Š” Contoller ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ interfaces {file_name}.interface.ts Database ํ…Œ์ด๋ธ” ๋‹จ์œ„์˜ DTO ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” Interface ๋ฐ ์ถ”๊ฐ€ Interface ๊ด€๋ฆฌ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ middlewares {file_name}.middleware.ts Client์˜ ์š”์ฒญ์ด Module๋กœ Routing๋˜๊ธฐ์ „์— ์‹คํ–‰๋˜๋Š” Middleware
(File Stream, JWT, Tenant ๊ฒฉ๋ฆฌ)
๐Ÿ“ migrations {file_name}.migration.ts Database Table์˜ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ์— ๊ด€๋ จ๋œ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ models {file_name}.model.ts Database Table์„ ORM๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” Model ๊ฐ์ฒด์— ๊ด€๋ จ๋œ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ queries {file_name}.query.ts ORM์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ํž˜๋“  Raw Query ๊ด€๋ จ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ repositories {file_name}.repository.ts Model์—์„œ ORM์„ ์ด์šฉํ•˜์—ฌ Database์— ์ ‘๊ทผํ•˜๋Š” ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ routes {file_name}.route.ts Client์˜ ์š”์ฒญ์— ๋”ฐ๋ผ Controller๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฐ์ฒด์ธ Route ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ services {file_name}.service.ts Application์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ states {file_name}.state.ts ISO์˜ Response Module์—์„œ ์‚ฌ์šฉํ•˜๋Š” Custom State Code์— ๊ด€๋ จ๋œ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ tests {file_name}.test.ts Testing Code๊ฐ€ ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ types {file_name}.type.ts Typeํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ •์˜ํ•œ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ utils - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๊ณ„์—†๋Š” Uilization Function์ด ์ž‘์„ฑ๋œ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ validations {file_name}.validation.ts Client์š”์ฒญ์— Routing๋  ๋•Œ ์ž…๋ ฅ๋œ Parameter์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“ wrappers {file_name}.wrapper.ts Client๋กœ Response๋ฅผ Returnํ•  ๋•Œ ์ œ์™ธํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ž…ํ•œ ํŒŒ์ผ ์œ„์น˜
๐Ÿ“„ app.ts - Application์˜ Main Life Cycle์ด ์œ„์น˜ํ•œ ํŒŒ์ผ
๐Ÿ“„ .babelrc - Babel ์„ค์ •์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
๐Ÿ“„ .dockerignore - Docker Build(๋„์ปค์ด๋ฏธ์ง€ ์ƒ์„ฑ)๋ฅผ ์‹คํ–‰ ํ•  ๋•Œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ์ œ์™ธํ•  ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•œ ํŒŒ์ผ
(โ—๏ธ Production ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ)
๐Ÿ“„ .env - Application์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
๐Ÿ“„ .gitignore - Git์— Commitํ•  ๋•Œ ์ œ์™ธํ•  ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•œ ํŒŒ์ผ
๐Ÿ“„ .sequelizerc - Sequelize(ORM) ์„ค์ •์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
๐Ÿ“„ appspec.yml - CI/CD์ค‘ Deploy๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” Life Cycle์— ๋Œ€ํ•œ ์„ค์ •์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
(โ—๏ธ ํ™˜๊ฒฝ[Production, Development]์— ๋”ฐ๋ผ ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ด ์ƒ์ดํ•จ)
๐Ÿ“„ buildspec.yml - CI/CD์ค‘ Build๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” Life Cycle์— ๋Œ€ํ•œ ์„ค์ •์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
(โ—๏ธ ํ™˜๊ฒฝ[Production, Development]์— ๋”ฐ๋ผ ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ด ์ƒ์ดํ•จ)
๐Ÿ“„ Dockerfile - Docker Build(๋„์ปค์ด๋ฏธ์ง€ ์ƒ์„ฑ) ์‹คํ–‰ ์‹œ ๋™์ž‘ํ•˜๋Š” Life Cycle์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
(โ—๏ธ Production ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ)
๐Ÿ“„ jest.config.js - Jest(Testing Module) ์„ค์ •์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
๐Ÿ“„ package.json - Project์˜ ์ •๋ณด ๋ฐ ํŒจํ‚ค์ง€ ์ •๋ณด๊ฐ€ ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
๐Ÿ“„ readme.md - Read Me
๐Ÿ“„ taskdef.json - AWS์˜ CI/CD ์‹คํ–‰์— ํ•„์š”ํ•œ ํŒŒ์ผ
(AWS ECSํ†ตํ•œ CI/CD๋ฅผ ์ง„ํ–‰ ํ•  ๋•Œ Docker์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•˜์—ฌ Task๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •ํŒŒ์ผ)
(โ—๏ธ Production ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ)
๐Ÿ“„ tsconfig.json - Project์˜ Typescript ์„ค์ •์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ
๐Ÿ“„ yarn.lock - Node Module์˜ ๋ฒ„์ „๊ด€๋ฆฌ ์ด๋ ฅ์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ

3๏ธโƒฃ Configs, Environment(.env)


์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ /configs/config.ts ํŒŒ์ผ์—์„œ ์ฝ์–ด์™€ ๊ด€๋ฆฌ ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉ ํ•  ๋• config.ts ํŒŒ์ผ์—์„œ export๋œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (ex, config.node_env ๋“ฑ)

Root Directory์˜ .env ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹œ์ ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

โ—๏ธ .env ํŒŒ์ผ์€ ์ ˆ๋Œ€ Commit ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ฐฐํฌํ™˜๊ฒฝ(production, development, test)๋ณ„ .env ํŒŒ์ผ์€ AWS S3 s3-isos-environment์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ๋ณ„ .env ํŒŒ์ผ์˜ ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

production: iso.env, development: iso.dev.env, test: iso.test.env

ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Value๊ฐ€ ์ž…๋ ฅ๋˜์–ด์žˆ์ง€ ์•Š์€ ํ•ญ๋ชฉ์€ Desciption์„ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋น„๋ž๋‹ˆ๋‹ค.


๐Ÿ‘‰ Production ํ™˜๊ฒฝ

Name Config Name Value Description
NODE_ENV config.node_env production ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š” ๋ฐฐํฌํ™˜๊ฒฝ(production, development, test)
PORT config.port 3004 ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š” ํฌํŠธ(production: 3004 / development: 3104, test: 3104)
CACHE_ELA_HOST config.cache.elastic.host - Tenant ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•œ AWS Elasticache(Redis) Server Host
CACHE_ELA_PORT config.cache.elastic.port - Tenant ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•œ AWS Elasticache(Redis) Server Port
JWT_SECRET config.jwt.secret - Json Web Token์˜ Secret Key
JWT_EXPIRESIN config.jwt.expiresin - Json Web Token์˜ ๋งŒ๋ฃŒ์‹œ๊ฐ„
CRYPTO_SECRET config.crypto.secret - Crypto ์•”ํ˜ธํ™”์˜ ๋ณตํ˜ธํ™” Key

๐Ÿ‘‰ Development ํ™˜๊ฒฝ

Name Config Name Value Description
NODE_ENV config.node_env development ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š” ๋ฐฐํฌํ™˜๊ฒฝ(production, development, test)
PORT config.port 3104 ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š” ํฌํŠธ(production: 3004 / development: 3104, test: 3104)
JWT_SECRET config.jwt.secret - Json Web Token์˜ Secret Key
JWT_EXPIRESIN config.jwt.expiresin - Json Web Token์˜ ๋งŒ๋ฃŒ์‹œ๊ฐ„
CRYPTO_SECRET config.crypto.secret - Crypto ์•”ํ˜ธํ™”์˜ ๋ณตํ˜ธํ™” Key

๐Ÿ‘‰ Test ํ™˜๊ฒฝ

Name Config Name Value Description
NODE_ENV config.node_env test ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š” ๋ฐฐํฌํ™˜๊ฒฝ(production, development, test)
PORT config.port 3104 ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋Š” ํฌํŠธ(production: 3004 / development: 3104, test: 3104)
DB_TEST_USER config.db.user - Test ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ์—ฐ๊ฒฐํ•  Database์˜ User๋ช…
DB_TEST_PW config.db.password - Test ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ์—ฐ๊ฒฐํ•  Database์˜ Password
DB_TEST_HOST config.db.host - Test ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ์—ฐ๊ฒฐํ•  Database์˜ Host
DB_TEST_PORT config.db.port - Test ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ์—ฐ๊ฒฐํ•  Database์˜ Port
DB_TEST_DATABASE config.db.database - Test ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ์—ฐ๊ฒฐํ•  Database์˜ Database๋ช…
DB_TEST_DIALECT config.db.dialect - Test ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ ์—ฐ๊ฒฐํ•  Database์˜ Engine๋ช…(mssql, postgres, mysql ๋“ฑ)
DB_RESET_TYPE config.db.reset_type init Database Migration์‹œ Data Input ์œ ํ˜•
test: Test(Demo)๋ฐ์ดํ„ฐ ์ „์ฒด ์ž…๋ ฅ
init: ํ”„๋กœ๊ทธ๋žจ ๊ธฐ์ดˆ๋ฐ์ดํ„ฐ๋งŒ ์ž…๋ ฅ
JWT_SECRET config.jwt.secret - Json Web Token์˜ Secret Key
JWT_EXPIRESIN config.jwt.expiresin - Json Web Token์˜ ๋งŒ๋ฃŒ์‹œ๊ฐ„
CRYPTO_SECRET config.crypto.secret - Crypto ์•”ํ˜ธํ™”์˜ ๋ณตํ˜ธํ™” Key

4๏ธโƒฃ Application Flow Chart


Seq Description
A Client์—์„œ Backend Appication์œผ๋กœ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
B Client์š”์ฒญ์˜ Header์—์„œ Tenant์˜ Database ์ ‘์†์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ Database ์—ฐ๊ฒฐ ๊ฐ์ฒด(Sequelize)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
(โ—๏ธtest ํ™˜๊ฒฝ์—์„œ๋Š” Tenant์ •๋ณด๋ฅผ ์š”์ฒญ์—์„œ ์ž…๋ ฅ๋ฐ›์ง€ ์•Š๊ณ  ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์žˆ๋Š” ์ ‘์†์ •๋ณด๋ฅผ ํ†ตํ•ด Database์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.)
C Client์š”์ฒญ์˜ Header์—์„œ Access Token์„ ๊ฒ€์ฆํ•˜์—ฌ ์œ ํšจํ•œ ์‚ฌ์šฉ์ž์ธ์ง€ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
Access Token์ด ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ ํ•จ๊ป˜ ์ž…๋ ฅ๋œ Refresh Token์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ›„ ์œ ํšจ ํ•  ๊ฒฝ์šฐ Access Token์„ ์žฌ๋ฐœ๊ธ‰ ํ•ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น์‚ฌํ•ญ์— ๋ชจ๋‘ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ Error๋ฅผ Throw ํ•ฉ๋‹ˆ๋‹ค.
D Tenant ๊ฒ€์ฆ๊ณผ Token ๊ฒ€์ฆ์„ ํ†ตํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์ž๋กœ ํŒ๋‹จ๋œ ๊ฒฝ์šฐ Client์˜ ์š”์ฒญ์ด Routing์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
E Client์—์„œ ์ž…๋ ฅํ•œ ์š”์ฒญ์˜ Parameter๊ฐ€ API์— ์ ํ•ฉํ•œ์ง€ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
F Routing์—์„œ Client์˜ ์š”์ฒญ ์ •๋ณด์—๋”ฐ๋ผ ์•Œ๋งž์€ Controller ๋กœ์ง์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
G Controller์—์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์•Œ๋งž์€ Service๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
H Service์—์„œ๋Š” ๋˜ ๋‹ค๋ฅธ Service๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ Repository๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•„์š”ํ•œ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
I Repository์—์„œ๋Š” Service์˜ ์š”์ฒญ์— ๋”ฐ๋ผ Model๋กœ ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
J Repository์—์„œ ์š”์ฒญํ•œ Transaction์„ Database๋กœ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
K Transaction์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ Model์— ์ ์žฌํ•ฉ๋‹ˆ๋‹ค.
L ๊ฒฐ๊ณผ Model ๋ฐ์ดํ„ฐ๋ฅผ Repository๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
M ๊ฒฐ๊ณผ Repository ๋ฐ์ดํ„ฐ๋ฅผ Service๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
N ๊ฒฐ๊ณผ Service ๋ฐ์ดํ„ฐ๋ฅผ Controller๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
O ์ „๋‹ฌ๋ฐ›์€ Service์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
P Client๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
Q Client๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

5๏ธโƒฃ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•


ISO Server ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ• ๋ฐ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.


โ—๏ธ ISO Server์— ๊ฐœ๋ฐœ์„ ๋งˆ์นœ ํ›„ ๋ฐ˜๋“œ์‹œ Postman API-Docs ํ˜น์€ Swagger์— API ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ธฐ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


โž• ๋ชจ๋“ˆ(ํ…Œ์ด๋ธ”)์ด ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ

์•„๋ž˜์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  Folder์—๋Š” ํ•˜์œ„ ํด๋”๋กœ MES์˜ ๋ชจ๋“ˆ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. (ex, controllers/adm, controllers/std...)

File์˜ ๋Œ€ํ•œ Naming Convention์œผ๋กœ ์ƒ์œ„ ๋ชจ๋“ˆ๋ช…์„ ์ œ์™ธํ•˜๊ณ (std, aut ๋“ฑ) ๋ชจ๋“ˆ๋ช…(ํ…Œ์ด๋ธ”๋ช…)์„ Kebap Case๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

(ex, std_insp_type_tb ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ insp-type.model.ts, insp-type.controller.ts...)

Seq Folder Description
1 interfaces Database์˜ Table์˜ Column๊ณผ ๋งค์นญ๋˜๋„๋ก interface๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ๊ธฐ๋ณธ์ ์œผ๋กœ undefined๋ฅผ ํ—ˆ์šฉํ•˜๋˜ Nullable Column์—๋Š” Type์— null์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
Interface์˜ ๋ช…์นญ์œผ๋กœ๋Š” I๋ฅผ Prefix๋กœ ์ž…๋ ฅํ•˜๋ฉฐ ์ดํ›„ ์ž…๋ ฅ๋˜๋Š” ๋ฌธ์ž๋Š” Camel Case๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. (ex, IStdDept)
2 models Database์˜ Table์˜ Column๊ณผ ๋งค์นญ๋˜๋„๋ก model์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ Sequelize์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” Hook์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ—๏ธ Foreign Key์˜ ์—ฐ๊ฒฐ์€ BelongTo๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ Datetime Column์˜ ๊ฒฝ์šฐ Timezone์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
3 migrations ๊ฐ ๋ชจ๋“ˆ์˜ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๊ธฐ๋ณธ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Database๋ฅผ migration ํŒŒ์ผ๋กœ ์ƒ์„ฑ ํ•  ๋•Œ ๊ธฐ์ดˆ๋กœ ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋งŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์™€ ๊ธฐ์ดˆ ๋ฐ์ดํ„ฐ๋กœ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ตฌ๋ถ„์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
4 repositories Database Transaction ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ CRUD ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋ฉฐ, Read์—๋Š” uuid ๋ฐ unique Key๋กœ ์กฐํšŒํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ฐ˜๋“œ์‹œ Promise.all์„ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ Database Record์˜ Updateํ˜น์€ Deleteํ–‰์œ„๊ฐ€ ๋ฐœ์ƒ ํ•  ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ Log Table์— ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ Repository ํŒŒ์ผ์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ ˆ๋Œ€ ์ž‘์„ฑํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ, ์ˆœ์ˆ˜ํ•˜๊ฒŒ Database Transaction ๋กœ์ง๋งŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
5 queries ORM์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ํž˜๋“  Transaction ์ •๋ณด๋ฅผ Query๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ORM์œผ๋กœ ์ถฉ๋ถ„ํžˆ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•œ ๋กœ์ง์˜ ๊ฒฝ์šฐ Query๋กœ ์ž‘์„ฑํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.
โ—๏ธ Query ํŒŒ์ผ์—์„œ๋Š” ์šฉ๋„๋ฅผ ๋ถ„๋ช…ํžˆ ํ•˜์—ฌ ํŒŒ์ผ๋ช…์„ ์ž‘์„ฑํ•˜๋ฉฐ Return์„ String์œผ๋กœ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ export ํ•ฉ๋‹ˆ๋‹ค.
6 services Repository ๋ฐ ๋˜ ๋‹ค๋ฅธ Service๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๊ฐ€๊ณตํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ๋‹จ์œ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ํ•„์š”ํ•œ Error Handling์„ Service์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
7 controllers ์—ฌ๋Ÿฌ๊ฐœ์˜ Service๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ ๊ฐ’์„ ์กฐํ•ฉํ•˜์—ฌ Client๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ์ ˆ๋Œ€ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์„ Controller์— ์ž‘์„ฑํ•ด์„œ๋Š” ์•ˆ๋˜๋ฉฐ Service์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ •๋„์˜ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
8 validations Client์—์„œ ์ž…๋ ฅ๋˜์•ผํ•˜๋Š” Parameter์— ๋Œ€ํ•œ Validation์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ Header Details ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ๋Š” ๋‹จ์ผ Object ๊ฐ’์œผ๋กœ Validation ํ•˜๋ฉฐ, ์ด์™ธ์˜ ๋ฐ์ดํ„ฐ๋Š” Arrayํ˜•ํƒœ์˜ Validation์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ ๊ธฐ๋ณธ์ ์œผ๋กœ Data์˜ Type๊ณผ Empty ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋ฉฐ nullable Parameter์˜ ๊ฒฝ์šฐ๋Š” optional ์†์„ฑ์˜ nullable ๊ฐ’์„ true๋กœ ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ dateonly Column์€ isDate() ํ•จ์ˆ˜๋กœ Validation ํ•˜๋ฉฐ, datetime(timestamp) Column์˜ ๊ฒฝ์šฐ .isISO8601().toDate() ๋กœ Type Validation์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
9 routes ISO์˜ ์ƒ์œ„๋ชจ๋“ˆ(std, prd ๋“ฑ)์— ๋”ฐ๋ผ Foldering์„ ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋ฉฐ ์ž…๋ ฅ๋˜๋Š” Parameter ๋ฐ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ API ๋ช…์„ ๋‹จ์ˆ˜ํ˜• ํ˜น์€ ๋ณต์ˆ˜ํ˜•์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ API์™€ Controller์˜ Method๋Š” ๋ฐ˜๋“œ์‹œ 1:1๋กœ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ—๏ธ API๋ช…์€ ๋ฐ˜๋“œ์‹œ RESTfulํ•˜๊ฒŒ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•˜๋ฉฐ HTTP Method์™€ ํ•จ๊ป˜ API์— ์ž์›๋ช…์„ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
10 tests Unit Test ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. TDD ํ˜•์‹์œผ๋กœ ๊ฐœ๋ฐœ ๋  ๊ฒฝ์šฐ ๊ฐœ๋ฐœ ์ˆœ์„œ๋Š” 1๋ฒˆ์ž…๋‹ˆ๋‹ค.
โ—๏ธ ํ˜„์žฌ Test Code ์ž‘์„ฑ์— ๋Œ€ํ•œ Convention์€ ์—†์Šต๋‹ˆ๋‹ค.

โž• ISO์˜ Response ์ƒํƒœ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ

๊ธฐ๋ณธ Success Code์™€ Error Code๋กœ ํ‘œํ˜„์ด ๋ถˆ๊ฐ€ ํ•  ๊ฒฝ์šฐ states/common.state.ts ํŒŒ์ผ์—์„œ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Sequence๋ฅผ ํ•˜๋‚˜ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.


โž• Database์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ๋กœ์ง์ด ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ

caches Folder์— Redis๋ฅผ ํ†ตํ•˜์—ฌ Data๋ฅผ get setํ•˜๋Š” ๋กœ์ง์„ ์ž‘์„ฑํ•˜์—ฌ Serviceํ˜น์€ Repository์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


โž• Type์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

Type ํด๋”๋‚ด์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ type์„ export ํ•ฉ๋‹ˆ๋‹ค. type์˜ Naming Convention์€ Interface์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ

T๋ฅผ Prefix๋กœ ์ž…๋ ฅํ•˜๋ฉฐ ์ดํ›„ ์ž…๋ ฅ๋˜๋Š” ๋ฌธ์ž๋Š” Camel Case๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. (ex, TTranType) |


โž• ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๊ณ„์—†๋Š” Util ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ

utils ํด๋”๋‚ด์— ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ export default ํ˜•ํƒœ๋กœ ํ•จ์ˆ˜๋ฅผ export ํ•ฉ๋‹ˆ๋‹ค.


6๏ธโƒฃ Naming Convention


ISO Server Project๋Š” ์•„๋ž˜์˜ Naming Convention์„ ๋”ฐ๋ฅด๋ฉฐ ๋ฐ˜๋“œ์‹œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Tab์€ Space 2์นธ์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Type์„ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ {{๋ณ€์ˆ˜๋ช…: ํƒ€์ž…๋ช…}} ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค..

value: number // O
value:number // X

๐Ÿ’ก ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ์€ ๋ฌธ์ž์™€ ๊ด„ํ˜ธ๋’ค์— Space๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. if () {}, for () {}

if (true) {} // O
if (true) {

} // O
if(true) {} // X
if (true){} // X

๐Ÿ’ก ๋น„๋™๊ธฐ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ async ์•ž ๋’ค์˜ Space๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

fun = async () => {

} // O

fun = async()=> {

} // X

๐Ÿ’ก Interface์™€ Type์€ Prefix๋กœ ๊ฐ๊ฐ I์™€ T๋ฅผ ์ž…๋ ฅํ•œ ํ›„ PascalCase๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

IInterface {} // O
Iinterface {} // X
TType {} // O
tType {} // X

๐Ÿ’ก Object Type (interface ๋“ฑ)

// object ๋‚ด์˜ ๋ณ€์ˆ˜๋Š” snake_case๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
// ๋ฐ˜๋“œ์‹œ ๋ณ€์ˆ˜์˜ Type์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
// Undefined๋ฅผ ํ—ˆ์šฉํ•  ๊ฒฝ์šฐ ?๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
{
  this_is_variable: string,
  first_value?: number
}

๐Ÿ’ก Variable (๊ธฐ๋ณธ ๋ณ€์ˆ˜)

// ๊ธฐ๋ณธ ๋ณ€์ˆ˜๋Š” camelCase๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
thisIsVariable: string;
firstValue: number; 

๐Ÿ’ก ์ฃผ์„์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” // ์ฃผ์„๊ธฐํ˜ธ ๋’ค์— space๋ฅผ ํ•œ์นธ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

// ์ฃผ์„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. // O
//์ฃผ์„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. // X

7๏ธโƒฃ API(End-Point) Parameter Creation Convention

Parameter Type

  • Header, Path Query, Body

Header

  • ์ธ์ฆ(Authentication; ํŠน์ • identity ์ œ๊ณต)๊ณผ ๊ถŒํ•œ ๋ถ€์—ฌ(authorization; ํŠน์ • action ํ—ˆ์šฉ) ๋‘ ๊ฐ€์ง€ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.ย 
  • ISO์—์„œ๋Š” authorization(refresh token, access token) - Bearer, Environment(production, development, test), service-type(iso), restrict-access-to-tenants(ํ…Œ๋„ŒํŠธ์ธ์ฆ), file-included(ํŒŒ์ผ์ฒจ๋ถ€ ์—ฌ๋ถ€) ์†์„ฑ์„ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.

Path

  • ์—”๋“œํฌ์ธํŠธ์˜ ์ผ๋ถ€๋กœ Resource๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.
  • ISO์—์„œ๋Š” Resource๋ฅผ Database Table์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ uuid๋ฅผ ๊ธฐ์ค€์œผ๋กœ Resource๋ฅผ ๋‹จ์ผ ์กฐํšŒ ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.
  • Header, Detail๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ Header Resource๋ฅผ ๊ธฐ์ค€์œผ๋กœ Detail Resource๋ฅผ ์กฐํšŒ ํ•  ๋•Œ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.
  • ex /std/factory/:uuid, /qms/insp/:uuid/include-details ๋“ฑ

Query

  • ์—”๋“œํฌ์ธํŠธ์—์„œ ๋ฌผ์Œํ‘œ ๋’ค์— ์‚ฌ์šฉํ•˜๋Š” Type์œผ๋กœ ์ •๋ ฌ์ด๋‚˜ ํ•„ํ„ฐ๋ง์„ ํ•  ๋•Œ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.
  • ISO์—์„œ๋Š” Front-End ๊ด€์ ์ด ์•„๋‹Œ Database ๊ด€์ ์—์„œ ์ •๋ ฌ์ด๋‚˜ ํ•„ํ„ฐ๋ง์„ ํ•  ๋•Œ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.
  • ex /std/emp?emp_status (all, incumbent, retiree)

Body

  • Request Body ํŒŒ๋ผ๋ฏธํ„ฐ ์ž…๋‹ˆ๋‹ค.
  • ISO์—์„œ๋Š” Post, Put, Patch, Delete Method๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ  Data Format์€ JSON์„ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published