Skip to content
@Laattae

Lattae

Your portfolio, explained.

๋ผ๋•Œ (Lattae)

๋ณด์œ  ์ข…๋ชฉ์ด ๊ธ‰ํ•˜๊ฒŒ ์›€์ง์ด๋ฉด 60์ดˆ ์•ˆ์— "์™œ"๋ฅผ ๊ทผ๊ฑฐ์™€ ํ•จ๊ป˜ ๋ณด๋‚ด๊ณ , ๊ทธ ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆํผ์œผ๋กœ ์ด์–ด ์ฃผ๋Š” ํฌํŠธํด๋ฆฌ์˜ค ์ •๋ณด ์„œ๋น„์Šค



์‚ฌ์šฉ์ž๋Š” ๋ณด์œ  ์ข…๋ชฉ๊ณผ ๋น„์ค‘๋งŒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์žฅ์ค‘ ์ฒด๊ฒฐยท๊ณต์‹œยท๋‰ด์Šค๋ฅผ ๊ณ„์† ๋ฐ›์•„ ๋ณด์œ  ์ข…๋ชฉ์ด ํ‰์†Œ์™€ ๋‹ค๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ์ˆœ๊ฐ„์„ ์žก๊ณ , ๊ทธ ์›€์ง์ž„์ด ์‹œ์žฅ ๋•Œ๋ฌธ์ธ์ง€ยทํ…Œ๋งˆ ๋•Œ๋ฌธ์ธ์ง€ยท์ข…๋ชฉ ๊ณ ์œ  ์‚ฌ๊ฑด ๋•Œ๋ฌธ์ธ์ง€ ๊ฐ€๋ ค ๊ทผ๊ฑฐ ๋งํฌ์™€ ํ•จ๊ป˜ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์•Œ๋ฆผ์„ ๋ˆ„๋ฅด๋ฉด ๊ทธ ์›์ธ์„ ์„ค๋ช…ํ•˜๋Š” ์ˆํผ ํ”ผ๋“œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

๋ณด์œ  ์ข…๋ชฉ ยท ๋น„์ค‘ ์ž…๋ ฅ (๊ณ„์ขŒ ์—ฐ๋™ ์—†์Œ)
โ†’ ์ฒด๊ฒฐ ยท ๊ณต์‹œ ยท ๋‰ด์Šค๋ฅผ Kafka๋กœ ์ˆ˜์ง‘
โ†’ ์ข…๋ชฉ๋ณ„ ํ‰์†Œ ๋ณ€๋™ํญ์„ ๋„˜์œผ๋ฉด ๊ธ‰๋ณ€์œผ๋กœ ๊ฐ์ง€
โ†’ ์‹œ์žฅ / ํ…Œ๋งˆ / ๊ณ ์œ  ์š”์ธ์œผ๋กœ ๋ถ„ํ•ดํ•œ ๋’ค์—๋งŒ ๊ทผ๊ฑฐ ๊ฒ€์ƒ‰
โ†’ ๊ทผ๊ฑฐ๊ฐ€ ์•ฝํ•˜๋ฉด "์›์ธ ๋ฏธํ™•์ธ"์œผ๋กœ ๋จผ์ € ๋ณด๋‚ด๊ณ , ํ™•์ธ๋˜๋ฉด ๊ฐฑ์‹ 
โ†’ ์•Œ๋ฆผ ํ•œ ์ค„์—์„œ ๊ด€๋ จ ์ˆํผ์œผ๋กœ, ์‹œ์ฒญ ๋ฐ˜์‘์€ ๋‹ค์‹œ ์ถ”์ฒœ์œผ๋กœ

์„ค๊ณ„ ๋‹จ๊ณ„ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์ˆ˜์น˜๋Š” ์ธก์ •๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋ชฉํ‘œ์น˜์ด๋ฉฐ, ์‹ค์ธก ํ›„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ

์•Œ๋ฆผ ์ •์‹œ์„ฑ โ€” 60์ดˆ๋ฅผ ๋‹จ๊ณ„๋ณ„ ์˜ˆ์‚ฐ์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๋„˜์น˜๋ฉด ๊ฐ•๋“ฑ

๊ฐœ์žฅ ์งํ›„๋‚˜ ๋ณ€๋™์„ฑ์™„ํ™”์žฅ์น˜ ๋ฐœ๋™ ๋•Œ๋Š” ์ˆ˜๋ฐฑ ์ข…๋ชฉ์ด ํ•œ๊บผ๋ฒˆ์— ์›€์ง์ด๊ณ , LLM ๋ฌธ์žฅ ์ƒ์„ฑ์€ ์ˆ˜ ์ดˆ์”ฉ ํ”๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์ง€์™€ ์ƒ์„ฑ์„ ํ•œ ์ค„๋กœ ๋ฌถ์œผ๋ฉด ๋А๋ฆฐ ์ƒ์„ฑ์ด ๊ฐ์ง€๊นŒ์ง€ ๋ง‰์Šต๋‹ˆ๋‹ค. ์ˆ˜์ง‘ 2์ดˆ, ๊ฐ์ง€ 5์ดˆ, ๊ทผ๊ฑฐ ๊ฒ€์ƒ‰ 1์ดˆ, ์ƒ์„ฑ 15์ดˆ๋กœ ์˜ˆ์‚ฐ์„ ๋‚˜๋ˆ„๊ณ , ๋‹จ๊ณ„ ์‚ฌ์ด๋Š” Kafka ํ† ํ”ฝ์œผ๋กœ ๋Š์–ด ์†๋„ ์ฐจ์ด๋ฅผ ํก์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ ๋Œ€๊ธฐ์—ด์ด ์˜ˆ์‚ฐ์„ ๋„˜์œผ๋ฉด ํ…œํ”Œ๋ฆฟ ๋ฌธ์žฅ์œผ๋กœ ๋จผ์ € ๋ณด๋‚ด๊ณ  ๋‚˜์ค‘์— ๋‹ค๋“ฌ์Šต๋‹ˆ๋‹ค. ์•Œ๋ฆผ๋งˆ๋‹ค ๋ฉฑ๋“ฑ ํ‚ค๋ฅผ ๋‘ฌ ์žฌ์‹œ๋„ํ•ด๋„ ํ•œ ๋ฒˆ๋งŒ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์›์ธ ์ •์ง์„ฑ โ€” ์ง€์–ด๋‚ด์ง€ ์•Š๊ณ , ๊ณต๊ฐœ ๋ผ๋ฒจ๋กœ ์ฑ„์ 

๊ธ‰๋“ฑ๋ฝ์˜ ์ƒ๋‹น์ˆ˜๋Š” ๋šœ๋ ทํ•œ ์›์ธ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜์†Œ ์กฐํšŒ๊ณต์‹œ ๋‹ต๋ณ€์—๋„ "ํŠน๋ณ„ํ•œ ์‚ฌ์œ  ์—†์Œ"์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋จผ์ € ์‹œ์žฅ ๋ฏผ๊ฐ๋„(ฮฒ)๋กœ ์‹œ์žฅ ๋ชซ์„ ๋นผ๊ณ , ๊ฐ™์€ ํ…Œ๋งˆ ์ข…๋ชฉ์˜ ๋™๋ฐ˜ ์›€์ง์ž„์„ ๋ณธ ๋’ค์—๋งŒ ์ข…๋ชฉ ๊ณ ์œ  ๊ทผ๊ฑฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋ฌธ์žฅ์€ ๊ฒ€์ƒ‰๋œ ๊ณต์‹œยท๋‰ด์Šค ์•ˆ์—์„œ๋งŒ ์“ฐ๊ณ  ์›๋ฌธ ๋งํฌ๋ฅผ ๋‹ต๋‹ˆ๋‹ค. ๊ด€๋ จ๋„๊ฐ€ ๊ธฐ์ค€์— ๋ชป ๋ฏธ์น˜๋ฉด ๊ธฐ๊ถŒํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•๋„๋Š” ์กฐํšŒ๊ณต์‹œ ๋‹ต๋ณ€, ๊ณต์‹œ ์„ ํ–‰ ์—ฌ๋ถ€, ํŒ€ ๊ณจ๋“œ์…‹์œผ๋กœ ๋งŒ๋“  ์ •๋‹ต ๋ผ๋ฒจ์— ๋Œ€ํ•ด VE60(60์ดˆ ์•ˆ์— ๋„์ฐฉํ•œ ์ •๋‹ต ์„ค๋ช… ๋น„์œจ)์œผ๋กœ ์ฑ„์ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์—†๋Š” ๊ฐœ์ธํ™” โ€” ๊ณต๊ฐœ ๋ฐ์ดํ„ฐ๋กœ ์ถ”์ฒœ์˜ ๋ผˆ๋Œ€๋ฅผ ๊ณ„์‚ฐ

ํ•™์ƒ ํ”„๋กœ์ ํŠธ๋Š” ์‹œ์ฒญ ๊ธฐ๋ก์ด ๊ฑฐ์˜ ์—†์–ด ํ˜‘์—… ํ•„ํ„ฐ๋ง์ด ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ณต๊ฐœ ์‹œ์„ธยท๊ณต์‹œ๋กœ ๋งค์ผ ๋ฐค ์ข…๋ชฉ ์—ฐ๊ฒฐ ์ง€๋„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ต๋ฅ  ์ƒ๊ด€์ด ๋†’์€ ์ข…๋ชฉ์Œ์„ Union-Find๋กœ ๋ฌถ์–ด ํ…Œ๋งˆ ๊ตฐ์ง‘์„ ๋งŒ๋“ค๊ณ , ๋ณ„์นญ ์‚ฌ์ „(์‚ผ์ „ = ์‚ผ์„ฑ์ „์ž)์„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋“œ๋Š” ๋ณด์œ  ์ข…๋ชฉ์—์„œ ์ด์›ƒ ์ข…๋ชฉ์œผ๋กœ ํ›„๋ณด๋ฅผ ๋„“ํžˆ๊ณ , ์นด๋“œ ์œ ํ˜•๋ณ„ ํ†ฐ์Šจ ์ƒ˜ํ”Œ๋ง์œผ๋กœ ์ ์€ ๋ฐ˜์‘์—์„œ๋„ ์„ ํ˜ธ๋ฅผ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์ง€๋„๊ฐ€ ์‹ค์‹œ๊ฐ„ ๊ฐ์ง€์˜ ํ…Œ๋งˆ ํŒ์ • ๊ธฐ์ค€์œผ๋กœ๋„ ์“ฐ์ž…๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜

flowchart TB
  SRC["KIS ์ฒด๊ฒฐ ยท OpenDART ๊ณต์‹œ ยท ๋„ค์ด๋ฒ„ ๋‰ด์Šค"]

  subgraph RT["์‹ค์‹œ๊ฐ„ ์ธต ยท lattae-alert"]
    K[("Kafka ์›์ฒœ ํ† ํ”ฝ<br/>์›๋ณธ ๋ณด์กด โ†’ ํ•˜๋ฃจ ํ†ต์งธ ๋ฆฌํ”Œ๋ ˆ์ด")]
    D["Flink ๊ฐ์ง€<br/>์ข…๋ชฉ๋ณ„ ๋ถ„์œ„์ˆ˜ ์ž„๊ณ„ + ํžˆ์Šคํ…Œ๋ฆฌ์‹œ์Šค"]
    F["์š”์ธ ๋ถ„ํ•ด<br/>์‹œ์žฅ / ํ…Œ๋งˆ / ๊ณ ์œ "]
    S["ES ๊ทผ๊ฑฐ ๊ฒ€์ƒ‰<br/>์ตœ๊ทผ 30๋ถ„ ๊ณต์‹œยท๋‰ด์Šค, percolator ํƒœ๊น…"]
    J{"์›์ธ ํŒ์ •"}
    L["LLM 1~2๋ฌธ์žฅ<br/>์˜ˆ์‚ฐ ์ดˆ๊ณผ ์‹œ ํ…œํ”Œ๋ฆฟ"]
    U["์›์ธ ๋ฏธํ™•์ธ<br/>ํ™•์ธ ์‹œ ๊ฐฑ์‹  ์•Œ๋ฆผ"]
    P["๋ณด์œ ์ž ํŒฌ์•„์›ƒ ยท ๋ฉฑ๋“ฑ ๋ฐœ์†ก"]
  end

  subgraph BT["๋ฐฐ์น˜ยทํ”ผ๋“œ ์ธต ยท lattae-feed"]
    A["Airflow ์•ผ๊ฐ„ DAG"]
    SP["Spark ์žฌ๊ณ„์‚ฐ"]
    G["์—ฐ๊ฒฐ ์ง€๋„ ยท ๊ธฐ์ค€์„  ยท ๋ณ„์นญ<br/>Union-Find ํ…Œ๋งˆ ๊ตฐ์ง‘"]
    C["์ˆํผ ์นด๋“œ ์ƒ์„ฑ ยท ES ์ƒ‰์ธ"]
    R["ํ”ผ๋“œ ์ถ”์ฒœ ยท ์„œ๋น™<br/>ํ†ฐ์Šจ ์ƒ˜ํ”Œ๋ง"]
  end

  USER(["์‚ฌ์šฉ์ž ยท lattae-app"])

  SRC --> K --> D --> F --> S --> J
  J -->|๊ทผ๊ฑฐ ์ถฉ๋ถ„| L --> P
  J -->|๊ทผ๊ฑฐ ๋ถ€์กฑ| U --> P
  P -->|ํ‘ธ์‹œ ์•Œ๋ฆผ| USER
  P -->|๋ณ€๋™ ์นด๋“œ ์‚ฝ์ž…| R

  A --> SP --> G --> C --> R
  G -.->|๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ƒํƒœ| D
  R -->|ํ”ผ๋“œ| USER
  USER -.->|์‹œ์ฒญ ยท ๋„˜๊น€ ยท ์—„์ง€| R
Loading
์ธต ํ•˜๋Š” ์ผ ์ง€ํ‚ค๋ ค๋Š” ๊ฒƒ
์ˆ˜์ง‘ ์›์ฒœ๋ณ„ ์–ด๋Œ‘ํ„ฐ, ์ข…๋ชฉ์ฝ”๋“œ ํ‚ค, ํ˜ธ์ถœ ํ•œ๋„ ์Šค์ผ€์ค„๋ง ๋ฒ„์ŠคํŠธ์™€ ๋А๋ฆฐ ์†Œ๋น„์ž๊ฐ€ ์„œ๋กœ๋ฅผ ๋ง‰์ง€ ์•Š์Œ
๊ฐ์ง€ ์ด๋ฒคํŠธ ์‹œ๊ฐ„ ๊ธฐ์ค€ ๋ถ„์œ„์ˆ˜ ์ž„๊ณ„, ์‹œ์žฅยทํ…Œ๋งˆยท๊ณ ์œ  ๋ถ„ํ•ด ๊ฐ™์€ ๊ธ‰๋ณ€์— ๋Šฆ๊ฑฐ๋‚˜ ๋‘ ๋ฒˆ ๋ฐ˜์‘ํ•˜์ง€ ์•Š์Œ
์„ค๋ช… ๊ทผ๊ฑฐ ๊ฒ€์ƒ‰ โ†’ ์›์ธ ๋ถ„๋ฅ˜ โ†’ ๊ธฐ๊ถŒ ๋˜๋Š” ์ƒ์„ฑ ๊ทผ๊ฑฐ ์—†๋Š” ์ด์œ ๋ฅผ ์ง€์–ด๋‚ด์ง€ ์•Š์Œ
๋ฐœ์†ก ๋ณด์œ ์ž ํŒฌ์•„์›ƒ, ๋ฉฑ๋“ฑ ํ‚ค, ๊ฐฑ์‹  ์•Œ๋ฆผ 60์ดˆ ์•ˆ์—, ํ•œ ๋ฒˆ๋งŒ ๋„์ฐฉ
๋ฐฐ์น˜ ์—ฐ๊ฒฐ ์ง€๋„, ๊ธฐ์ค€์„ , ๋ณ„์นญ, ์ˆํผ ์นด๋“œ ์‹ค์‹œ๊ฐ„ ํŒ๋‹จ์˜ ๊ธฐ์ค€์ด ๋‚ก์ง€ ์•Š์Œ
ํ”ผ๋“œ ํฌํŠธํด๋ฆฌ์˜ค ๊ธฐ๋ฐ˜ ํ›„๋ณด, ๋ฐด๋”ง ์ˆœ์œ„ ์‚ฌ์šฉ์ž๊ฐ€ ์ ์–ด๋„ ๊ฐœ์ธํ™”๊ฐ€ ๋™์ž‘

๋ ˆํฌ์ง€ํ† ๋ฆฌ

๋ ˆํฌ ์—ญํ• 
lattae-alert ์‹ค์‹œ๊ฐ„ ๊ฐ์ง€ยท์›์ธ ์„ค๋ช…ยท์•Œ๋ฆผ ๋ฐœ์†ก
lattae-feed ๋ฐฐ์น˜ ํŒŒ์ดํ”„๋ผ์ธยท์—ฐ๊ฒฐ ์ง€๋„ยทํ”ผ๋“œ ์ถ”์ฒœ
lattae-api ์ธ์ฆ, ํฌํŠธํด๋ฆฌ์˜ค, ํ‘ธ์‹œ ๊ตฌ๋…, ๋‘ ์„œ๋น„์Šค ์‘๋‹ต ์กฐํ•ฉ
lattae-app Vue PWA โ€” HOME(๋‚ด ํฌํŠธํด๋ฆฌ์˜ค) ยท REELS(์ˆํผ ํ”ผ๋“œ)

๋ฐ์ดํ„ฐ์™€ ๊ฒฝ๊ณ„

๋ชจ๋“  ์›์ฒœ์€ ๊ณต์‹ Open API์™€ ๊ณต๊ณต๋ฐ์ดํ„ฐ, ์‚ฌ์šฉ์ž ์ง์ ‘ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค. ๋‰ด์Šค ๋ณธ๋ฌธ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ˆ˜์ง‘ํ•˜์ง€ ์•Š๊ณ  ์ œ๋ชฉยท์š”์•ฝยท์›๋ฌธ ๋งํฌ๋งŒ ์”๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์‹œ์„ธ๋Š” ๊ธ‰๋ณ€ ๊ฐ์ง€์—๋งŒ ์“ฐ๊ณ , ํ™”๋ฉด์˜ ๊ฐ€๊ฒฉ๊ณผ ์ฐจํŠธ๋Š” ๊ณต๊ณต๋ฐ์ดํ„ฐ์˜ ์ผ๋ณ„ ์‹œ์„ธ๋กœ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ์ข…๋ชฉ ์ถ”์ฒœยท๋งค์ˆ˜ ์‹ ํ˜ธยท๋ชฉํ‘œ๊ฐ€๋ฅผ ๋‚ด์ง€ ์•Š์œผ๋ฉฐ, ํˆฌ์ž ํŒ๋‹จ์„ ๋Œ€์‹ ํ•˜์ง€ ์•Š๋Š” ์ •๋ณด ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

Popular repositories Loading

  1. lattae-app lattae-app Public

    lattae frontend

    Vue 1

  2. .github .github Public

  3. NewsTag NewsTag Public

    test for news tagging

    HTML

Repositories

Showing 3 of 3 repositories

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