Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
214 commits
Select commit Hold shift + click to select a range
e0cb9cb
feat : sample car data import
kimgeon0802 Jun 16, 2026
5c47b4e
feat : OpenAPI connect
kimgeon0802 Jun 16, 2026
d887539
feat: 불량 탐지 모델 및 SHAP 기반 전이 예측 1차 구현
mmije0ng Jun 16, 2026
dfef7de
feat: 제조 이벤트 JSON 생성 및 적재 API 구현
mmije0ng Jun 17, 2026
5eeca30
feat: 제조 이벤트 생성 API 비동기 job 처리 적용
mmije0ng Jun 17, 2026
2a43cf2
feat : risk, process repository add
kimgeon0802 Jun 17, 2026
53631ff
fix : .env.example add
kimgeon0802 Jun 17, 2026
9e6413a
Merge branch 'feat/309/manufacturing-event-json' of https://github.co…
kimgeon0802 Jun 17, 2026
87fe1d8
refactor: 제조 이벤트 서비스 패키지 구조 정리
mmije0ng Jun 17, 2026
ba1caa6
refactor: 제조 이벤트 스케줄러 패키지 분리
mmije0ng Jun 17, 2026
9366b68
Merge branch 'feat/309/manufacturing-event-json' of https://github.co…
kimgeon0802 Jun 17, 2026
f48f23f
Merge pull request #8 from SK-Rookies-AIMS/feat/quality
mmije0ng Jun 17, 2026
e6935fd
Merge branch 'main' into feat/quality
kimgeon0802 Jun 21, 2026
ceec153
feat : main branch mergeing
kimgeon0802 Jun 21, 2026
4493413
Merge branch 'main' into feat/quality
kimgeon0802 Jun 21, 2026
de0e938
del : qaulity_risk_trend_repository file delete
kimgeon0802 Jun 22, 2026
5656e92
feat: 불량 탐지 모델링 및 SHAP 기반 전이 예측 2차 구현
mmije0ng Jun 22, 2026
0ea54c3
fix: 제조 이벤트 생성 및 저장 구조 개선
mmije0ng Jun 22, 2026
bba2660
fix : kafka error check
kimgeon0802 Jun 22, 2026
bc0af26
Merge remote-tracking branch 'origin/feat/quality' into feat/341/manu…
mmije0ng Jun 22, 2026
3943feb
feat : requirements.txt update_#kafka
kimgeon0802 Jun 22, 2026
2c23adc
chore: requirements.txt 변경
mmije0ng Jun 22, 2026
67088db
chore: requirements.txt merge 오류 수정
mmije0ng Jun 22, 2026
c19ede8
Merge pull request #9 from SK-Rookies-AIMS/feat/341/manufacturing-eve…
qwer9679 Jun 22, 2026
85063d8
feat : quality producer add
Jun 26, 2026
2101e3c
fix : RDS password update, producer PATH update
kimgeon0802 Jun 26, 2026
2cf2a3f
feat : quality scheduler _init_.py add
kimgeon0802 Jun 26, 2026
b08b4e5
fix : RDS Path url update
kimgeon0802 Jun 26, 2026
ab29731
feat : producer msg check update
kimgeon0802 Jun 26, 2026
08aeb47
feat : quality process kafka add
kimgeon0802 Jun 26, 2026
cbcbae8
feat : risk_hitory producer add
kimgeon0802 Jun 26, 2026
635b35e
feat : risk_trend producer add
kimgeon0802 Jun 26, 2026
6287cba
fix : risk_trend RDS URL update
kimgeon0802 Jun 26, 2026
85ec9c3
feat : update round update
kimgeon0802 Jun 26, 2026
4a1ec71
feat : status_detail producer add
kimgeon0802 Jun 26, 2026
8b52a6b
Merge branch 'feat/quality' into dev
kimgeon0802 Jun 26, 2026
2834b71
feat : secreat env update
kimgeon0802 Jun 26, 2026
ce664a7
fix : iam_provider.py update
kimgeon0802 Jun 26, 2026
1a3cec5
Merge pull request #11 from SK-Rookies-AIMS/feat/quality
mmije0ng Jun 26, 2026
d23bc5d
feat : drop car delete
kimgeon0802 Jun 26, 2026
7d087a0
fix : SQL input error update
kimgeon0802 Jun 26, 2026
8d5b892
fix : env name update
kimgeon0802 Jun 26, 2026
af67733
fix : env name update 2
kimgeon0802 Jun 26, 2026
4dd3ad4
producer env update
kimgeon0802 Jun 26, 2026
5ec2950
push count update
kimgeon0802 Jun 26, 2026
2084953
feat: 불량 탐지 임시 저장
mmije0ng Jun 26, 2026
0bad7db
Merge remote-tracking branch 'origin/dev' into feat/350/defect-modeli…
mmije0ng Jun 26, 2026
ef26c6a
feat: 제조 불량 탐지 및 전이 예측 모델링
mmije0ng Jun 27, 2026
f569539
feat : main function add
kimgeon0802 Jun 30, 2026
0a75adf
fix : run() function add
kimgeon0802 Jun 30, 2026
f4394c6
fix : consumer function update
kimgeon0802 Jun 30, 2026
8cde69f
feat: Kafka raw 이벤트 기반 병목 탐지 연동
mmije0ng Jun 30, 2026
f675864
feat : print update, risk-trend_producer update
kimgeon0802 Jun 30, 2026
93aa2c4
Merge pull request #12 from SK-Rookies-AIMS/feat/366/bottleneck-kafka
qwer9679 Jun 30, 2026
8055e58
fix : id number update
kimgeon0802 Jun 30, 2026
4815151
Merge branch 'dev' into feat/quality
kimgeon0802 Jun 30, 2026
add66d9
fix: 제조 이벤트 manufacturing_event_json 생성 개선
mmije0ng Jun 30, 2026
661cfd5
feat : inspection_master add, test code update
kimgeon0802 Jun 30, 2026
03c754a
fix: 병목 분석 빈 페이지 응답 처리
mmije0ng Jun 30, 2026
e1cf543
feat : inspection_master scheduler update
kimgeon0802 Jun 30, 2026
42c699d
fix : repository consumer group update
kimgeon0802 Jun 30, 2026
62d3380
fix : sql error update, process_producer update
kimgeon0802 Jun 30, 2026
51c1877
fix : exists text lib add
kimgeon0802 Jun 30, 2026
b94833b
fix : process process_nama del
kimgeon0802 Jun 30, 2026
a8d0d2f
feat requirements.txt kafka-python version down
kimgeon0802 Jun 30, 2026
3255dee
Merge pull request #13 from SK-Rookies-AIMS/feat/quality
mmije0ng Jun 30, 2026
6881c7f
fix(ml): 병목 평균 지연 0초 계산 버그 수정 (waiting_time 대체 로직 적용)
mmije0ng Jun 30, 2026
1818e54
fix: requirements.txt merge 오류 수정
mmije0ng Jun 30, 2026
9a143ee
fix(ml): 병목 평균 지연 0초 계산 버그 수정 및 app 모듈 임포트 추가
mmije0ng Jun 30, 2026
ee9e5c8
Merge pull request #14 from SK-Rookies-AIMS/feat/366/bottleneck-kafka
kimgeon0802 Jun 30, 2026
c6a3d48
fix : process kafka msg update
kimgeon0802 Jul 1, 2026
69ca753
fix : risk-history recode time update/start time, end time add
kimgeon0802 Jul 1, 2026
78ec2cc
fix : process repository sql text update
kimgeon0802 Jul 1, 2026
311fbed
feat : print del
kimgeon0802 Jul 1, 2026
d1a1b0f
feat : print del 2
kimgeon0802 Jul 1, 2026
1356780
feat : print del 3'
kimgeon0802 Jul 1, 2026
42fb60d
fix : process text add
kimgeon0802 Jul 1, 2026
c73db4d
feat: 불량 전이 예측 Kafka 연동 및 분석 API 구현
mmije0ng Jul 1, 2026
2358c9b
feat : summary update
kimgeon0802 Jul 1, 2026
6af783f
Merge pull request #15 from SK-Rookies-AIMS/feat/371/shap-kafka
kimgeon0802 Jul 1, 2026
5581e1e
Merge branch 'dev' into feat/quality
kimgeon0802 Jul 1, 2026
8149457
Merge pull request #16 from SK-Rookies-AIMS/feat/quality
mmije0ng Jul 1, 2026
3b20a34
feat : websocket add
kimgeon0802 Jul 1, 2026
ccd2560
feat : websocket msg update
kimgeon0802 Jul 1, 2026
8d3fbd3
test1
kimgeon0802 Jul 1, 2026
d18aff5
test2
kimgeon0802 Jul 1, 2026
b765381
test3
kimgeon0802 Jul 1, 2026
ae47033
test4
kimgeon0802 Jul 1, 2026
76216ea
feat : error msg patch
kimgeon0802 Jul 2, 2026
2cd44e5
feat : error msg patch 2
kimgeon0802 Jul 2, 2026
1ebd687
feat : error msg patch 3
kimgeon0802 Jul 2, 2026
23b8295
feat : AIListener del
kimgeon0802 Jul 2, 2026
75fff0f
feat: 제조 병목&불량 전이 예측 이벤트 수신 시 웹소켓 설정
mmije0ng Jul 2, 2026
fc43213
del : websocket lib del
kimgeon0802 Jul 2, 2026
f5f03a8
fix: equipment 테이블 health_status 삭제
mmije0ng Jul 2, 2026
06f325b
fix: 검사 위험도 레포지토리 이전 파일로 변경
mmije0ng Jul 2, 2026
ab34d3c
fix : DB session out code update
kimgeon0802 Jul 2, 2026
208d116
fix : DB session out code update 2
kimgeon0802 Jul 2, 2026
fa5d837
del : stomp websocket client del
kimgeon0802 Jul 2, 2026
5005bc9
Merge pull request #17 from SK-Rookies-AIMS/feat/371/defect-shap-es
kimgeon0802 Jul 2, 2026
93bf361
Merge branch 'dev' into feat/quality
kimgeon0802 Jul 2, 2026
a78a914
Merge pull request #18 from SK-Rookies-AIMS/feat/quality
mmije0ng Jul 2, 2026
33a23a6
feat : ai_manual package add
kimgeon0802 Jul 3, 2026
f6ff256
feat : rag/router/prompt/schema/service code add
kimgeon0802 Jul 3, 2026
d86547f
api/router ai-manual add
kimgeon0802 Jul 3, 2026
1e99e85
feat : app/worker_main.py app/launcher.py add
kimgeon0802 Jul 3, 2026
5160b8f
data/system_description.md add
kimgeon0802 Jul 3, 2026
81bf0b4
Merge pull request #19 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
mmije0ng Jul 3, 2026
d2b9c06
fix: 제조 이벤트 데이터 생성 시 수치값들 범위 수정
mmije0ng Jul 3, 2026
308cf18
fix: 병목 전이 시 의장 불량 확률 100%로로 계산되는 오류 수정
mmije0ng Jul 3, 2026
06a3f93
Merge remote-tracking branch 'origin/dev' into feat/371/defect-shap-es
mmije0ng Jul 3, 2026
3607646
feat: ArgoCD GipOps process
sknm1106 Jul 3, 2026
0dd5270
fix : import path update
kimgeon0802 Jul 3, 2026
46458a7
Merge branch 'dev' into feat/264/AI-manual-watchy
kimgeon0802 Jul 3, 2026
5d2d24a
import path update 2
kimgeon0802 Jul 3, 2026
f62d7cc
Merge pull request #20 from SK-Rookies-AIMS/feat/371/defect-shap-es
kimgeon0802 Jul 3, 2026
d7114fe
Merge pull request #21 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
mmije0ng Jul 3, 2026
2ce56c1
fix: analysis topic consumer group 오류 수정
mmije0ng Jul 3, 2026
e391485
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/ai-service i…
sknm1106 Jul 3, 2026
2ba4597
Merge pull request #22 from SK-Rookies-AIMS/feat/371/defect-shap-es
sknm1106 Jul 3, 2026
975f45b
Merge pull request #23 from SK-Rookies-AIMS/infra/363/docker
hyein0514 Jul 3, 2026
33068de
fix: kafka-python 버전 수정
mmije0ng Jul 3, 2026
9501fd9
fix: kafka-python 버전 2.2.15로 수정
mmije0ng Jul 3, 2026
5ef6367
Merge pull request #24 from SK-Rookies-AIMS/feat/371/defect-shap-es
hyein0514 Jul 3, 2026
e1676f8
fix: SHAP 기반 불량 전이 원인 메시지 수정
mmije0ng Jul 3, 2026
f8a8a30
fix: SHAP 기반 원인 분석 메시지 영향도 값 수정
mmije0ng Jul 3, 2026
a994723
feat : db.py DB Pool connection
kimgeon0802 Jul 4, 2026
60b1035
fix : sample DB URL update
kimgeon0802 Jul 4, 2026
10e34d0
fix : cleanup_done default value add
kimgeon0802 Jul 4, 2026
2b7220b
fix: 병목 조회 시 가장 병목 위험도 높은 공정 응답값 추가
mmije0ng Jul 4, 2026
85f5b33
feat : events router add
kimgeon0802 Jul 4, 2026
4198f80
Merge pull request #25 from SK-Rookies-AIMS/feat/371/defect-shap-es
sknm1106 Jul 4, 2026
7bbc7bc
fix: 병목&불량전이 조회 시 오늘 날짜 기준의 데이터만 반환되도록 변경
mmije0ng Jul 4, 2026
5387e56
fix: newTag image update, secret update
sknm1106 Jul 4, 2026
ceb0475
fix : ai-manual update
kimgeon0802 Jul 4, 2026
9ad0be2
Merge pull request #27 from SK-Rookies-AIMS/infra/363/docker
mmije0ng Jul 4, 2026
8747ddc
fix : branch push
kimgeon0802 Jul 4, 2026
1c274dc
Merge branch 'dev' into feat/264/AI-manual-watchy
kimgeon0802 Jul 4, 2026
c1e93de
fix: 병목&불량 탐지 analysis 토픽 중복 발행 방지
mmije0ng Jul 7, 2026
240cd68
Merge pull request #26 from SK-Rookies-AIMS/feat/371/defect-shap-es
kimgeon0802 Jul 7, 2026
272ac0e
feat : users table ID get
kimgeon0802 Jul 7, 2026
b496ddb
Merge branch 'dev' into feat/264/AI-manual-watchy
kimgeon0802 Jul 7, 2026
52919c1
fix: raw Kafka consumer offset commit 실패 처리
mmije0ng Jul 7, 2026
9f18531
fix: 병목분석 DB 랭킹관련 PK 오류 수정
mmije0ng Jul 7, 2026
488f8a3
feat : ai-manual router update
kimgeon0802 Jul 7, 2026
4d6e0c4
refactor: namespace, branch 추가
sknm1106 Jul 7, 2026
d74f0fa
Merge pull request #29 from SK-Rookies-AIMS/infra/363/docker
mmije0ng Jul 7, 2026
9780b9e
Merge pull request #28 from SK-Rookies-AIMS/feat/371/defect-shap-es
kimgeon0802 Jul 7, 2026
2c3c2c9
feat : front token value update
kimgeon0802 Jul 7, 2026
8f669e4
Merge branch 'dev' into feat/264/AI-manual-watchy
kimgeon0802 Jul 7, 2026
f0a019d
fix : stomp lib del
kimgeon0802 Jul 7, 2026
dc29312
Merge pull request #30 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
sknm1106 Jul 7, 2026
d551f4a
fix : dev branch update
kimgeon0802 Jul 9, 2026
e393767
Merge branch 'dev' into feat/264/AI-manual-watchy
kimgeon0802 Jul 9, 2026
09e8440
feat : prompt_template.py AI manual text lange update
kimgeon0802 Jul 9, 2026
97c09fd
fix: 불량전이 판단 원인 추출된 결과만 반환하도록 수정
mmije0ng Jul 9, 2026
a6112d2
fix : process_producer update
kimgeon0802 Jul 9, 2026
dad76cb
fix summary_reposiotory update
kimgeon0802 Jul 9, 2026
c537675
Merge pull request #31 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
mmije0ng Jul 9, 2026
a2a91fb
Merge pull request #32 from SK-Rookies-AIMS/feat/371/defect-shap-es
mmije0ng Jul 9, 2026
a7fb07d
fix: 병목순위 중복 반환 오류 수정
mmije0ng Jul 10, 2026
1408894
feat : logger update
kimgeon0802 Jul 10, 2026
4c9b9d0
feat: Elasticsearch 기반 병목·불량전이 조회 연동
mmije0ng Jul 10, 2026
d798688
Merge pull request #33 from SK-Rookies-AIMS/feat/371/defect-shap-es
mmije0ng Jul 10, 2026
aef499c
fix : infra ai-manual path update
kimgeon0802 Jul 10, 2026
79fd342
Merge branch 'dev' into feat/264/AI-manual-watchy
kimgeon0802 Jul 10, 2026
b45b161
Merge pull request #34 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
mmije0ng Jul 10, 2026
0a1a314
fix: 순차 배포
sknm1106 Jul 10, 2026
56e707a
feat : log nomber add
kimgeon0802 Jul 10, 2026
1053e1e
Merge pull request #35 from SK-Rookies-AIMS/infra/363/docker
kimgeon0802 Jul 10, 2026
7bafa1c
Merge pull request #36 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
sknm1106 Jul 10, 2026
d8e2d80
Revert "feat : log nomber add"
kimgeon0802 Jul 10, 2026
b1c4351
fix : alg update
kimgeon0802 Jul 10, 2026
bffd9c2
Merge pull request #37 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
mmije0ng Jul 10, 2026
de0b4ab
fix : JWT alg update
kimgeon0802 Jul 10, 2026
5c830e9
Merge pull request #38 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
mmije0ng Jul 10, 2026
d58af02
fix : env del
kimgeon0802 Jul 10, 2026
11500e7
fix : env update
kimgeon0802 Jul 10, 2026
fa18934
feat : template update
kimgeon0802 Jul 13, 2026
52c5773
Merge pull request #40 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 13, 2026
d1f7e71
fix: AI 분석 조회 ES-first 및 날짜 옵션 개선
mmije0ng Jul 13, 2026
7a700d3
Merge remote-tracking branch 'origin/dev' into feat/371/defect-shap-es
mmije0ng Jul 13, 2026
40c80d3
fix: update secret key
sknm1106 Jul 13, 2026
b0f01f5
Merge pull request #42 from SK-Rookies-AIMS/infra/363/docker
mmije0ng Jul 13, 2026
33a4976
Merge remote-tracking branch 'origin/dev' into feat/371/defect-shap-es
mmije0ng Jul 13, 2026
32f6bc6
fix: 병목/불량 전이/SHAP 분석 조회 및 ES 재색인 정합성 개선
mmije0ng Jul 13, 2026
41da7e6
Merge pull request #41 from SK-Rookies-AIMS/feat/371/defect-shap-es
hyein0514 Jul 13, 2026
95d2eca
fix: 제조 프레스&차체 이상탐지 레퍼런 맞게 manufacutring_event_json 데이터 생성 수정
mmije0ng Jul 13, 2026
c176553
docs: 병목/불량 전이 분석 코드 주석 보강
mmije0ng Jul 13, 2026
c1a2ac5
fix: 도장 레퍼런스 기반 manufacturing_event_json 생성 개선
mmije0ng Jul 13, 2026
cc3d8ea
Merge pull request #43 from SK-Rookies-AIMS/feat/371/defect-shap-es
hyein0514 Jul 13, 2026
e5c42df
fix: 제조 이벤트 생성 및 분석 ES 색인 안정화
mmije0ng Jul 13, 2026
1343d67
Merge pull request #44 from SK-Rookies-AIMS/feat/371/defect-shap-es
sknm1106 Jul 13, 2026
68a1acf
fix: 병목&불량 전이 조회 dateOptions 반환 수정
mmije0ng Jul 15, 2026
dff2d6f
Merge pull request #45 from SK-Rookies-AIMS/chore/defect-model-improv…
hyein0514 Jul 15, 2026
fa1de8b
fix : 404 error update
kimgeon0802 Jul 15, 2026
7a4e3a9
Merge pull request #46 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 15, 2026
92c03f5
manual.py return value update
kimgeon0802 Jul 15, 2026
702fb50
Merge pull request #47 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 15, 2026
6b921b9
docs: README 문서 정리
mmije0ng Jul 15, 2026
b3b57c6
docs: README 문서 수정
mmije0ng Jul 15, 2026
f608871
docs: README 문서 정리
mmije0ng Jul 15, 2026
1b6016d
docs: README 순서 수정
mmije0ng Jul 15, 2026
174c548
Merge pull request #48 from SK-Rookies-AIMS/chore/defect-model-improv…
hyein0514 Jul 15, 2026
69301c5
chore: git action trigger
mmije0ng Jul 15, 2026
29429fe
chore: swagger 설명 보강
mmije0ng Jul 16, 2026
98c9bd0
chore: merge fix
mmije0ng Jul 16, 2026
0293186
Merge pull request #49 from SK-Rookies-AIMS/chore/defect-model-improv…
qwer9679 Jul 16, 2026
26a2026
docs: README 사진 깨짐 수정
mmije0ng Jul 21, 2026
5bc2f1f
Merge remote-tracking branch 'origin/dev' into chore/defect-model-imp…
mmije0ng Jul 21, 2026
078d9a9
chore: git action trigger
mmije0ng Jul 21, 2026
9f32da2
Merge pull request #50 from SK-Rookies-AIMS/chore/defect-model-improv…
qwer9679 Jul 21, 2026
b185bba
fix: 병목&불량전이 ES KST로 변경
mmije0ng Jul 21, 2026
c4d2d44
Merge pull request #51 from SK-Rookies-AIMS/chore/defect-model-improv…
qwer9679 Jul 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
venv
.venv
__pycache__
*.pyc
*.pyo
*.pyd
.git
.github
.env
.vscode
.idea
logs
*.log
31 changes: 23 additions & 8 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,32 @@ AI_MANUAL_API_URL=
COLLEAGUE_SKILL_API_URL=

