๐ ์น์์๋ ํ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ๊ฐ | 23.11 ~ 24.03 |
---|---|
๋ด๋น | ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ |
๊ธฐ์ | Next.js, Typescript, Tanstack Query, Tailwind CSS, shadcn/ui |
์บ๋ ์คํ๋์ค๋ ์ค์ ์ธ๋ฌผ ์ด๋ฏธ์ง๋ฅผ AI ์ธํ๋ฃจ์ธ์ ์ด๋ฏธ์ง๋ก ๋ณํํ๋ B2B ์๋น์ค์ ๋๋ค. ์ ์ฌ์ ํ ํฉ๋ฅ ํ ๊ฐ๋ฐ ์ด๊ธฐ๋ถํฐ ๋ฐฐํฌ๊น์ง ํ๋ก ํธ์๋ ๊ฐ๋ฐ(1์ธ) ์ ๋ฌด๋ฅผ ๋ด๋นํ์์ต๋๋ค.
sequenceDiagram
participant ๊ณ ๊ฐ
participant ํด๋ผ์ด์ธํธ
participant ์๋ฒ
participant ํฌํธ์
๊ณ ๊ฐ->>ํด๋ผ์ด์ธํธ: ๊ฒฐ์ ์์ฒญ
ํด๋ผ์ด์ธํธ->>์๋ฒ: ์ฌ์ ๊ฒ์ฆ ์์ฒญ
์๋ฒ->>ํฌํธ์: merchantUid ์์ฑ ๋ฐ ์ฌ์ ๊ฒ์ฆ ๋ฐ์ดํฐ ์ ์ก
ํฌํธ์-->>์๋ฒ: ์ฌ์ ๊ฒ์ฆ ๋ฐ์ดํฐ ์ ์ฅ ์๋ฃ
alt ํต์ ์ฑ๊ณต
์๋ฒ-->>ํด๋ผ์ด์ธํธ: merchantUid ๋ฐํ
else ํต์ ์คํจ
์๋ฒ-->>ํด๋ผ์ด์ธํธ: ์๋ฌ ์ฝ๋ ๋ฐํ
end
ํด๋ผ์ด์ธํธ->>ํฌํธ์: ๊ฒฐ์ ์ฐฝ ์ด๊ธฐ (merchantUid ์ ์ก)
ํฌํธ์-->>ํด๋ผ์ด์ธํธ: ๊ฒฐ์ ๊ฒฐ๊ณผ
ํด๋ผ์ด์ธํธ->>์๋ฒ: ์ฌํ ๊ฒ์ฆ ์์ฒญ
์๋ฒ->>ํฌํธ์: ๊ฒฐ์ ๊ฒฐ๊ณผ ์์ฒญ
ํฌํธ์-->>์๋ฒ: ๊ฒฐ์ ๊ฒฐ๊ณผ
์๋ฒ-->>ํด๋ผ์ด์ธํธ: ์ฌํ ๊ฒ์ฆ ๊ฒฐ๊ณผ
alt ์ฌํ ๊ฒ์ฆ ์ฑ๊ณต
ํด๋ผ์ด์ธํธ->>๊ณ ๊ฐ: ๊ฒฐ์ ์ฑ๊ณต ํ๋ฉด์ผ๋ก ์ด๋
else ์ฌํ ๊ฒ์ฆ ์คํจ
ํด๋ผ์ด์ธํธ->>๊ณ ๊ฐ: ๊ฒฐ์ ์คํจ ์๋ฆผ์ฐฝ ํ์
end
์ด๋ฏธ์ง ์์ฑ ์์ฒญ ํ, ์ฌ์ฉ์๋ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ ๋๊น์ง 1๋ถ ์ด์์ ๊ธด ๋๊ธฐ ์๊ฐ์ ๊ฒฝํํ๊ณ ์์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์์ ๋ง์กฑ๋๋ฅผ ์ ํ์ํค๊ณ ์์์ต๋๋ค.
ํด๊ฒฐ์ฑ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ์ ๊ทผ ๋ฐฉ์์ ๊ณ ๋ คํ์ต๋๋ค.
API Polling์ ํตํ ์ค์๊ฐ ๊ฒฐ๊ณผ ์ ๋ฐ์ดํธ: ์ด๋ฏธ์ง ์์ฑ ๊ณผ์ ์์ ์ฃผ๊ธฐ์ ์ผ๋ก API๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉ์์๊ฒ ์ค์๊ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
sequenceDiagram
participant ์ ์
participant ํด๋ผ์ด์ธํธ
participant ์๋ฒ
ํด๋ผ์ด์ธํธ-->> ์๋ฒ: API ์์ฒญ
alt ์ด๋ฏธ์ง ์์ฑ ์ค
์๋ฒ-->>ํด๋ผ์ด์ธํธ: status = processing & ์์ฑ์ค์ธ ์ด๋ฏธ์ง;
ํด๋ผ์ด์ธํธ-->> ์ ์ : ์์ฑ์ค์ธ ์ด๋ฏธ์ง ๋ ๋๋ง
ํด๋ผ์ด์ธํธ-->>์๋ฒ: 5์ด๋ค ๋ค์ ์ด๋ฏธ์ง ์์ฑ๋ด์ญ ์์ฒญ;
else ์ด๋ฏธ์ง ์์ฑ ์๋ฃ
์๋ฒ-->>ํด๋ผ์ด์ธํธ: status = complete & ์์ฑ๋ ์ด๋ฏธ์ง
ํด๋ผ์ด์ธํธ -->> ์ ์ : ์์ฑ ์๋ฃ๋ ์ด๋ฏธ์ง ๋ฐ ๋ค์ด๋ก๋ ๋งํฌ
else ์ด๋ฏธ์ง ์์ฑ ์คํจ
์๋ฒ-->>ํด๋ผ์ด์ธํธ: status = failed
ํด๋ผ์ด์ธํธ -->> ์ ์ : ์๋ฌ ๋ฉ์ธ์ง
end
ํ๋ก๊ทธ๋ ์ค ๋ฐ ์ถ๊ฐ: ์์ฑ ์งํ ์ํ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ๋ก๊ทธ๋ ์ค ๋ฐ๋ฅผ ๋์ ํ์ต๋๋ค.