Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

[*.py]
indent_size = 4

[Makefile]
indent_style = tab
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/architecture-decision.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Architecture decision
description: 패키지·Framework·DB·보안·Agent 구조 결정을 제안합니다.
title: "[Architecture] "
labels: ["area:platform", "type:feature"]
body:
- type: textarea
id: context
attributes:
label: 해결할 문제와 제약조건
validations:
required: true
- type: textarea
id: proposal
attributes:
label: 제안하는 결정
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: 검토한 대안과 제외 이유
validations:
required: true
- type: textarea
id: consequences
attributes:
label: 예상되는 장점과 비용
validations:
required: true
- type: checkboxes
id: adr
attributes:
label: 완료 기준
options:
- label: 결정 확정 시 `docs/adr`에 ADR을 추가합니다.
required: true
31 changes: 31 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Bug report
description: Knowledge 검증·CLI·Agent 연동 오류를 신고합니다.
title: "[Bug] "
labels: ["bug"]
body:
- type: textarea
id: problem
attributes:
label: 문제
description: 실제 결과와 기대 결과를 함께 적습니다.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: 재현 절차
placeholder: 명령어, 입력 파일, Workflow ID
validations:
required: true
- type: input
id: version
attributes:
label: Context Pack 버전
placeholder: 0.1.0
validations:
required: true
- type: textarea
id: logs
attributes:
label: 오류 로그
render: shell
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: EPS 공식 안내
url: https://www.eps.go.kr
about: E-9 고용허가제의 최신 공식 절차를 확인합니다.
- name: 하이코리아
url: https://www.hikorea.go.kr
about: 체류 관련 최신 공식 안내를 확인합니다.
63 changes: 63 additions & 0 deletions .github/ISSUE_TEMPLATE/knowledge-change.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Knowledge 변경
description: 공식자료·Workflow·체크리스트·Context Pack 변경을 제안합니다.
title: "[Knowledge] "
labels: ["documentation"]
body:
- type: dropdown
id: change_type
attributes:
label: 변경 유형
options:
- 공식 출처 추가·갱신
- Workflow 추가·수정
- 필수 Slot·체크리스트 변경
- 모호표현·Guardrail 변경
- 다국어·쉬운 한국어 규칙 변경
validations:
required: true
- type: input
id: affected
attributes:
label: 영향받는 ID
description: 예) WF-STY-001, DOCUMENT_REQUEST
validations:
required: true
- type: input
id: source
attributes:
label: 공식 출처 URL
description: 출처가 없는 팀 정책이면 그 사실을 명시합니다.
validations:
required: true
- type: input
id: effective_date
attributes:
label: 시행일 또는 확인일
placeholder: YYYY-MM-DD
validations:
required: true
- type: textarea
id: proposal
attributes:
label: 변경 내용과 근거
validations:
required: true
- type: dropdown
id: expert_review
attributes:
label: 전문가 검수 수준
options:
- 고위험·공식절차 직접 검수 필요
- low·medium 층화표본 검수 필요
- 기술·문서 변경으로 전문가 검수 불필요
validations:
required: true
- type: checkboxes
id: safety
attributes:
label: 확인
options:
- label: 개인정보 또는 원본 신분서류를 포함하지 않았습니다.
required: true
- label: 기관 제출을 자동화하거나 법적 결론을 생성하지 않습니다.
required: true
42 changes: 42 additions & 0 deletions .github/ISSUE_TEMPLATE/model-experiment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Model 실험
description: Intent·Slot·응답 분류 모델의 비교 실험을 제안합니다.
title: "[Experiment] "
labels: ["enhancement"]
body:
- type: input
id: objective
attributes:
label: 실험 목표
placeholder: 예) Intent Macro-F1 baseline 비교
validations:
required: true
- type: textarea
id: dataset
attributes:
label: 데이터와 분할 방식
description: 출처, 건수, 라벨 분포, train/validation/test 분리 기준을 적습니다.
validations:
required: true
- type: textarea
id: baselines
attributes:
label: 비교 모델
placeholder: TF-IDF + Linear SVM / KoELECTRA / LLM zero-shot
validations:
required: true
- type: textarea
id: metrics
attributes:
label: 평가 지표와 합격 기준
placeholder: Macro-F1, 클래스별 Recall, 복합요청 Exact Match
validations:
required: true
- type: checkboxes
id: leakage
attributes:
label: 데이터 안전성
options:
- label: 평가 데이터를 프롬프트 예시나 학습 데이터로 사용하지 않습니다.
required: true
- label: 개인정보와 기업 식별정보가 제거되었습니다.
required: true
37 changes: 37 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
## 연결 Issue

Closes #

## 변경 내용

-

## 변경 이유

-

## 검증

- [ ] PR 제목이 `<type>(<scope>): <한국어 요약>` 형식입니다.
- [ ] `make validate`
- [ ] `make lint`
- [ ] `make test`
- [ ] 공식 출처와 확인일 검토
- [ ] 개인정보·민감정보 미포함 확인

## 데이터 변경

| 항목 | 내용 |
| --- | --- |
| 추가/수정/삭제 건수 | 해당 없음 |
| 영향받는 Intent/Workflow | 해당 없음 |
| 출처 | 해당 없음 |
| 교차 검수자 | 해당 없음 |

## 영향 및 제한사항

-

## 리뷰 포인트

-
33 changes: 33 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
version: 2
updates:
- package-ecosystem: pip
directory: /fowoco-knowledge
schedule:
interval: weekly
day: monday
time: "09:00"
timezone: Asia/Seoul
open-pull-requests-limit: 5
labels:
- area:knowledge
- type:chore
- priority:P2
commit-message:
prefix: chore
include: scope

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
day: monday
time: "09:00"
timezone: Asia/Seoul
open-pull-requests-limit: 3
labels:
- area:platform
- type:chore
- priority:P2
commit-message:
prefix: chore
include: scope
39 changes: 39 additions & 0 deletions .github/workflows/knowledge-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Knowledge CI

on:
pull_request:
paths:
- "fowoco-knowledge/**"
- ".github/workflows/knowledge-ci.yml"
- "pyproject.toml"
push:
branches: [main]
paths:
- "fowoco-knowledge/**"
- ".github/workflows/knowledge-ci.yml"
- "pyproject.toml"

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
cache-dependency-path: fowoco-knowledge/pyproject.toml
- name: Install package
run: python -m pip install -e "./fowoco-knowledge[dev]"
- name: Lint and format check
run: |
python -m ruff format --check fowoco-knowledge/src fowoco-knowledge/tests
python -m ruff check fowoco-knowledge/src fowoco-knowledge/tests
- name: Validate context pack
run: python -m fowoco_knowledge validate
- name: Run tests
run: python -m pytest fowoco-knowledge/tests --cov=fowoco_knowledge --cov-report=term
33 changes: 33 additions & 0 deletions .github/workflows/pr-conventions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: PR Conventions

on:
pull_request:
types: [opened, edited, synchronize, reopened, ready_for_review]

permissions:
contents: read

jobs:
title:
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- name: Validate PR title
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
python - <<'PY'
import os
import re
import sys

title = os.environ["PR_TITLE"]
pattern = r"^(feat|fix|data|docs|test|refactor|chore|experiment|ci|perf|revert)(\([a-z0-9-]+\))?: .+"

if not re.fullmatch(pattern, title):
print("PR 제목은 <type>(<scope>): <한국어 요약> 형식이어야 합니다.")
sys.exit(1)
if not re.search(r"[가-힣]", title):
print("콜론 뒤 요약에 한국어를 포함해야 합니다.")
sys.exit(1)
PY
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.DS_Store
.idea/
.vscode/
.venv/
__pycache__/
*.py[cod]
.pytest_cache/
.coverage
htmlcov/
dist/
build/
*.egg-info/
.env
.env.*
!.env.example
local-data/
*.pem
*.key
Loading
Loading