์์ธ์ ์ ์ญ์ ์์ ๋น์๋ฒจ, ์ปค๋ฎค๋ํฐ, ํซ์กด ์ ๋ณด๋ฅผ ํตํฉํ์ฌ ์ ๊ณตํ๋ ์ข ํฉ ์์ ํ๋ซํผ์ ๋๋ค.
์ด ํ๋ก์ ํธ๋ 3๋ช ์ ๊ฐ๋ฐ์๊ฐ ํ์ ํ์ฌ ๊ตฌํํ ์์ธ์ ์์ ์ฑ์ ๋๋ค:
- ์์ ๋น์๋ฒจ ์ง๋ - ์์ธ์ 22,502๊ฐ ์์ ๋น์๋ฒจ ์์น ํ์
- ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ - ์ง์ญ๋ณ ์์ ์ ๋ณด ๊ณต์ ๋ฐ ์ํต
- ํซ์กด ๋ถ์ - ๋ฒ์ฃ ์์ ๊ตฌ์ญ ๋ฐ ์ํ ์ง์ญ ์ ๋ณด
- ์ด ๋น์๋ฒจ ์: 22,502๊ฐ
- ๊ตฌ๋ณ ๋ถํฌ: ๊ฐ๋จ๊ตฌ(1,713๊ฐ), ์ค๋๊ตฌ(1,456๊ฐ), ์ฉ์ฐ๊ตฌ(1,421๊ฐ) ๋ฑ
- ์ค์น๋ชฉ์ : ๋ฐฉ๋ฒ์ฉ(20,054๊ฐ), ์ฝ์๋ณดํธ(1,116๊ฐ), ๊ธฐํ(1,332๊ฐ)
- ์ค์น์ฅ์: ๊ฐ๋ก๋ณ(17,524๊ฐ), ๊ณต์(2,630๊ฐ), ๊ธฐํ(1,864๊ฐ) ๋ฑ
- ์ค์๊ฐ ์์น ๊ธฐ๋ฐ ์๋น์ค: ์ฌ์ฉ์ ํ์ฌ ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋น์๋ฒจ ์๋ ๊ฒ์
- ์ ์ฒด ๋น์๋ฒจ ํ์: ์์ธ์ ์ ์ญ์ ๋ชจ๋ ๋น์๋ฒจ์ ์ง๋์ ๋ง์ปค๋ก ํ์
- ์นดํ ๊ณ ๋ฆฌ๋ณ ํํฐ๋ง: ๋ฐฉ๋ฒ์ฉ, ์ฝ์๋ณดํธ, ๊ธฐํ ๋ชฉ์ ๋ณ ํํฐ๋ง
- ์ฃผ์ ๊ฒ์: ์ํ๋ ์ฃผ์๋ฅผ ๊ฒ์ํ์ฌ ํด๋น ์ง์ญ์ ๋น์๋ฒจ ํ์ธ
- ๊ฐ์ฅ ๊ฐ๊น์ด ๋น์๋ฒจ ์ฐพ๊ธฐ: ํด๋ฆญํ ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋น์๋ฒจ ์๋ ๊ฒ์
- ์์ธ ์ ๋ณด ์ ๊ณต: ๊ฐ ๋น์๋ฒจ์ ์ค์น๋ชฉ์ , ๊ด๋ฆฌ๊ธฐ๊ด, ์ฐ๋ฝ์ฒ ๋ฑ ์์ธ ์ ๋ณด
- ๊ฑฐ๋ฆฌ ๊ณ์ฐ: ํ์ฌ ์์น์์ ๊ฐ ๋น์๋ฒจ๊น์ง์ ์ ํํ ๊ฑฐ๋ฆฌ ๊ณ์ฐ
- ๋น์ ์ํฉ ์๋ด: ๋น์๋ฒจ ์ฌ์ฉ๋ฒ ๋ฐ ์์ ์ ๋ณด ์ ๊ณต
- ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํฑ ๋ชจ๋ ๊ธฐ๊ธฐ์์ ์ต์ ํ
- ์ง๊ด์ ์ธ UI: ์ฌ์ฉํ๊ธฐ ์ฌ์ด ์ธํฐํ์ด์ค์ ์๊ฐ์ ํผ๋๋ฐฑ
- ์ค์๊ฐ ํต๊ณ: ํ์ฌ ํ์๋ ๋น์๋ฒจ ์์ ๊ฑฐ๋ฆฌ ์ ๋ณด ์ค์๊ฐ ์ ๋ฐ์ดํธ
- HTML5, CSS3, JavaScript (ES6+)
- ์นด์นด์ค๋งต JavaScript API - ์ง๋ ๋ฐ ์ฅ์ ๊ฒ์
- ๋ฐ์ํ ๋์์ธ - ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํฑ ์ต์ ํ
- Flask - Python ์น ํ๋ ์์ํฌ
- SQLite - ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- RESTful API - JSON ๊ธฐ๋ฐ ํต์
- CORS - ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ์ฐ๋
- ์์ธ์ ๊ณต๊ณต๋ฐ์ดํฐ - ์์ ๋น์๋ฒจ ์ ๋ณด (22,502๊ฐ)
- ์ค์๊ฐ ์์น ๊ธฐ๋ฐ ์๋น์ค - GPS ํ์ฉ
- ํซ์กด ๋ฐ์ดํฐ - ๋ฒ์ฃ ์์ ๊ตฌ์ญ ๋ถ์
git clone [repository-url]
cd cctv2# Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น (๋ฐ์ดํฐ ๋ณํ์ฉ)
pip install pandas openpyxlpython convert_data.pycd backend
python main.py# Python ๋ด์ฅ ์๋ฒ ์ฌ์ฉ
python -m http.server 8000
# ๋๋ Node.js ์๋ฒ ์ฌ์ฉ
npx serve .- ํ๋ก ํธ์๋: http://localhost:8000
- ๋ฐฑ์๋ API: http://localhost:5001
- API ์ํ ํ์ธ: http://localhost:5001/api/health
cctv2/
โโโ frontend/ # ํ๋ก ํธ์๋ ํ์ผ
โ โโโ index.html # ๋ฉ์ธ HTML ํ์ผ
โ โโโ app.js # JavaScript ์ ํ๋ฆฌ์ผ์ด์
โโโ backend/ # ๋ฐฑ์๋ ์๋ฒ
โ โโโ main.py # Flask ๋ฉ์ธ ์๋ฒ
โ โโโ emergency_bells/ # ์์ ๋ฒจ API ๋ชจ๋
โ โโโ community/ # ์ปค๋ฎค๋ํฐ API ๋ชจ๋
โ โโโ hotzone/ # ํซ์กด API ๋ชจ๋
โโโ database/ # ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ
โโโ emergency_bells.json # ๋ณํ๋ ๋น์๋ฒจ ๋ฐ์ดํฐ
โโโ ์์ ๋น์๋ฒจ์ ๋ณด.xlsx # ์๋ณธ Excel ๋ฐ์ดํฐ
โโโ convert_data.py # ๋ฐ์ดํฐ ๋ณํ ์คํฌ๋ฆฝํธ
โโโ requirements.txt # Python ์์กด์ฑ
โโโ README.md # ํ๋ก์ ํธ ๋ฌธ์
- ์์น ๊ถํ ํ์ฉ: ๋ธ๋ผ์ฐ์ ์์ ์์น ์ ๋ณด ์ ๊ทผ์ ํ์ฉํ์ธ์
- ์๋ ์์น ๊ฒ์: ํ์ด์ง ๋ก๋ ์ ํ์ฌ ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋น์๋ฒจ์ ์๋์ผ๋ก ์ฐพ์ต๋๋ค
- ์ง๋ ํ์: ์ง๋๋ฅผ ํด๋ฆญํ์ฌ ์ํ๋ ์์น์ ๋น์๋ฒจ์ ํ์ธํ์ธ์
- ์ฃผ์ ๊ฒ์: ๊ฒ์์ฐฝ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ Enter๋ฅผ ๋๋ฅด์ธ์
- ํํฐ๋ง: ๋ฐฉ๋ฒ์ฉ, ์ฝ์๋ณดํธ, ๊ธฐํ ๋ฒํผ์ผ๋ก ๋น์๋ฒจ ์ ํ์ ํํฐ๋งํ์ธ์
- ์์ธ ์ ๋ณด: ๋น์๋ฒจ ๋ง์ปค๋ฅผ ํด๋ฆญํ์ฌ ์์ธ ์ ๋ณด๋ฅผ ํ์ธํ์ธ์
Ctrl + F: ๊ฒ์์ฐฝ ํฌ์ปค์ค
์นด์นด์ค๋งต API ํค๊ฐ ์ด๋ฏธ ์ค์ ๋์ด ์์ต๋๋ค:
- JavaScript API:
d0ba84a83946f644629defc2356bd29c - REST API:
9ad69b16627cd6c6ef0be64463ffbf18
- ์์ ๋ฒจ:
/api/emergency-bells - ์ปค๋ฎค๋ํฐ:
/api/community - ํซ์กด:
/api/hotzone - ์ํ ํ์ธ:
/api/health
- ๊ฐ๋จ๊ตฌ: 1,713๊ฐ
- ์ค๋๊ตฌ: 1,456๊ฐ
- ์ฉ์ฐ๊ตฌ: 1,421๊ฐ
- ๊ตฌ๋ก๊ตฌ: 1,372๊ฐ
- ๊ด์ ๊ตฌ: 1,280๊ฐ
- ์๋ฑํฌ๊ตฌ: 1,185๊ฐ
- ๊ฐ์๊ตฌ: 1,156๊ฐ
- ๋งํฌ๊ตฌ: 1,099๊ฐ
- ๋๋ด๊ตฌ: 1,071๊ฐ
- ๊ด์ง๊ตฌ: 1,055๊ฐ
- ๋ฐฉ๋ฒ์ฉ: 20,054๊ฐ (89.1%)
- ๊ธฐํ: 1,332๊ฐ (5.9%)
- ์ฝ์๋ณดํธ: 1,116๊ฐ (5.0%)
- ๊ฐ๋ก๋ณ: 17,524๊ฐ (77.9%)
- ๊ณต์: 2,630๊ฐ (11.7%)
- ๊ธฐํ: 1,864๊ฐ (8.3%)
- ํ์ฅ์ค: 318๊ฐ (1.4%)
- ๊ฑด๋ฌผ: 83๊ฐ (0.4%)
- ์ฃผ์ฐจ์ฅ: 83๊ฐ (0.4%)
- ๊ฐ์ฅ ๊ฐ๊น์ด ๋น์๋ฒจ ์ฐพ๊ธฐ: ์ง๋๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ํ์ฌ ์์น๋ฅผ ํ์ธํ์ธ์
- ๋น์๋ฒจ ์ฌ์ฉ: ๋นจ๊ฐ์ ๋น์๋ฒจ์ ๋๋ฅด๋ฉด ๊ฒฝ์ฐฐ์์ ์๋ ์ฐ๊ฒฐ๋ฉ๋๋ค
- ์ผ๊ฐ ์์ : ๊ฐ๋ก๋ฑ์ด ์๋ ๊ณณ์ ๋น์๋ฒจ์ ์ฐ์ ์ ์ผ๋ก ์ด์ฉํ์ธ์
- ์์น ๊ณต์ : ๋น์๋ฒจ ์์น๋ฅผ ์ฃผ๋ณ ์ฌ๋๋ค๊ณผ ๊ณต์ ํ์ธ์
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค.
ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์์ฌํญ์ด ์์ผ์๋ฉด ์ด์๋ฅผ ๋ฑ๋กํด ์ฃผ์ธ์.