247 lines
10 KiB
Markdown
247 lines
10 KiB
Markdown
# 레퍼런스 — 프로세스·상태 전이
|
|
|
|
> 상위: [개발가이드.md](./개발가이드.md)
|
|
> SoT: `03.재원협의_실무협의_프로세스_통합_v완결.md` (v3.0, 2026-09-03)
|
|
|
|
---
|
|
|
|
## 1. 프로세스 개요
|
|
|
|
| 항목 | 내용 |
|
|
| --- | --- |
|
|
| Process No. | PR-AS-003 |
|
|
| 메뉴 | 행정지원 > 2.2.2 재원협의 > 2.2.2.1 재원협의 관리 |
|
|
| 목적 | 기초 → 광역(경유) → 환경청(승인) → 공단(기술검토/AI) 4자 협의로 사업규모·국비·분담금을 확정 |
|
|
|
|
2-Pass:
|
|
|
|
- **Pass 1** 기술 타당성: `SV→ST→LE→FV→ER→AC→TE→TP→RM→RB`
|
|
- **Pass 2** 조치결과·금액: `RB→RA→AV→EV→RK→RR→EP→TA`
|
|
|
|
자체종결(기술검토 생략): `LE→EP→TA`
|
|
|
|
---
|
|
|
|
## 2. 4-Lane 시퀀스
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
autonumber
|
|
actor 기초 as 기초 (ROLE_USER05)
|
|
actor 광역 as 광역 (ROLE_USER04)
|
|
actor 환경청 as 환경청 (ROLE_USER03)
|
|
actor 공단 as 공단 (ROLE_USER01)
|
|
actor AI as AI 엔진
|
|
|
|
rect rgb(240, 248, 255)
|
|
기초->>기초: [저장] SV
|
|
기초->>광역: [신청완료] ST
|
|
광역->>환경청: [환경청제출] LE
|
|
end
|
|
|
|
rect rgb(255, 250, 240)
|
|
alt 자체종결
|
|
환경청->>광역: [결과회신] LE → EP
|
|
광역->>기초: [결과회신] EP → TA
|
|
else 기술검토 의뢰
|
|
환경청->>AI: [기술검토 의뢰] LE → FV
|
|
end
|
|
end
|
|
|
|
rect rgb(245, 255, 245)
|
|
AI-->>공단: 파일검증 콜백 FV → ER
|
|
Note over 공단: 30분 미응답 시 ER + 수동 [파일검증]
|
|
alt 파일 미비
|
|
공단->>기초: [파일보완] ER → SL
|
|
기초->>공단: [파일보완완료] SL → ER
|
|
else 적격
|
|
공단->>AI: [검토자지정] ER → AC
|
|
end
|
|
end
|
|
|
|
rect rgb(255, 245, 245)
|
|
AI-->>공단: 초안 콜백 AC → TE
|
|
Note over 공단: 30분 미응답 시 TE + 수동 [실무협의서생성]
|
|
alt 설계 미비
|
|
공단->>기초: [보완요청] TE → SL
|
|
기초->>공단: [보완완료] SL → TE
|
|
else 검토 완료
|
|
공단->>공단: [검토완료] 상신, [결재(승인)] TE 유지
|
|
공단->>환경청: [결재(회신)] TE → TP
|
|
end
|
|
end
|
|
|
|
rect rgb(250, 240, 255)
|
|
환경청->>광역: [재원협의 결과 회신] TP → RM
|
|
광역->>기초: [지자체회신] RM → RB
|
|
기초->>환경청: [조치완료] RB → RA
|
|
end
|
|
|
|
rect rgb(240, 255, 255)
|
|
광역->>환경청: [조치결과서제출] RC → RA
|
|
환경청->>AI: [조치결과 검토의뢰] RA → AV
|
|
AI-->>공단: 금액검증 콜백 AV → EV
|
|
공단->>공단: [검토자지정] EV → RK
|
|
Note over 공단: EV에서 1차 결재선 시드로 2차 결재선 수동 배정
|
|
end
|
|
|
|
rect rgb(255, 255, 230)
|
|
alt 소명 미비
|
|
공단->>기초: [보완요청] RK → SL
|
|
기초->>공단: [보완완료] SL → RK
|
|
else 확정
|
|
공단->>환경청: [결재(회신)] RK → RR
|
|
end
|
|
end
|
|
|
|
rect rgb(255, 240, 240)
|
|
환경청->>광역: [결과회신] RR → EP
|
|
광역->>기초: [결과회신] EP → TA
|
|
end
|
|
```
|
|
|
|
거버넌스:
|
|
|
|
```
|
|
기초 (USER05) --ST--> 광역 (USER04) --LE--> 환경청 (USER03)
|
|
기초 <-----TA------ 광역 <-----EP/RM------ 환경청
|
|
환경청 --FV/ER--> 공단 (USER01) --TP/RR--> 환경청
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Activity 정의 (14)
|
|
|
|
| No. | Activity | 주체 | From → To | FE 포인트 |
|
|
| --- | --- | --- | --- | --- |
|
|
| 1 | 재원협의 조회 | 기초 | — | 기본계획·자가점검 대조 |
|
|
| 2 | 등록 및 제출 | 기초·광역 | `SV→ST`, 광역 `LE` | `save-apply`, `updatePrgrsStts` |
|
|
| 3 | 접수 및 의뢰 | 환경청 | `LE→FV` / `EP` | 의뢰 vs 자체종결 분기 |
|
|
| 4 | AI 파일검증 | 공단·AI | `FV→ER` / `SL` | 30분 Fallback, 파일보완 팝업 |
|
|
| 5 | 자체종결 회신 | 환경청·광역 | `LE→EP→TA` | 공단 레인 없음 |
|
|
| 6 | 검토자지정·초안 | 공단·AI | `ER→AC→TE` | `elapr-dmnd`, 초안 폴링 |
|
|
| 7 | 1차 기술검토 | 공단 결재선 | `TE` / `SL` | 웹기안기, HWP 파싱은 서버 |
|
|
| 8 | 기술검토 회신 | 공단 최종 | `TE→TP` | `process` 최종 |
|
|
| 9 | 검토결과 회신 | 환경청·광역 | `TP→RM→RB` | 1차 회신. `EP`와 혼동 금지 |
|
|
| 10 | 조치결과 작성 | 기초 | `RB→RA` | `submit-actn-result` `isSubmit:true` (조치완료) |
|
|
| 11 | 조치 의뢰 | 환경청 | `RA→AV` | `request-actn-review` |
|
|
| 12 | AI 금액검증 | AI·공단 | `AV→EV` | 콜백/Fallback 후 접수자 대기 |
|
|
| 12a | 2차 검토자지정 | 공단 접수 | `EV→RK` | `elapr-dmnd` cycl=2 |
|
|
| 13 | 2차 검토·결재 | 공단 | `RK→RR` / `SL` | 2차 결재선 |
|
|
| 14 | 최종 회신 | 환경청·광역·기초 | `RR→EP→TA` | 종결 |
|
|
|
|
---
|
|
|
|
## 4. `FNRSSTTS` 상세
|
|
|
|
관리: `tb_cs_lwpo_cd` / `tb_as_fnrs_cnsltn_mng.prgrs_stts_com_cd`
|
|
|
|
| 코드 | 국문 | 영문 | 화면 주체 | 전이 |
|
|
| --- | --- | --- | --- | --- |
|
|
| `SV` | 저장 | Save | 기초 작성 | 신규/`SV` → `SV` |
|
|
| `ST` | 신청완료 | Submit to Province | 기초→광역 | `SV→ST` |
|
|
| `LE` | 환경청 검토 | Local Environment Review | 광역→환경청 | `ST→LE` |
|
|
| `FV` | 파일검증 | File Verification | AI | `LE→FV` |
|
|
| `ER` | 기술검토 의뢰 | Examine Request | 공단 접수자 | `FV→ER`, `SL→ER` |
|
|
| `SL` | 보완요청 | Supplement Loop | 공단→기초 | `ER\|TE\|RK → SL` |
|
|
| `AC` | 초안생성 | AI Auto Creation | AI | `ER→AC` |
|
|
| `TE` | 기술검토 | Technical Examine | 공단 1차 결재 | `AC→TE`, `SL→TE` |
|
|
| `TP` | 기술검토 회신 | Technical Pass to Basin | 공단→환경청 | `TE→TP` |
|
|
| `RM` | 재원협의결과회신 | Result Message to Province | 환경청→광역 | `TP→RM` |
|
|
| `RB` | 재원협의결과회신(지자체) | Result Back to Municipality | 광역→기초 | `RM→RB` |
|
|
| `RC` | 조치결과서 제출 | Result Complete | 기초→광역 | `RB→RC` |
|
|
| `RA` | 조치결과서 제출(환경청) | Result Ask to Basin | 기초→환경청 | `RB→RA` |
|
|
| `AV` | 금액검증 | Amount Verification | AI | `RA→AV` |
|
|
| `EV` | 조치결과검토의뢰 | Examine Verify | 공단 접수자 | `AV→EV` |
|
|
| `RK` | 조치결과서검토 | Result Check | 공단 2차 결재 | `EV→RK`, `SL→RK` |
|
|
| `RR` | 조치결과서검토 회신 | Result Return to Basin | 공단→환경청 | `RK→RR` |
|
|
| `EP` | 검토결과 회신 | Examine Pass to Province | 환경청→광역 | `LE→EP`(자체), `RR→EP`(최종) |
|
|
| `TA` | 검토결과 회신(종료) | Technical Approval | 광역→기초 | `EP→TA` |
|
|
|
|
### 4-1. v2.1 → v3.0 대조 (프론트 폐기 대상)
|
|
|
|
| 구간 | v2.1 | v3.0 |
|
|
| --- | --- | --- |
|
|
| 의뢰 직후 파일검증 | `ER` | **`FV` → `ER`** |
|
|
| 검토자지정 후 초안 | `EE` → `DV` | **`ER` → `AC` → `TE`** |
|
|
| 1차 내부 결재 | `TR` → `TP` | **`TE` 유지 → `TP`** |
|
|
| 환경청→광역 1차 회신 | `EP` | **`RM`** |
|
|
| 금액검증 | `RA` | **`RA` → `AV` → `RK`** |
|
|
| 공단 2차 회신 | `TP` | **`RR`** |
|
|
| 최종 완료 | `TP` / 고시 `TB` | **`TA`** (고시 없음) |
|
|
|
|
가이드 v1.0 `PWRKSTTS`(`DV`, `AR`, `TR`, `AA` 등)도 동일하게 폐기.
|
|
|
|
---
|
|
|
|
## 5. 보완(`SL`) 3루프
|
|
|
|
복귀 상태는 `tb_as_doc_stts_chg_hstry` 직전 코드. 프론트는 복귀 코드를 요청에 넣지 않고, 라벨만 이력으로 고른다.
|
|
|
|
```mermaid
|
|
stateDiagram-v2
|
|
ER --> SL: 파일보완 팝업(파일리스트)
|
|
SL --> ER: 파일보완완료
|
|
TE --> SL: 보완 검토팝업()
|
|
SL --> TE: 보완완료
|
|
RK --> SL: 보완 검토팝업(금액)
|
|
SL --> RK: 보완완료
|
|
```
|
|
|
|
| 루프 | 팝업 | 요청 | 제출 버튼 |
|
|
| --- | --- | --- | --- |
|
|
| 파일 무결성 | 파일리스트 + 검증결과 | 공단 접수자 `ER` | [파일보완완료] |
|
|
| 1차 기술 | 설계 미달·사유 | 공단 검토자 `TE` | [보완완료] |
|
|
| 2차 금액 | 공종별 금액 체크 | 공단 검토자 `RK` | [보완완료] |
|
|
|
|
---
|
|
|
|
## 6. AI 3파이프라인·30분 Fallback
|
|
|
|
| ID | 단계 | 진입 → 완료 | 프론트 진입 | Fallback | 수동 재실행 |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| AI-1 | 파일 무결성 | `FV→ER` | 환경청 [기술검토 의뢰] | 30분 → `ER` + [파일검증] | `POST /dcrag-to/documents/transfer` |
|
|
| AI-2 | 초안 생성 | `AC→TE` | 공단 [검토자지정] | 30분 → `TE` + [실무협의서생성] | `POST /dcrag-to/documents/draft/generate` |
|
|
| AI-3 | 금액 검증 | `AV→EV` | 환경청 [조치결과 검토의뢰] | 30분 → `EV` + 수동 [금액검증] | `POST /dcrag-to/documents/cost/verify` |
|
|
|
|
- 예상 소요 안내는 **30분** (v1.0의 10분은 폐기).
|
|
- 콜백 수신·스케줄러 전이는 서버. FE는 상세 refetch / draft status 폴링만.
|
|
- `AC→TE` 성공 시에만 [실무협의서관리]·[검토결과조회] 활성. 실패·타임아웃이면 [실무협의서생성].
|
|
|
|
초안 폴링 이벤트 예:
|
|
|
|
| `eventType` | `eventMessage` |
|
|
| --- | --- |
|
|
| `REQUESTED` | 요청을 접수했습니다. |
|
|
| `DOWNLOADING` | 신청서를 수신하는 중입니다. |
|
|
| `ANALYZING` | 자료 준비가 완료되었습니다. |
|
|
| `GENERATING` | 문서 저장이 완료되었습니다. |
|
|
| `COMPLETED` | 문서 생성이 완료되었습니다. |
|
|
| `FAILED` | `errorMessage` 표시 |
|
|
|
|
종료: `status === "COMPLETED" | "FAILED"` 또는 `events`에 해당 `eventType`.
|
|
|
|
---
|
|
|
|
## 7. 2차 결재선 (수동 검토자지정)
|
|
|
|
1. `TE`에서 1차 결재선(`elaprCycl = 1`) 완료.
|
|
2. 금액검증 콜백/Fallback → `AV→EV`.
|
|
3. 공단 접수자가 `EV`에서 [검토자지정]: 1차 결재선을 시드로 편집 후 `POST /elapr-dmnd` (`elaprCycl: 2`) → `RK`.
|
|
4. `copy-line` 자동 복사는 사용하지 않는다.
|
|
|
|
결재 `process`:
|
|
|
|
- 상신·중간 승인: 문서 상태 `TE` 또는 `RK` 유지.
|
|
- 1차 최종: 서버가 `TE→TP`.
|
|
- 2차 최종: 서버가 `RK→RR`.
|
|
- 반려: 직전 결재자 복귀. 문서 상태 유지.
|
|
|
|
---
|
|
|
|
## 8. 웹기안기
|
|
|
|
- `TE`/`RK` [실무협의서관리] → `webhwp/open` Blob 조회 후 팝업에서 `HwpCtrl.Open(File)`.
|
|
- [검토완료] 시 HWP 파싱·DB 등재는 **서버**. FE는 결재 `process`만.
|
|
- 편집본 저장: `POST /pwrk-cnsltn-doc-crt-rslt` multipart. `verSn`은 클라이언트가 보내지 않음.
|