# Kafka
KAFKA_BOOTSTRAP_SERVERS=
BROKER_URL_1=
BROKER_URL_2=

# Redis Cache
REDIS_URL=redis://localhost:6379/0
REDIS_KEY_PREFIX=aims:ai-service
REDIS_CACHE_TTL_SECONDS=300
REDIS_CACHE_TTL_SECONDS=60

# Main MySQL DB
# Bottleneck analysis results are written to this DB.
MAIN_DATABASE_URL=mysql+pymysql://aims_user:change-me@localhost:3306/maindb?charset=utf8mb4
# Elasticsearch / OpenSearch
ELASTICSEARCH_URL=http://localhost:9200
ELASTICSEARCH_USERNAME=
ELASTICSEARCH_PASSWORD=
ELASTICSEARCH_VERIFY_CERTS=true
ELASTICSEARCH_BOTTLENECK_INDEX=aims-bottleneck-analysis-v1
ELASTICSEARCH_DEFECT_TRANSFER_INDEX=aims-defect-transfer-analysis-v1

# Sample MySQL DB
# Use this DB for sample/source data connections when needed.
SAMPLE_DATABASE_URL=mysql+pymysql://sample_user:change-me@localhost:3306/sampledb?charset=utf8mb4
# MySQL DB
# MAIN_DATABASE_URL contains the shared driver/user/password/host/port.
# MAIN_DB_NAME and SAMPLE_DB_NAME select the actual schema/database.
MAIN_DATABASE_URL=mysql+pymysql://aims_user:change-me@localhost:3306/?charset=utf8mb4
MAIN_DB_NAME=maindb
SAMPLE_DB_NAME=sampledb

# Manufacturing source event JSON generation
MANUFACTURING_EVENT_SCHEDULER_ENABLED=true
# Optional limits. If omitted, all car_master rows matching the production date are used.
# MANUFACTURING_EVENT_SCHEDULER_EVENTS_PER_DAY=42800
# MANUFACTURING_EVENT_CAR_POOL_SIZE=10700
MANUFACTURING_EVENT_INSERT_CHUNK_SIZE=1000
323 changes: 323 additions & 0 deletions .github/workflows/deploy-ai-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,323 @@
name: Build AI Service and Update GitOps

on:
push:
branches:
- dev
- main
paths:
- "app/**"
- "main.py"
- "worker_main.py"
- "requirements.txt"
- "pyproject.toml"
- "uv.lock"
- "Dockerfile"
- ".dockerignore"
- ".github/workflows/deploy-ai-service.yml"

workflow_dispatch:

concurrency:
group: ai-service-${{ github.ref_name }}
cancel-in-progress: false

env:
AWS_REGION: ap-northeast-2
EKS_CLUSTER_NAME: aims-dev-eks
ECR_REPOSITORY: aims/ai-service
NAMESPACE: aims-project

INFRA_REPOSITORY: SK-Rookies-AIMS/infra
INFRA_BRANCH: dev
INFRA_MANIFEST_PATH: k8s/ai-service/kustomization.yaml

jobs:
deploy:
runs-on: ubuntu-latest

permissions:
contents: read

steps:
- name: Checkout AI service repository
uses: actions/checkout@v4

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- name: Ensure ECR repository exists
run: |
set -euo pipefail

if ! aws ecr describe-repositories \
--repository-names "$ECR_REPOSITORY" \
--region "$AWS_REGION" \
> /dev/null 2>&1; then

aws ecr create-repository \
--repository-name "$ECR_REPOSITORY" \
--region "$AWS_REGION" \
--image-scanning-configuration scanOnPush=true \
--image-tag-mutability MUTABLE
fi

- name: Build and push Docker image
id: build-image
shell: bash
run: |
set -euo pipefail

IMAGE_TAG="${GITHUB_REF_NAME}-${GITHUB_SHA::12}"
IMAGE_URI="${{ steps.login-ecr.outputs.registry }}/${ECR_REPOSITORY}:${IMAGE_TAG}"
BRANCH_IMAGE_URI="${{ steps.login-ecr.outputs.registry }}/${ECR_REPOSITORY}:${GITHUB_REF_NAME}"

echo "Building image: $IMAGE_URI"

docker build \
-t "$IMAGE_URI" \
-t "$BRANCH_IMAGE_URI" \
.

docker push "$IMAGE_URI"
docker push "$BRANCH_IMAGE_URI"

echo "image_uri=$IMAGE_URI" >> "$GITHUB_OUTPUT"
echo "image_tag=$IMAGE_TAG" >> "$GITHUB_OUTPUT"

- name: Checkout infra repository
uses: actions/checkout@v4
with:
repository: ${{ env.INFRA_REPOSITORY }}
ref: ${{ env.INFRA_BRANCH }}
token: ${{ secrets.INFRA_REPO_TOKEN }}
path: infra
fetch-depth: 0

- name: Update kubeconfig and ensure namespace
if: github.ref_name == 'dev'
shell: bash
run: |
set -euo pipefail

aws eks update-kubeconfig \
--region "$AWS_REGION" \
--name "$EKS_CLUSTER_NAME"

kubectl create namespace "$NAMESPACE" \
--dry-run=client \
-o yaml |
kubectl apply -f -

- name: Load AI service runtime parameters from SSM
if: github.ref_name == 'dev'
shell: bash
run: |
set -euo pipefail

RDS_SECRET_ARN=$(aws ssm get-parameter \
--name "/aims/dev/rds/secret-arn" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

RDS_HOST=$(aws ssm get-parameter \
--name "/aims/dev/backend/rds-host" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

RDS_PORT=$(aws ssm get-parameter \
--name "/aims/dev/backend/rds-port" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

MAIN_DB_NAME=$(aws ssm get-parameter \
--name "/aims/dev/backend/main-db-name" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

SAMPLE_DB_NAME=$(aws ssm get-parameter \
--name "/aims/dev/backend/sample-db-name" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

REDIS_HOST=$(aws ssm get-parameter \
--name "/aims/dev/redis/host" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

REDIS_PORT=$(aws ssm get-parameter \
--name "/aims/dev/redis/port" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

JWT_SECRET_KEY=$(aws ssm get-parameter \
--name "/aims/dev/backend/jwt-secret-key" \
--region "$AWS_REGION" \
--with-decryption \
--query "Parameter.Value" \
--output text)

OPENAI_API_KEY=$(aws ssm get-parameter \
--name "/aims/dev/ai-service/openai-api-key" \
--region "$AWS_REGION" \
--with-decryption \
--query "Parameter.Value" \
--output text)

for VALUE in \
"$RDS_SECRET_ARN" \
"$RDS_HOST" \
"$RDS_PORT" \
"$MAIN_DB_NAME" \
"$SAMPLE_DB_NAME" \
"$REDIS_HOST" \
"$REDIS_PORT" \
"$JWT_SECRET_KEY" \
"$OPENAI_API_KEY"; do

if [ -z "$VALUE" ] || [ "$VALUE" = "None" ]; then
echo "Required AI service SSM parameter is empty"
exit 1
fi
done

echo "::add-mask::$RDS_SECRET_ARN"
echo "::add-mask::$JWT_SECRET_KEY"
echo "::add-mask::$OPENAI_API_KEY"

{
echo "RDS_SECRET_ARN=$RDS_SECRET_ARN"
echo "RDS_HOST=$RDS_HOST"
echo "RDS_PORT=$RDS_PORT"
echo "MAIN_DB_NAME=$MAIN_DB_NAME"
echo "SAMPLE_DB_NAME=$SAMPLE_DB_NAME"
echo "REDIS_HOST=$REDIS_HOST"
echo "REDIS_PORT=$REDIS_PORT"
echo "JWT_SECRET_KEY=$JWT_SECRET_KEY"
echo "OPENAI_API_KEY=$OPENAI_API_KEY"
} >> "$GITHUB_ENV"

- name: Create or update AI service Secret
if: github.ref_name == 'dev'
shell: bash
run: |
set -euo pipefail

SECRET_JSON=$(aws secretsmanager get-secret-value \
--secret-id "$RDS_SECRET_ARN" \
--region "$AWS_REGION" \
--query "SecretString" \
--output text)

DB_USER=$(echo "$SECRET_JSON" | jq -r '.username')
DB_PASSWORD=$(echo "$SECRET_JSON" | jq -r '.password')

if [ -z "$DB_USER" ] || [ "$DB_USER" = "null" ]; then
echo "DB username is missing"
exit 1
fi

if [ -z "$DB_PASSWORD" ] || [ "$DB_PASSWORD" = "null" ]; then
echo "DB password is missing"
exit 1
fi

DB_USER_ENCODED=$(printf '%s' "$DB_USER" | jq -sRr @uri)
DB_PASSWORD_ENCODED=$(printf '%s' "$DB_PASSWORD" | jq -sRr @uri)

MAIN_DATABASE_URL="mysql+pymysql://${DB_USER_ENCODED}:${DB_PASSWORD_ENCODED}@${RDS_HOST}:${RDS_PORT}/${MAIN_DB_NAME}?charset=utf8mb4"

REDIS_URL="redis://${REDIS_HOST}:${REDIS_PORT}/0"

echo "::add-mask::$DB_USER"
echo "::add-mask::$DB_PASSWORD"
echo "::add-mask::$MAIN_DATABASE_URL"
echo "::add-mask::$REDIS_URL"
echo "::add-mask::$JWT_SECRET_KEY"

kubectl create secret generic ai-service-secret \
--namespace "$NAMESPACE" \
--from-literal=OPENAI_API_KEY="$OPENAI_API_KEY" \
--from-literal=JWT_SECRET_KEY="$JWT_SECRET_KEY" \
--from-literal=MAIN_DATABASE_URL="$MAIN_DATABASE_URL" \
--from-literal=DB_USER="$DB_USER" \
--from-literal=DB_PASSWORD="$DB_PASSWORD" \
--from-literal=DB_HOST="$RDS_HOST" \
--from-literal=DB_PORT="$RDS_PORT" \
--from-literal=MAIN_DB_NAME="$MAIN_DB_NAME" \
--from-literal=SAMPLE_DB_NAME="$SAMPLE_DB_NAME" \
--from-literal=REDIS_URL="$REDIS_URL" \
--dry-run=client \
-o yaml |
kubectl apply -f -

- name: Update AI service image tag in GitOps repository
env:
IMAGE_URI: ${{ steps.build-image.outputs.image_uri }}
shell: bash
run: |
set -euo pipefail

MANIFEST="infra/${INFRA_MANIFEST_PATH}"

if [ ! -f "$MANIFEST" ]; then
echo "Manifest not found: $MANIFEST"
exit 1
fi

IMAGE_TAG="${IMAGE_URI##*:}"

sed -i -E \
"s|^([[:space:]]*)newTag:.*$|\1newTag: ${IMAGE_TAG}|" \
"$MANIFEST"

echo "Updated AI service image tag:"
grep -n "newTag:" "$MANIFEST"

cd infra

git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

git add "$INFRA_MANIFEST_PATH"

if git diff --cached --quiet; then
echo "Image tag is already up to date"
exit 0
fi

git diff --cached

git commit \
-m "chore(ai-service): deploy ${GITHUB_REF_NAME}-${GITHUB_SHA::12}"

for ATTEMPT in 1 2 3; do
echo "GitOps push attempt: $ATTEMPT"

git pull --rebase origin "$INFRA_BRANCH"

if git push origin "HEAD:$INFRA_BRANCH"; then
echo "GitOps image update pushed successfully"
exit 0
fi

sleep $((ATTEMPT * 5))
done

echo "Failed to push AI service image update"
exit 1
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,9 @@ htmlcov/
.DS_Store
Thumbs.db

# DataSet
datasets/

# Docs
app/docs/PRD_*.md
app/docs/*.md
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.11.13
Loading
Loading