Skip to content

roh200413/ProjectNote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

360 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjectNote Backend (Django)

연구노트 통합 플랫폼을 위한 Django 기반 백엔드/프론트 프로토타입입니다. 모든 화면은 client/base.html 디자인 시스템(공통 네비게이션/토큰/컴포넌트)을 기반으로 동작합니다.

실행

python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
touch .env
python manage.py migrate
python manage.py runserver 0.0.0.0:8000

기본 점검

개발 서버 실행 전에 아래 명령으로 프로젝트 상태를 빠르게 점검할 수 있습니다.

python manage.py check
pytest -q

DB 적용 및 직접 확인

1) DB 파일 위치

이 프로젝트는 Django + SQLite를 사용하며 DB 파일은 아래 경로입니다.

  • /workspace/ProjectNote/server/projectnote.db

server/config/settings.pyDATABASES 설정에서 확인할 수 있습니다.

2) 테이블 생성(마이그레이션)

python manage.py migrate

3) 데모 데이터 생성(옵션)

python manage.py shell -c "from server.application.mock_data import seed_demo_data; print(seed_demo_data(reset=True))"
python manage.py shell -c "from server.application.sqlalchemy_session import sqlalchemy_table_names; print(sqlalchemy_table_names())"

4) SQLite CLI로 직접 확인

sqlite3 server/projectnote.db ".tables"
sqlite3 server/projectnote.db "SELECT id, name, status FROM workflow_app_project;"
sqlite3 server/projectnote.db "SELECT id, email, organization FROM workflow_app_researcher;"

5) JetBrains DB Navigator / Database Tool 설정

  • Database Type: SQLite
  • Config Type: File
  • Database file: /workspace/ProjectNote/server/projectnote.db
  • Schema: main
  • SSH Tunnel: 사용 안 함

server 정리 구조

  • server/config/: 실행/설정 진입점(settings.py, urls.py, asgi.py, wsgi.py, apps.py)
  • server/application/: 애플리케이션 파사드/조합 계층(api.py, models.py, services.py, schemas.py, repositories.py, web_support.py)
  • server/domains/: DDD 도메인별 비즈니스 모듈
  • server/application/sqlalchemy_session.py: DB 점검용 SQLAlchemy 유틸

아키텍처(DDD + ORM)

  • application 역할: 도메인 객체를 HTTP/검증/응답에 맞게 조합하는 유스케이스 계층(도메인 규칙 자체는 domains에 유지)
  • server/domains/*/api.py: 도메인별 API/페이지 엔드포인트
  • server/domains/projects: 프로젝트 생성/조회 도메인
  • server/domains/researchers: 연구자 도메인
  • server/domains/research_notes: 연구노트 도메인
  • server/domains/data_updates: 데이터 업데이트 도메인
  • server/domains/signatures: 서명 도메인
  • server/application/services.py, server/application/schemas.py: 유스케이스/입력 스키마 파사드
  • SQLAlchemy 유틸은 server/application/sqlalchemy_session.py로 통합

현재 런타임은 Django로 통일되어 있으며, 기존 FastAPI 실험 코드(app/)는 제거했습니다. SQLAlchemy는 DB 직접 점검/외부 도구 연동 용도로 유지합니다.

관리자 초기 설정

python manage.py migrate
python manage.py shell -c "from server.application.mock_data import seed_demo_data; print(seed_demo_data(reset=True))"
  • /frontend/admin에서 팀 생성
  • 최초 관리자 계정 생성(1회 제한)
  • 테이블별 row 수 확인 및 데이터 비우기

주요 API

  • GET /api/v1/health
  • GET /api/v1/frontend/bootstrap
  • GET /api/v1/dashboard/summary
  • GET /api/v1/projects?org_id=<uuid>
  • GET/POST /api/v1/project-management
  • GET/POST /api/v1/researchers
  • GET/POST /api/v1/data-updates
  • GET /api/v1/final-download
  • GET/POST /api/v1/signatures
  • GET /api/v1/research-notes
  • GET /api/v1/research-notes/<id>

프론트엔드 페이지

  • GET/POST /login
  • GET/POST /admin/login
  • GET /logout
  • GET /frontend/workflows
  • GET /frontend/admin (대시보드로 리다이렉트)
  • GET /frontend/admin/dashboard
  • GET /frontend/admin/teams
  • GET /frontend/admin/users
  • GET /frontend/admin/tables
  • GET /frontend/projects
  • GET /frontend/projects/create
  • GET /frontend/projects/<id>
  • GET /frontend/researchers (연구자 전용 정보 관리)
  • GET /frontend/my-page
  • POST /frontend/my-page/signature (data URL 이미지 업로드)
  • GET /frontend/data-updates
  • GET /frontend/final-download
  • GET /frontend/signatures
  • GET /frontend/research-notes
  • GET /frontend/research-notes/<id>

테스트

pytest -q
python manage.py check

환경 변수

프로젝트 루트의 .env 파일에서 환경 변수를 직접 관리하세요.

touch .env
  • RESEARCH_NOTES_STORAGE_USE_EXTERNAL: true 또는 false (기본값: false)
    • false: 내부 고정 경로 ProjectNote/storage/research_notes 사용
    • true: .envRESEARCH_NOTES_STORAGE_ROOT 경로 사용
  • RESEARCH_NOTES_STORAGE_ROOT: RESEARCH_NOTES_STORAGE_USE_EXTERNAL=true일 때 사용할 연구노트 파일 저장 경로

슈퍼 어드민 계정 관리(JSON)

  • 기본 슈퍼 어드민 로그인 계정은 프로젝트 루트의 server/super_admin_accounts.json에서 관리합니다.
  • 앱 실행 시 JSON 계정은 SuperAdminAccount 테이블로 동기화되며, 관리자 콘솔(/frontend/admin/*) 진입은 admin/login에서 슈퍼 어드민 계정만 허용됩니다.
  • 슈퍼 어드민 권한 범위는 DB 데이터 테이블 관리(조회/비우기) 전용이며, 팀 관리/가입자 관리/일반 워크플로우 페이지 접근은 제한됩니다.
  • 일반 관리자/일반 사용자 계정은 로그인 시 팀 미할당 상태라면 홈으로 이동하지 않고 관리자 팀 할당 및 승인이 되지 않았습니다. 메시지가 표시됩니다.
  • 형식 예시:
{
  "users": {
    "admin": {
      "password": "admin1234",
      "name": "노승희",
      "role": "관리자",
      "email": "paul@deep-ai.kr",
      "organization": "(주)딥아이",
      "major": "R&D"
    }
  }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors