이 문서는 FlowNote 연구개발 결과를 외부에 공개할 때 포함할 자료와 제외할 정보를 구분한다. 운영 배포를 실제로 수행하거나 승인받는 일은 연구개발 완료 조건이 아니다. 저장소에는 재현 가능한 소스·설계·시험과 배포 방법을 남기고, 현장별 운영값과 증거는 공개 범위에서 제외한다.
- FastAPI, Windows WPF와 Android 소스 코드
- 데이터 모델, API 계약, 설계 결정과 연구 결과 문서
- 합성 데이터와 격리된 누적 회귀 테스트
- 값이 비어 있거나 예약 예시값만 사용하는 설정 예제
- 개발 빌드, 시험, 패키징, 백업·복구 방법
- 실제 화면을 기준으로 작성한 역할별 사용 매뉴얼
예제 호스트에는 .example, 의도적으로 연결되지 않는 주소에는 .invalid 예약 도메인을 사용한다. https://flownote.example은 공개 문서와 코드의 예시일 뿐 실제 서버가 아니다.
- 비밀번호, 토큰, API key, 인증서, 개인키, Android 서명키
- 실제 서버 주소, SSH 대상, 방화벽·DNS 내부 정보와 운영 환경 파일
- 실제 고객명, 사용자 정보, 고객 문서, 사진과 현장 원문 데이터
- 운영 SQLite, WPF 로컬 SQLite, Android outbox와 서버
storage/ - 로그, 테스트 결과 원본, APK·AAB·MSI와 기타 빌드 산출물
- 개인 로컬 경로, 장비 식별자, MDM tenant와 비공개 승인 기록
- 외부 AI provider 계약, 자격 증명, 실제 전송 데이터와 고객별 정책값
이 자료는 필요한 경우에도 저장소 밖의 접근 통제된 위치에서 관리한다.
2026-08-15 기준으로 다음을 확인했다.
- 특정 운영 서버 기본값을 제거하고 예약 예시 도메인으로 교체했다.
- 공개 서버의 고정 초기 관리자 비밀번호와 WPF 로그인 화면의 비밀번호 사전 입력을 제거했다.
- 빈 서버 DB는
FLOWNOTE_INITIAL_ADMIN_PASSWORD가 있어야 첫admin을 만들고, 생성 뒤 초기 설정값을 제거하도록 했다. - 새 로컬·운영 DB의 첫
admin은 임시 비밀번호를 바꾸기 전까지 변경 API 이외의 보호 API를 사용할 수 없다. local,test가 아닌 환경은 공개 예시 access token secret과 32자 미만 값을 거부한다.- Git 추적 파일에는 SQLite, 일반 DB, 키·인증서, APK·AAB·MSI와 로그가 없다.
services/api/.env.example은 값이 없는 설정 예제이며 실제.env는 Git에서 제외한다.scripts/bootstrap_local_evaluation.py는 Git 제외.env에 무작위 초기 관리자 비밀번호와 token secret을 만들고 기존 파일은 덮어쓰지 않는다.- 로컬 평가 API의 최초 DB 생성, health, DB health와 OpenAPI 응답을 격리된 임시 경로에서 확인했다.
- GitHub Actions가 공개 파일·문서, FastAPI, Windows WPF와 Android 검증을 각각 실행한다.
- 맞춤 Android Gradle 실행기는 9.5.1 배포 ZIP을 공식 SHA-256과 대조한 뒤 압축을 푼다.
- Issue 양식은 실제 고객·운영·비밀정보를 제외하도록 안내하고, Dependabot은 네 의존성 생태계를 매월 점검한다.
- 서버·클라이언트 데이터, 시험 산출물, 개인 설정과 고객 파일은
.gitignore에서 제외한다. scripts/reset_local_test_data.py는 삭제 대상을 먼저 보여 주고--apply일 때만 로컬 DB·storage·스모크 증거·빌드 결과를 초기화한다.- 과거 일일 작업·테스트 일지, 내부 보고서와 현장 의견 원문은 현재 공개 tree에서 제외한다.
- 문서의 상대 링크와 변경 파일 공백 검사를 통과했다.
이 점검은 현재 작업 트리와 공개 브랜치 이력을 함께 대상으로 한다. 2026-08-15 공개 정리에서는 정상 개발 커밋의 날짜·순서·메시지를 유지하면서 테스트 문서·이미지·스프레드시트, 일일 작업 원문, 내부 보고 자료, 장비별 실행 설정과 개인 로컬 경로를 모든 main 이력에서 선별 제거했다. 이전 운영 도메인은 예약 예시 도메인으로 바꾸고 커밋 작성자·커미터의 비공개 이메일은 공개용 주소로 치환했다.
이력 재작성 전 복구본은 저장소 밖의 로컬 임시 위치에만 만들고 원격에는 올리지 않는다. 강제 갱신 뒤에는 별도 clone에서 공개 제외 경로와 문자열을 다시 검사한다. 정리되지 않은 clone이나 외부 fork에는 이전 객체가 남을 수 있으므로 해당 소유자가 별도로 동기화하거나 삭제해야 한다.
- 현재 작업 트리와 전체 Git 이력을 비밀정보 탐지 도구로 검사한다.
- 운영 도메인, 이메일, 개인 경로, 고객·장비 식별자를 다시 검색한다.
- 초기화 도구의 dry-run을 확인한 뒤
--apply하고, Git 추적 목록에 DB, 로그, 실제 문서와 빌드 산출물이 없는지 확인한다. .env.example과 문서 예제가 실제 자격 증명이나 내부 주소를 포함하지 않는지 확인한다.- 공개 후보 커밋에서 FastAPI·WPF Core·Android 검증과 문서 링크 검사를 다시 실행한다.
- GitHub Actions의 4개 job이 같은 커밋에서 통과했는지 확인한다.
- GitHub의 비공개 취약점 제보 기능과 저장소 공개 설정을 확인한다.
Git 이력에서 민감정보가 발견되면 단순히 최신 파일에서 지우는 것으로 충분하지 않다. 영향과 원격 복제본을 확인한 뒤 저장소 소유자의 명시적 승인 아래 이력 정리와 관련 자격 증명 폐기를 수행한다.
기존 비공개 개발 이력을 보존해야 한다면 공개용 새 저장소에 검증된 현재 스냅샷을 첫 커밋으로 올리는 방식을 우선한다. 기존 원격의 이력을 재작성하는 방식은 모든 clone과 열린 작업에 영향을 주므로 저장소 소유자와 협업자의 명시적 승인 없이 수행하지 않는다.
배포 기준, 서버 설치·운영 매뉴얼과 장애 대응 매뉴얼은 도입 방법을 설명한다. 다음 항목은 공개 연구 결과를 사용하려는 조직의 선택 검증이다.
- Windows x64 패키징과 설치 실기
- 조직 소유 인증서·서명키와 Android MDM
- 고객 유사망 HTTPS, DNS, 방화벽과 시간 동기화
- 별도 PC 백업·복구와 rollback
- 실제 역할 사용자의 UX 관찰과 승인
이 항목을 수행하지 않았다는 이유로 연구개발 소스와 문서 기준선을 미완료로 돌리지 않는다. 반대로 공개 소스의 시험 통과만으로 특정 현장의 운영 안전성이나 적합성을 보증하지 않는다.
현재 작업 트리는 기술 자료와 공개 제외 규칙을 갖춘 공개 후보 상태다. 라이선스와 권리 정책은 저장소 소유자가 별도로 결정하며 이 문서의 기술 공개 판정에 포함하지 않는다. 현재 공개 브랜치 이력과 의존성 보안 상태를 점검하고 공개 후보 커밋을 재검증한 뒤 기술 공개 준비 완료로 표시한다.