연구노트 통합 플랫폼을 위한 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이 프로젝트는 Django + SQLite를 사용하며 DB 파일은 아래 경로입니다.
/workspace/ProjectNote/server/projectnote.db
server/config/settings.py의 DATABASES 설정에서 확인할 수 있습니다.
python manage.py migratepython 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())"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;"- Database Type:
SQLite - Config Type:
File - Database file:
/workspace/ProjectNote/server/projectnote.db - Schema:
main - SSH Tunnel: 사용 안 함
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 유틸
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 수 확인 및 데이터 비우기
GET /api/v1/healthGET /api/v1/frontend/bootstrapGET /api/v1/dashboard/summaryGET /api/v1/projects?org_id=<uuid>GET/POST /api/v1/project-managementGET/POST /api/v1/researchersGET/POST /api/v1/data-updatesGET /api/v1/final-downloadGET/POST /api/v1/signaturesGET /api/v1/research-notesGET /api/v1/research-notes/<id>
GET/POST /loginGET/POST /admin/loginGET /logoutGET /frontend/workflowsGET /frontend/admin(대시보드로 리다이렉트)GET /frontend/admin/dashboardGET /frontend/admin/teamsGET /frontend/admin/usersGET /frontend/admin/tablesGET /frontend/projectsGET /frontend/projects/createGET /frontend/projects/<id>GET /frontend/researchers(연구자 전용 정보 관리)GET /frontend/my-pagePOST /frontend/my-page/signature(data URL 이미지 업로드)GET /frontend/data-updatesGET /frontend/final-downloadGET /frontend/signaturesGET /frontend/research-notesGET /frontend/research-notes/<id>
pytest -q
python manage.py check프로젝트 루트의 .env 파일에서 환경 변수를 직접 관리하세요.
touch .envRESEARCH_NOTES_STORAGE_USE_EXTERNAL:true또는false(기본값:false)false: 내부 고정 경로ProjectNote/storage/research_notes사용true:.env의RESEARCH_NOTES_STORAGE_ROOT경로 사용
RESEARCH_NOTES_STORAGE_ROOT:RESEARCH_NOTES_STORAGE_USE_EXTERNAL=true일 때 사용할 연구노트 파일 저장 경로
- 기본 슈퍼 어드민 로그인 계정은 프로젝트 루트의
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"
}
}
}