Skip to content

Upstage-Ambassador-1th-Team1/streamlit-homepage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

25 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“˜ README.md โ€” ์ง‘์ฐฉ(Jibchack)

๊ณต๊ณต์ž„๋Œ€ ๊ฒ€์ƒ‰ ํ†ตํ•ฉ ํ”Œ๋žซํผ


๐Ÿ  ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

**์ง‘์ฐฉ(Jibchack)**์€ ๊ณต๊ณต์ž„๋Œ€ ์ •๋ณด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š”
Streamlit ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

  • ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œ
    โœ” ์ฑ„ํŒ…(Chat) โ€“ ๊ณต๊ณต์ž„๋Œ€ ๊ด€๋ จ ์งˆ๋ฌธ์— AI๊ฐ€ ๋‹ต๋ณ€
    โœ” ๊ณต๊ณ  ๊ฒ€์ƒ‰(Search) โ€“ ์ง€๋„ ๊ธฐ๋ฐ˜ ๊ณต๊ณต์ž„๋Œ€ ๊ณต๊ณ  ์กฐํšŒ
    ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐฑ์—”๋“œ API์™€ ์—ฐ๋™๋˜์–ด
    โœ” ๋Œ€ํ™” ์ŠคํŠธ๋ฆฌ๋ฐ
    โœ” ๊ณต๊ณ  ๋ฐ์ดํ„ฐ fetch
    โœ” ์ง€๋„ ํ‘œ์‹œ์šฉ ์ขŒํ‘œ ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง
    ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


โœจ ์ฃผ์š” ๊ธฐ๋Šฅ (Features)

๐Ÿ” 1. ์ฑ„ํŒ… ๊ธฐ๋ฐ˜ ๊ณต๊ณ  ์ถ”์ฒœ

  • Streamlit Chat UI ๊ธฐ๋ฐ˜
  • ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ(์ง€์—ญ/์˜ˆ์‚ฐ/์กฐ๊ฑด)์— ๋งž๋Š” ๊ณต๊ณ  ์ •๋ณด ์ถœ๋ ฅ
  • ์ถ”ํ›„ LLM ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ ๊ตฌ์กฐ

๐Ÿ—บ๏ธ 2. ์ง€๋„ ๊ธฐ๋ฐ˜ ๊ณต๊ณ  ์‹œ๊ฐํ™”

  • Folium + Leaflet ๊ธฐ๋ฐ˜ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ง€๋„
  • ์ง€์—ญ๋ณ„ ๊ณต๊ณ  ์ˆ˜๋ฅผ ํด๋Ÿฌ์Šคํ„ฐํ˜• ๋ฐ•์Šค ์•„์ด์ฝ˜์œผ๋กœ ํ‘œ์‹œ
  • ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์ง€์—ญ์œผ๋กœ ์ง€๋„ ์ด๋™ ๋ฐ ๊ฐœ๋ณ„ ๊ณต๊ณ  ํ™œ์„ฑํ™”

๐Ÿ“Œ 3. ๊ฐœ๋ณ„ ๊ณต๊ณ  ์ƒ์„ธ ํŒจ๋„

  • ํด๋ฆญ ์‹œ ์šฐ์ธก ํŒจ๋„์— ์ƒ์„ธ ์ •๋ณด ํ‘œ์‹œ
    (๊ณต๊ธ‰๋Œ€์ƒ, ์ž„๋Œ€์กฐ๊ฑด, ์ผ์ •, ๋‹จ์ง€ ์ •๋ณด ๋“ฑ)
  • '๊ณต๊ณ  ์›๋ฌธ๋ณด๊ธฐ' ๋ฒ„ํŠผ ํฌํ•จ

๐Ÿ”Ž 4. ๊ณต๊ณ  ๊ฒ€์ƒ‰/ํ•„ํ„ฐ

  • ์ง€์—ญ ํ•„ํ„ฐ, ์œ ํ˜• ํ•„ํ„ฐ(ํ–‰๋ณต์ฃผํƒ/์ฒญ๋…„/๊ณต๊ณต์ž„๋Œ€ ๋“ฑ)
  • ๊ฐ€๊ฒฉ ๋ฒ”์œ„ ์Šฌ๋ผ์ด๋”
  • ๋ฉด์  ํ•„ํ„ฐ
  • ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ ์šฉ

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ (Tech Stack)

  • Frontend: Streamlit, HTML/CSS Custom Styling
  • Map: Folium, Leaflet.js
  • API: Kakao Local API (์ฃผ์†Œ โ†’ ์ขŒํ‘œ ๋ณ€ํ™˜)
  • Language: Python 3.x

๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

project/
โ”œโ”€โ”€ .streamlit/ # Streamlit ํ™˜๊ฒฝ ์„ค์ •
โ”œโ”€โ”€ pages/ # Streamlit ํŽ˜์ด์ง€ ๊ตฌ์„ฑ
โ”‚ โ”œโ”€โ”€ chat_page.py # ์ฑ„ํŒ… UI ๋ฐ AI ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ
โ”‚ โ””โ”€โ”€ search_page.py # ๊ณต๊ณต์ž„๋Œ€ ํ•„ํ„ฐ + ์ง€๋„ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€
โ”œโ”€โ”€ api.py # ๋ฐฑ์—”๋“œ API ํ˜ธ์ถœ ๋ž˜ํผ
โ”œโ”€โ”€ app.py # ์•ฑ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ (์‚ฌ์ด๋“œ๋ฐ” + ๋ผ์šฐํŒ…)
โ”œโ”€โ”€ config.py # ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ์˜ต์…˜ ์ƒ์ˆ˜ ์„ค์ •
โ”œโ”€โ”€ homepage.py # (๊ตฌ๋ฒ„์ „ ๋˜๋Š” ์˜ˆ๋น„ UI)
โ”œโ”€โ”€ styles.py # ์ „์ฒด CSS ๊ด€๋ฆฌ
โ”œโ”€โ”€ utils.py # HTML ๋ณ€ํ™˜, formatting, ์ง€์—ญ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
โ”œโ”€โ”€ logo.png # ํ”„๋กœ์ ํŠธ ๋กœ๊ณ 
โ””โ”€โ”€ README.md # ์„ค๋ช… ๋ฌธ์„œ

๐Ÿ”ง ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ ์„ค๋ช…

โ–  1. app.py โ€“ ๋ฉ”์ธ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ

โœ” ํŽ˜์ด์ง€ ์„ค์ •
โœ” ์‚ฌ์ด๋“œ๋ฐ” ๊ตฌ์„ฑ
โœ” Query Parameter ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… (?page=home, ?page=search)
โœ” CSS ๋กœ๋”ฉ
โœ” ํ•ด๋‹น ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ํ˜ธ์ถœ

โ–  2. pages/chat_page.py โ€“ ์ฑ„ํŒ… ํŽ˜์ด์ง€

โœ” Streamlit session_state ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ๊ด€๋ฆฌ
โœ” AI ๋ฐฑ์—”๋“œ์™€์˜ ์ŠคํŠธ๋ฆฌ๋ฐ ํ†ต์‹ (/chat/stream)
โœ” ์‚ฌ์šฉ์ž/AI ๋งํ’์„  ํ˜•ํƒœ UI ๋ Œ๋”๋ง
โœ” ๋กœ๋”ฉ ์ƒํƒœ ์ฒ˜๋ฆฌ ๋ฐ ์ž๋™ rerun

โ–  3. pages/search_page.py โ€“ ๊ฒ€์ƒ‰ + ์ง€๋„ ํŽ˜์ด์ง€

โœ” ๊ฒ€์ƒ‰ ํ•„ํ„ฐ (์ง€์—ญ/๊ธฐ๊ด€/์ฃผํƒ์œ ํ˜•/๊ฐ€๊ฒฉ/๋ฉด์ )
โœ” ์ „์ฒด ๊ณต๊ณ  ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ํ›„ ํ”„๋ก ํŠธ ๋‹จ ํ•„ํ„ฐ๋ง
โœ” folium ์ง€๋„ ๋ Œ๋”๋ง
โœ” ์คŒ ๋ ˆ๋ฒจ ๋ณ€ํ™”์— ๋”ฐ๋ฅธ

  • ์ง€์—ญ ๋งˆ์ปค
  • ๊ฐœ๋ณ„ ๊ณต๊ณ  ๋งˆ์ปค
    ํ† ๊ธ€ ํ‘œ์‹œ
    โœ” ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ตฌํ˜„
    โœ” ๋งˆ์ปค ํด๋ฆญ ์‹œ ์šฐ์ธก ์ƒ์„ธ ํŒจ๋„ ํ‘œ์‹œ

