AI ๊ธฐ๋ฐ ํ์ต์ ๋ง์ถคํ ๋์ฒดํ ์คํธ/์ค์๊ฐ ์๋ง ๋ฐ ๋์ฒดํ์ต์๋ฃ ์ฝ๋ก ์์ฑ ํ๋ก๊ทธ๋จ
COMMA : Comment Assistant
์ด์
ํ ํ๊ฒฝ์์ ๊ณต๋ถํด ์จ ์ยท์ฒญ๊ฐ ์ฅ์ ํ์ต์๋ค์๊ฒ ๊ธฐ์ ์ ๋์์ ์ ๊ณตํ์ฌ ์ผํ๊ฐ ๋๊ณ ์ ํฉ๋๋ค
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| ์ฌ์ฉ์ ํ์ต ์ ํ ์ ํ | ํ์ต ์ค๋นํ๊ธฐ ํ๋ฉด | ๋์ฒด ํ ์คํธ ์์ | ์ฝ๋ก ์์ |
์ด ํ๋ก์ ํธ๋ Flutter๋ก ๊ตฌํ๋ ํ๋ก ํธ์๋(COMMA)์ Node.js๋ก ๊ตฌํ๋ ๋ฐฑ์๋(SERVER) ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์๋๋ ์ฃผ์ ๋๋ ํ ๋ฆฌ์ ํ์ผ ๊ตฌ์กฐ์
๋๋ค.
COMMA
โ
โโCOMMA
โ โ firebase.json
โ โ pubspec.lock
โ โ pubspec.yaml
โ โ README.md
โ โ
โ โโassets
โ โ
โ โโlib
โ โ โ 10_typeselect.dart
โ โ โ 12_hompage_search.dart
โ โ โ 16_homepage_move.dart
โ โ โ 17_allFilesPage.dart
โ โ โ 1_Splash_green.dart
โ โ โ 2_onboarding-1.dart
โ โ โ 30_folder_screen.dart
โ โ โ 31_full_folder_list_screen.dart
โ โ โ 33_mypage_screen.dart
โ โ โ 3_onboarding-2.dart
โ โ โ 4_onboarding-3.dart
โ โ โ 60prepare.dart
โ โ โ 62lecture_start.dart
โ โ โ 63record.dart
โ โ โ 66colon.dart
โ โ โ components.dart
โ โ โ firebase_options.dart
โ โ โ main.dart
โ โ โ
โ โ โโapi
โ โ โ api.dart
โ โ โ
โ โ โโenv
โ โ โ env.dart
โ โ โ env.g.dart
โ โ โ
โ โ โโfolder
โ โ โ 37_folder_files_screen.dart
โ โ โ 38_folder_list.dart
โ โ โ 39_folder_section.dart
โ โ โ
โ โ โโmodel
โ โ โ 44_font_size_provider.dart
โ โ โ 45_theme.dart
โ โ โ user.dart
โ โ โ user_provider.dart
โ โ โ
โ โ โโmypage
โ โ โ 42_help_page.dart
โ โ โ 43_accessibility_settings.dart
โ โ โ 44_font_size_page.dart
โ โ โ
โ โ โโuser
โ โ user_pref.dart
โ
โโSERVER
โ google-services.json
โ index.js
โ package-lock.json
โ package.json
COMMA๋ ์ยท์ฒญ๊ฐ ์ฅ์ ํ์ต์๋ฅผ ์ํด ๋ค์ ์ธ ๊ฐ์ง ์ฃผ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ์์๋ฃ์ ๋ํ ๋์ฒดํ ์คํธ ์๋ ์์ฑ ๊ธฐ๋ฅ
- ๊ฐ์์๋ฃ์ ํค์๋ ์ ํ๋๋ฅผ ๋์ธ ์ค์๊ฐ ์๋ง ์์ฑ ๊ธฐ๋ฅ
- ๊ฐ์์๋ฃ์ ์๋ง ์คํฌ๋ฆฝํธ๋ฅผ ๋งค์นญํ ๋์ฒดํ์ต์๋ฃ ์ฝ๋ก (:) ์์ฑ ๊ธฐ๋ฅ
์๋์์๋ ๊ฐ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ํ์ผ ๋ฐ ์ฝ๋๋ฅผ ์์ธํ ์ค๋ช
ํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ๊ฐ์์๋ฃ๋ฅผ GPT-4o API์ ๋ณด๋ด์ด, ์๋ฃ์ ๋ํ ๋์ฒด ํ
์คํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ์ฉ์๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ฑ ํ๋ฉด์์ ํ์ธํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
env.g.dart: GPT-4o API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ OpenAI API ํค๋ฅผ ์ค์ ํ๋ ํ์ผ์ ๋๋ค.60prepare.dart: ์ฌ์ฉ์๊ฐ ๊ฐ์์๋ฃ๋ฅผ ์ ๋ก๋ํ๊ณ , ์ด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ฉฐ, ๋์ฒดํ ์คํธ ์์ฑ์ ์ํด GPT-4o API๋ฅผ ํธ์ถํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ์ผ์ ๋๋ค.63record.dart: ์์ฑ๋ ๋์ฒด ํ ์คํธ๋ฅผ ์ฌ์ฉ์์๊ฒ ํ์ํ๋ ๊ธฐ๋ฅ์ ํฌํจํ ํ์ผ์ ๋๋ค.
Future<List<String>> uploadImagesToFirebase(List<Uint8List> images, int userKey)- ์ญํ : ์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ๊ฐ์์๋ฃ(์ด๋ฏธ์ง)๋ฅผ Firebase Storage์ ์ ๋ก๋ํ๊ณ , ๊ฐ ์ด๋ฏธ์ง์ ๋ค์ด๋ก๋ URL ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋์:
- ๊ฐ ์ด๋ฏธ์ง ํ์ผ์ Firebase Storage์ ์ ๋ก๋ํฉ๋๋ค.
- ์ ๋ก๋ ์งํ๋ฅ ์ _progressNotifier๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ ๋ก๋ ์๋ฃ ํ ๋ค์ด๋ก๋ URL์ ๋ฆฌ์คํธ์ ์ ์ฅํ๊ณ ๋ฐํํฉ๋๋ค.
Future<String> callChatGPT4APIForAlternativeText(List<String> imageUrls, int userKey, String lectureFileName)- ์ญํ : GPT-4o API๋ฅผ ํธ์ถํ์ฌ ๊ฐ์์๋ฃ(์ด๋ฏธ์ง)์ ๋์ฒด ํ ์คํธ๋ฅผ ์์ฑํ๊ณ , ์์ฑ๋ ๊ฒฐ๊ณผ๋ฅผ Firebase Storage์ ์ ๋ก๋ํฉ๋๋ค. ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ URL์ ๋ฐํํฉ๋๋ค.
- ๋์:
- ๊ฐ ์ด๋ฏธ์ง์ URL์ ๊ธฐ๋ฐ์ผ๋ก GPT-4o API๋ฅผ ํธ์ถํ์ฌ ํด๋น ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ๋ฅผ ์์ฑํจ.
- ์์ฑ๋ ํ ์คํธ๋ฅผ ํ์ผ๋ก ์ ์ฅํ๊ณ Firebase Storage์ ์ ๋ก๋ํฉ๋๋ค.
- ๊ฐ ํ ์คํธ ํ์ผ์ URL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค.
- ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ ํ, ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ ํตํฉํ ํ ์คํธ ํ์ผ์ ์์ฑํฉ๋๋ค.
- ์ต์ข ์ ์ผ๋ก ํตํฉ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ด๋ก๋ URL์ ๋ฐํํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ๊ฐ์์๋ฃ์์ ์ถ์ถํ ํต์ฌ ํค์๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํค์๋ ๋ถ์คํ
์ ์ํํ์ฌ, ๊ฐ์์๋ฃ์ ํค์๋๋ฅผ ๋ฐ์ํ ๋ ์ ํํ ์ค์๊ฐ ์๋ง์ ์์ฑํฉ๋๋ค.
์ด ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
60prepare.dart: ์ฌ์ฉ์๊ฐ ๊ฐ์์๋ฃ๋ฅผ ์ ๋ก๋ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ฉฐ, ํค์๋ ์ถ์ถ์ ์ํด GPT-4o API๋ฅผ ํธ์ถํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ์ผ์ ๋๋ค.63record.dart: Deepgram STT API ํค ์ค์ , ๋ น์ ์์, ์ค์๊ฐ ์๋ง ์์ฑ, ๋ น์ ์ข ๋ฃ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ์ผ์ ๋๋ค.
Future<List<String>> callChatGPT4APIForKeywords(List<String> imageUrls)- ์ญํ : ์ ๋ก๋๋ ๊ฐ์์๋ฃ ์ด๋ฏธ์ง์์ ํต์ฌ ํค์๋๋ฅผ ์ถ์ถํ๊ธฐ ์ํด GPT-4o API๋ฅผ ํธ์ถํฉ๋๋ค. ์ถ์ถ๋ ํค์๋๋ ์ค๋ณต์ ์ ๊ฑฐํ ๋ค Firebase์ ์ ์ฅํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ ์ฅ๋ฉ๋๋ค.
- ๋์:
- ๊ฐ ์ด๋ฏธ์ง URL์ ๋ํด GPT-4 API๋ฅผ ํธ์ถํ์ฌ ํค์๋๋ฅผ ์ถ์ถํฉ๋๋ค.
- ์ค๋ณต๋ ํค์๋๋ฅผ ์ ๊ฑฐํ๊ณ Firebase์ ์ ์ฅํฉ๋๋ค.
- Firebase์ ์ ์ฅ๋ ํค์๋ ํ์ผ์ URL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋กํฉ๋๋ค.
- ์ต์ข ์ ์ผ๋ก ์ถ์ถ๋ ํค์๋ ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค.
void _startRecording()- ์ญํ : ๋ น์์ ์์ํ๊ณ ์ค์๊ฐ ์์ฑ ์ธ์์ ์ด๊ธฐํํฉ๋๋ค.
- ๋์:
- ๋ น์ ์ํ๋ฅผ recording์ผ๋ก ์ค์ ํ๊ณ UI ์ํ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ค์๊ฐ ์์ฑ ์ธ์์ ์ํ ์คํธ๋ฆผ์ ์ด๊ธฐํํฉ๋๋ค.
- ๋ น์๊ธฐ๋ฅผ ์์ํ์ฌ ์์ฑ์ ์บก์ฒํฉ๋๋ค.
void _stopRecording()- ์ญํ : ๋ น์์ ์ค์งํ๊ณ ๋จ์ ์์ฑ์ ์ต์ข ํ ์คํธ๋ก ์ฒ๋ฆฌํ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค.
- ๋์:
- ๋ น์์ ์ค์งํ๊ณ ์ํ๋ฅผ recorded๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ค์๊ฐ์ผ๋ก ์ธ์๋์ง ์์ ํ ์คํธ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ต์ข ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค.
- ๋ น์ ์์ฑ ์๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ๊ฐ์์๋ฃ์ ์์
์๋ง ์คํฌ๋ฆฝํธ๋ฅผ ๋งค์นญํ์ฌ, ๊ฐ ๊ฐ์์๋ฃ ํ์ด์ง์ ํด๋นํ๋ ์๋ง์ ๋ถ๋ฆฌํ์ฌ ๋ณด์ฌ์ค๋๋ค.
์ด ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
63record.dart: ๊ฐ์์๋ฃ์ ์๋ง ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๋ก ํ์ผ ์์ฑ์ ์ํด GPT-4o API์ ์ ๋ฌํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ์ผ์ ๋๋ค.
Future<bool> callChatGPT4API(String pageText1, String pageText2, String scriptText)- ์ญํ : ๋ ๊ฐ์์๋ฃ ํ์ด์ง์ ํ ์คํธ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋น๊ตํ์ฌ, ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ ํ์ด์ง์ ํด๋นํ๋์ง ํ๋จํฉ๋๋ค.
- ๋์:
- GPT-4o API๋ฅผ ํธ์ถํ์ฌ ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ ํ์ด์ง์ ์ํ๋์ง ํ๋ณํฉ๋๋ค.
- ๊ฒฐ๊ณผ๊ฐ์ด "isNext"์ด๋ฉด true, "isNotNext"์ด๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ์๋์ ๊ฐ์ ์คํ์์ค ๋ฐ ์ธ๋ถ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋์์ต๋๋ค:
- Flutter: ํฌ๋ก์ค ํ๋ซํผ ์ฑ ๊ฐ๋ฐ ํ๋ ์์ํฌ.
- Node.js: ๋ฐฑ์๋ ์๋ฒ ๊ฐ๋ฐ์ ์ํ JavaScript ๋ฐํ์.
- OpenAI API: GPT-4o ๋ชจ๋ธ์ ์ฌ์ฉํ ๋์ฒด ํ ์คํธ ๋ฐ ์คํฌ๋ฆฝํธ ๋ถ์.
- Deepgram STT API: ์ค์๊ฐ ์์ฑ ์ธ์์ ์ํ API.
- Firebase: ํ์ผ ์คํ ๋ฆฌ์ง ๋ฐ ์ฌ์ฉ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ.
- MySQL: ๊ฐ์์๋ฃ ๋ฐ ํค์๋, ๋์ฒด ํ ์คํธ ๋ฑ์ ๋ฐ์ดํฐ ์ ์ฅ.
- http: Flutter์์ REST API ํธ์ถ์ ์ํ HTTP ํด๋ผ์ด์ธํธ.
- provider: ์ํ ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ๊ณต์ .
- Express.js: RESTful API ๊ฐ๋ฐ๊ณผ ๋ผ์ฐํ
๊ด๋ฆฌ.
๋ณธ ํํ ๋ฆฌ์ผ์ Window OS ํ๊ฒฝ ๋ฐ ์๋๋ก์ด๋ ํ๊ฒฝ์ผ๋ก ์ค๋ช
ํฉ๋๋ค
- Nodejs ์ค์น
- Android Studio ์ค์น
- Flutter ์ค์น
- OPENAI API : GPT-4o API ์ฌ์ฉํ๊ธฐ ์ํด ํค ๋ฐ๊ธ ๋ฐ๊ธฐ
- Android ๋๋ฐ์ด์ค: ์๋๋ก์ด๋ ๋๋ฐ์ด์ค ๋๋ ์๋ฎฌ๋ ์ดํฐ
git init
git clone -b dev2 --single-branch https://github.com/WarmElephantMario/COMMA.gitcd COMMA/COMMA
flutter pub get
flutter pub outdated
flutter pub upgrade --major-versionslib/env/env.g.dart ์ ๋ฐ๊ธ๋ฐ์ OpenAI API KEY๋ฅผ ์ค์ ํฉ๋๋ค.
# lib/env/env.g.dart
static const String apiKey =
'YOUR_API_KEY';# COMMA/COMMA
flutter build apk --releaseโป ๋น๋ ๊ณผ์ ์ค ํฐ๋ฏธ๋์ ์๋์ ๊ฐ์ ๋ฉ์์ง๊ฐ ํ์๋ ์ ์์ง๋ง, ๋น๋๋ ์ ์์ ์ผ๋ก ์๋ฃ๋ฉ๋๋ค.
โป ๋น๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ ํ ๋ค์ ๋น๋๋ฅผ ์๋ํ์ธ์.
flutter clean
flutter pub get
flutter pub outdated
flutter pub upgrade --major-versionsCOMMA/COMMA/build/app/outputs/apk/release/app-release.apk
์ด apk ํ์ผ์ ์๋๋ก์ด๋ ๋๋ฐ์ด์ค์์ ๋ค์ด๋ก๋ ํฉ๋๋ค.
![]() |
![]() |
|---|
์ฑ ์ค์น ์ค '์ถ์ฒ๋ฅผ ์ ์ ์๋ ์ฑ'์ด๋ผ๋ ์๋ฆผ์ฐฝ์ด ํ์๋ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ '๋ฌด์ํ๊ณ ์ค์น' ๋ฅผ ์ ํํ์ฌ ์ฑ ์ค์น๋ฅผ ์งํํฉ๋๋ค.
์ฑ ์ค์น๊ฐ ์๋ฃ๋๋ฉด COMMA ์์ด์ฝ์ด ์์ฑ๋ฉ๋๋ค. ์ฑ์ ์คํํ๋ฉด ์จ๋ณด๋ฉ ํ๋ฉด์ด ํ์๋๋ฉฐ, ํ์๊ฐ์
์์ด ๋ฐ๋ก ์ฑ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
![]() |
![]() |
![]() |
![]() |
|---|
COMMA ์ฑ apk ํ์ผ ๊ณต์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋งํฌ์
๋๋ค. ๋ค์์ ๋งํฌ์์ apk ํ์ผ์ ๋ค์ด ๋ฐ๊ณ ์ฑ์ ์ค์นํ ์ ์์ต๋๋ค. ๊ธฐ๊ธฐ ๋ฒํธ๋ก ์ ์ ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ๋๋ฌธ์ ํ์๊ฐ์
/๋ก๊ทธ์ธ ์์ด ๋ฐ๋ก ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
COMMA apk ๋ค์ด ๋งํฌ















