스위스 캔톤을위한 전자 건축 허가 신청.
이 저장소에는 Berne, Grisons, Schwyz, Solothurn 및 URI의 스위스 캔톤에서 전자 건물 허가 및 비슷한 프로세스를 처리하는 데 사용되는 웹 응용 프로그램의 소스 코드가 포함되어 있습니다.
다음 이미지는 아키텍처에 대한 높은 수준의 개요를 보여줍니다.
ember-ebau-core
통해 코드를 공유 할 수 있습니다. ├── compose # docker-compose files
├── db # database Dockerfile and utils
├── django # backend code, containing both API and Caluma
├── document-merge-service # document generation templates and config
├── ember-caluma-portal # Caluma-based portal
├── ember-camac-ng # Ember.js app optimized for embedding in other applications
├── ember-ebau # Ember.js based application for internal area
├── ember-ebau-core # Ember.js addon for code sharing between multiple Ember.js apps
├── keycloak # Keycloak configuration for local development
├── proxy # Nginx configuration for local development
└── tools # miscellaneous utilities
지속적인 현대화 작업으로 인해 일부 프론트 엔드 모듈은 아직 ember-ebau
에 통합되어 있지 않지만 여전히 ember-camac-ng
의 일부입니다. 이 저장소의 일부는 아직 없다. 다음 표는 응용 프로그램의 "내부"부분과 해당 완전성 / 통합 상태 ( demo
구성)에서 가장 중요한 모듈을 나열합니다.
기준 치수 | 설명 | 백엔드 | 프론트 엔드 | Ember-Ebau의 일부 |
---|---|---|---|---|
메인 NAV (자원) | ||||
서류 목록 | 서류 목록을 보여주십시오 | ✔️ | ✔️ | ✔️ |
작업 목록 | 작업 목록을 표시하십시오 | ✔️ | ✔️ | ✔️ |
템플릿 | 문서 템플릿 관리 (DOCX) | ✔️ | ✔️ | ✔️ |
조직 / 권한 | 자체 조직 및 권한을 관리합니다 | ✔️ | ✔️ | ✔️ |
정적 컨텐츠 | 정적 컨텐츠, Markdown 편집기 | ✔️ | ✔️ | ✔️ |
텍스트 구성 요소 | 텍스트 필드에서 사용을 위해 스 니펫을 관리하십시오 | ✔️ | ⏳ | ⏳ |
subnav (인스턴스 리소스) | ||||
작업 | 작업을보고 관리합니다 | ✔️ | ✔️ | ✔️ |
형태 | 기본 양식을보고 편집합니다 | ✔️ | ✔️ | ✔️ |
분포 | 다른 조직으로부터 피드백을 받으십시오 | ✔️ | ✔️ | ✔️ |
알렉산드리아 | 문서 관리 | ✔️ | ✔️ | ✔️ |
주형 | 템플릿에서 문서를 생성합니다 | ✔️ | ✔️ | ✔️ |
신문 | 공동 노트북 | ✔️ | ✔️ | ✔️ |
역사 | 이정표와 역사적 데이터를 보여줍니다 | ✔️ | ✔️ | ✔️ |
출판 | 신문에서 출판을 관리합니다 | ✔️ | ✔️ | ✔️ |
이의 제기 | 이의 제기를 관리합니다 | ✔️ | ✔️ | ✔️ |
책임이 있는 | 책임있는 사용자를 할당합니다 | ✔️ | ✔️ | ✔️ |
주장 | 추가 정보는 신청자에게 문의하십시오 | ✔️ | ✔️ | ✔️ |
배제 | 인스턴스를 거부하십시오 | ✔️ | ✔️ | ✔️ |
청구 | 청구 항목을 관리합니다 | ✔️ | ✔️ | ✔️ |
심사 | 구조화 된 감사를 수행하십시오 | ✔️ | ✔️ | ⏳ |
감사 로그 | 형태 변경을 보여줍니다 | ✔️ | ⏳ | ⏳ |
선호되는 개발 환경은 Docker를 기반으로합니다.
지역 개발을 위해 :
파이썬 :
타다 남은 것:
Docker는 Ebau를 빠르게 시작하는 데 사용될 수 있습니다. 다음 스크립트는 설정 프로세스를 안내합니다. 다른 캔톤은 여전히이 저장소의 일부가 아닌 내부 영역의 레거시 구성 요소에 의존하기 때문에 현재 kt_gr
또는 kt_so
구성을 사용하는 것이 좋습니다.
make start-dev-env
다음 도메인을 수동으로 수정하려면 127.0.0.1 (LocalHost)을 가리켜야합니다.
ebau-portal.local ebau.local ebau-keycloak.local ember-ebau.local ebau-rest-portal.local
커밋 (서식, Linting) 중 자동 점검의 경우 다음 명령으로 GIT 후크를 설정할 수 있습니다.
pip install pre-commit
pre-commit install
후에는 다음 서비스에 사용할 수 있어야합니다.
다음 관리자 계정은 각각 KeyCloak 또는 DB에 있습니다.
애플리케이션 | 역할 | 사용자 이름 | 비밀번호 | 메모 |
---|---|---|---|---|
데모 | 관리자 | 사용자 | 사용자 | |
KT_SCHWYZ | 관리자 | 관리자 | 관리자 | |
출판 | adsy | adsy | ||
KT_URI | 관리자 | 관리자 | 관리자 | |
포털 | 문 | 문 | ||
KT_BERN | 관리자 | 사용자 | 사용자 | |
KT_GR | 관리자 | 관리자 | 관리자 | |
응모자 | 편집자 | 편집자 | 신청자 편집자 역할 | |
응모자 | 준비 적 | 준비 적 | 신청자가 준비된 역할 | |
KT_SO | 관리자 | 관리자 | 관리자 | |
응모자 | 편집자 | 편집자 | 신청자 편집자 역할 | |
응모자 | 준비 적 | 준비 적 | 신청자가 준비된 역할 |
make debug-django
Docker Compose를 사용하면 러닝 컨테이너 (기본적으로 -d
플래그없이 docker compose up
와 동일)에 부착하고 Stdin을 통해 상호 작용할 수 있습니다.
docker compose attach django
이것은 당신이 허용 할 것입니다
에이. 컨테이너에 신호를 보냅니다
비. 애플리케이션이 breakpoint
으로 들어가면 PDB 쉘에 떨어 뜨립니다.
DEV 구성은 파일 변경에 다시로드되는 Django Development-Server를 실행하므로 파일을 저장 한 직후 해당 중단 점을 삽입하는 것이 효과적입니다.
CTRL-p + CTRL-q
누릅니다
참고 : 기본적으로 attach
프로세스는 신호를 컨테이너로 전달하기 때문에 상기 시퀀스를 누르면 눌러야합니다 ( --detach-keys
의 기본 설정이며 재정의 할 수 있음). 그러나 CTRL-c
누르면 TTY를 죽일뿐만 아니라 Sigint를 컨테이너로 보내어 멈출 수 있습니다.
문서 : https://docs.docker.com/reference/cli/docker/container/attach/
docker-compose up -d --build db django
cd {ember | ember-camac-ng | ember-caluma-portal | ember-ebau} # Enter ember from the top level of the repo
pnpm install # Install dependencies
pnpm test # Run tests
pnpm start-proxy # Run dev server with proxy to django api
이것은 많은 파일이있는 큰 프로젝트이므로 EMBER의 기본 설정은 모든 파일을 볼 수 없으므로 제대로 재건되지 않을 수 있습니다.
이를 고치려면 파일 감시자로 파수꾼을 설치하고 inotify
설정을 조정하십시오.
echo fs.inotify.max_user_watches=1000000 | sudo tee -a /etc/sysctl.conf # adjust settings
sudo sysctl -p # re-read config
후자의 명령이 하나의 값 만 반환하는지 확인하십시오. 그렇지 않으면 설정이 복제되어 정리해야합니다.
그러나 ember-caluma-portal
, ember-camac-ng
, ember-ebau
및 Addon ember-ebau-core
앱은 PNPM 작업 공간을 통해 동일한 노드 모듈 트리를 공유합니다.
일반적인 PNPM 작업 공간을 사용하면 NPM에 대한 일반적인 게시 릴리스 접근 방식을 따르지 않고이 리포지토리의 일부인 앱간에 코드 (예 : Addons)를 공유 할 수 있습니다. 이것은 또한 그것을 의미합니다
node_modules
디렉토리의 중복이 피하기 때문에 디스크 공간을 절약합니다.ember-caluma-portal
ember-camac-ng
프로파일 링을 위해 django-silk
활성화하려면 DJANGO_ENABLE_SILK=True
django/.env
파일에 true를 추가하십시오. 그런 다음 django 컨테이너를 다시 시작하고 http : //ebau.local/api/silk/로 찾아보십시오.
demo
구성에서 kt_bern
으로 전환하려면 프론트 엔드 앱이 올바른 환경 변수를 차지해야합니다.
pnpm start-proxy
로 시작된 프론트 엔드 서버를 중지하십시오make kt_bern
실행하십시오docker-compose up -d && make loadconfig
실행하십시오docker-compose down
실행하십시오make kt_bern
실행하십시오docker-compose build
실행하십시오docker-compose up -d
실행하십시오VS 코드의 원격 디버거 설정은 저장소에 전념됩니다.
.vscode/launch.json
에 있습니다. Django 컨테이너에서 디버깅을 활성화하려면 PTVSD 서버를 시작해야합니다. 이 디버그 서버는 다른 설정 (pycharm, pydev)과 충돌하기 때문에 ENV var var ENABLE_PTVSD_DEBUGGER
django/.env
에서 True
로 설정된 경우에만 시작됩니다.
인증을 통해 /graphql
엔드 포인트와 대화하려면 Postman과 마찬가지로 GraphQL 도구를 설치할 수 있습니다. 여기에서 고려할 수있는 도구 :
GWR 모듈은 두 개의 개별 리포지토리로 개발되었습니다.
GWR 모듈을 사용하는 경우 GWR Backend의 문서에 따라 Fernet 키를 생성해야합니다.
ENV 파일의 각 환경/서버 에서이 키를 설정해야합니다. GWR 사용자 비밀번호를 저장 / 읽는 데 사용되므로 각 환경에 대해 별도의 키를 생성하십시오.
API는 모든 EBAU 프로젝트에서 사용할 수있는 방식으로 설계되어야합니다. 필요한 사용자 정의의 경우 다음 규칙이 적용됩니다.
다른 기능 플래그 및 권한은 Settings.py의 APPLICATIONS
참조하십시오.
개발 모드에서 응용 프로그램은 모든 이메일을 메일 피트 인스턴스로 보내도록 구성되므로 다른 것을 지정하지 않으면 개발 환경에서 전자 메일이 전송되지 않습니다.
http : //ebau.local/mailpit/을 통해 MailPit에 액세스 할 수 있습니다. 전송 된 모든 이메일은 즉시 그곳에서 볼 수 있습니다.
모듈 및 캔톤에 대한 정보를 수집하는 섹션. 이 섹션은 노하우 이체, 휴가 핸드 오버 및 디버깅 지원 사례를 용이하게하기위한 것입니다.
KT에 사용되는 모듈. SZ와 KT. 결정 후 건설 과정에 수반되는 Ur (곧). 지방 자치 단체 (현재까지는 선도 기관이 지방 자치 단체 인 경우에만 적용됩니다) 신청자는 문서와 일련의 작업 항목을 통해 상호 작용합니다.
동적으로 선택 가능한 시공 단계로 구성된 건설 단계 ( "Bauetappen")가 있습니다. 시공 단계는 일련의 작업 항목으로, 일반적으로 신청자에게 해결 된 작업 항목으로 시작하는 패턴을 따르고 시정촌에 대한 하나 이상의 작업 항목이 이어집니다. 신청자는 정의 된 규정을 준수했음을 확인하고 Muncipality는이를 확인합니다. 최종 작업 항목을 통해 Muncipality는 프로세스를 계속할 것인지 또는 시공 단계의 시작 부분으로 다시 강요할지 결정할 수 있습니다.
모듈은 구성된 워크 플로에 의해 크게 정의됩니다. 동적 작업을 통해 어떤 구성 단계와 수행되는 작업 항목이 처리됩니다. 시공 단계 구성 (예 : 시공 단계에 속하는 작업 메타에서 구성되는 작업 단계에 속하는 작업 등). 시공 단계는 본질적으로 작업의 그룹화이며이를 나타내는 모델이 없습니다.
건설 단계는 어린이가있는 여러 인스턴스 작업 항목입니다. 어린이 사례에는 시공 단계 작업 항목이 포함되어 있습니다. 첫 번째 시공 단계는 건설 모니터링 프로세스를 초기화 할 때 생성됩니다. 그 후, 기존 작업 항목에 대한 작업 항목 돌연변이를 만들어 새로운 시공 단계를 초기화 할 수 있습니다 (준비된 상태). 조심하십시오 : 건설 모니터링 프로세스가 완료되지 않는 한 새로운 시공 단계가 항상 만들어 질 수 있도록 건설 단계 작업 품목은 준비 상태를 유지하고 건설 단계 아동 케이스는 이미 완료되었습니다.
핵심 논리는 주로 건설 모니터링 워크 플로우 및 캔톤의 구성, 구성 모니터링을위한 Caluma 이벤트, 모듈 설정, 일부 사용자 정의 가시성 및 권한 논리에 포함됩니다.
Solothurn의 캔톤에서 우리는 Ebau 포털에 맞춤 승인 메커니즘을 사용합니다. EBAU 포털은 EGOV 포털 소프트웨어 인 My.so.ch의 로그인과 함께 사용할 수 있습니다. 그들은 OIDC 승인을 제공하지 않기 때문에 KeyCloak의 토큰 교환 및 직접 알몸 가장자리 기능을 사용하여 사용자 정의 솔루션을 구현해야했습니다.
승인은 암호화되고 서명 된 JWT 토큰을 리르레트하기 위해 설계된 다음 KeyCloak에 의해 일반 OIDC JWT 토큰으로 변환됩니다.
시퀀스 인디 아그램
Autonumber
Ebau 포털로 참가자 f
참가자 M은 EGOV 포털입니다
EBAU API로 참가자 B
참가자 K는 KeyCloak입니다
f->>+m : 프리 테이션으로 리디렉션
M의 오른쪽 참고 : 사용자 데이터와 함께 암호화 및 서명 JWT 토큰
M->>-F : EGOV 토큰으로 로그인하도록 리디렉션
f->>+b : 토큰 보내기 (/api/v1/auth/token-exchange에 게시)
b- >> b : egov 토큰을 해독하고 확인하고, 토큰에서 사용자 데이터를 추출하십시오.
b- >>+k : 사용자 생성 또는 업데이트
K- >> B : 반환 사용자
B- >> k : 직접 알몸 사망자와의 토큰 교환
K- >>-B : 사용자를 위해 토큰을 반환하십시오
B- >>-F : 토큰을 반환하십시오
기능을 활성화하려면 다음 구성을 수행해야합니다.
기본적으로 KeyCloak은 이미이 승인 메커니즘을 지원하도록 적절하게 구성되어 있습니다. 다른 환경을 구성하려면 문서를 참조하십시오.
# .env
ENABLE_TOKEN_EXCHANGE =true
이를 통해 NGINX 프록시에서 호스팅 된 더미 EGOV 포털로 기능이 가능합니다. EGOV 포털 테스트 환경으로 테스트하려면 더 많은 환경 변수를 설정해야합니다 (검열 값은 금고에서 찾을 수 있음).
# .env
EGOV_PORTAL_URL =****
EGOV_PRESTATION_PATH =****
# django/.env
TOKEN_EXCHANGE_JWT_ISSUER =****
TOKEN_EXCHANGE_JWT_SECRET =****
TOKEN_EXCHANGE_JWE_SECRET =****
이 프로젝트는 EUPL-1.2 또는 Later에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스를 참조하십시오.