โ–  4. styles.py โ€“ ์ „์ฒด CSS ์Šคํƒ€์ผ

โœ” Streamlit ๊ธฐ๋ณธ UI ์š”์†Œ ์ˆจ๊น€
โœ” ์ปค์Šคํ…€ ์‚ฌ์ด๋“œ๋ฐ” ์Šคํƒ€์ผ
โœ” ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ์ „์šฉ ์Šคํƒ€์ผ
โœ” ์ƒ์„ธ ํŒจ๋„ ์Šคํƒ€์ผ
โœ” ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ์ผ๋ถ€ ์ง€์›

โ–  5. api.py

โœ” ๋ฐฑ์—”๋“œ๋กœ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ž˜ํผ
โœ” fetch_all_listings() ๋“ฑ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ๊ธฐ๋Šฅ ์ œ๊ณต

โ–  6. config.py

โœ” ์ง€์—ญ ์ขŒํ‘œ
โœ” ์„ ํƒ ์˜ต์…˜ ๋ฆฌ์ŠคํŠธ (์ง€์—ญ/๊ธฐ๊ด€/์œ ํ˜• ๋“ฑ)
โœ” ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ƒ์ˆ˜
โœ” ๋ฐฑ์—”๋“œ URL

โ–  7. utils.py

โœ” ๊ณต๊ณ  HTML ๋ณ€ํ™˜ ํ•จ์ˆ˜
โœ” ์ž„๋Œ€๋ฃŒ formatting
โœ” ์ฃผ์†Œ์—์„œ ์ง€์—ญ ์ถ”์ถœ
โœ” ์ง€๋„ ๋ผ๋ฒจ ์ฒ˜๋ฆฌ


๐ŸŽฎ ์ž‘๋™ ๋ฐฉ์‹(Flow)

1. ์•ฑ ์‹œ์ž‘

streamlit run app.py ์‹คํ–‰ โ†’ Streamlit์ด UI ์ƒ์„ฑ

2. ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ฒฐ์ •

URL Query Parameter ์ฝ๊ธฐ
โ†’ "home" ๋˜๋Š” "search"

3. ์‚ฌ์ด๋“œ๋ฐ” ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€ ์ด๋™

๋ฒ„ํŠผ ํด๋ฆญ โ†’ Query Parameter ๋ณ€๊ฒฝ โ†’ st.rerun()

4. ์ฑ„ํŒ… ํŽ˜์ด์ง€

์ž…๋ ฅ โ†’ session_state์— ์ €์žฅ โ†’
๋ฐฑ์—”๋“œ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ์š”์ฒญ โ†’
๋ฌธ์ž ๋‹จ์œ„๋กœ ์‘๋‹ต ํ‘œ์‹œ

5. ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€

  1. ๊ณต๊ณ  ๋ฐ์ดํ„ฐ fetch
  2. ํ•„ํ„ฐ ์ ์šฉ
  3. ๋ฆฌ์ŠคํŠธ + ์ง€๋„ ๋ Œ๋”๋ง
  4. ์ขŒ์ธก ๋ฆฌ์ŠคํŠธ ํด๋ฆญํ•˜๋ฉด ์šฐ์ธก ์ƒ์„ธ ํŒจ๋„ ํ‘œ์‹œ
  5. ์ง€๋„ ์คŒ์— ๋”ฐ๋ผ ๋งˆ์ปค ์ž๋™ ์ „ํ™˜

โ–ถ ์‹คํ–‰ ๋ฐฉ๋ฒ•

1. ์„ค์น˜

pip install -r requirements.txt

2. ์‹คํ–‰

streamlit run app.py

3. ์ ‘์†

http://localhost:8501/

๐Ÿ”Œ ๋ฐฑ์—”๋“œ API ๊ฐœ์š”

์ฑ„ํŒ… API

POST /chat/stream

๊ณต๊ณ  ๋ฆฌ์ŠคํŠธ API

GET /listings

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors