Files
conai/backend/app/templates/permit_list.html
sinmb79 5a044a3882 feat: Phase 3 구현 — 완전 자동화, 준공도서, Vision L3, 발주처 포털
EVMS 완전 자동화:
- 공기 지연 AI 예측 (SPI 기반 준공일 예측)
- 기성청구 가능 금액 자동 산출
- 매일 자정 EVMS 스냅샷 자동 생성 (APScheduler)
- 매일 07:00 GONGSA 아침 브리핑 자동 생성

준공도서 패키지:
- 준공 요약 + 품질시험 목록 + 검측 이력 + 인허가 현황 → ZIP 번들
- 준공 준비 체크리스트 API
- 4종 HTML 템플릿 (WeasyPrint PDF 출력)

Vision AI Level 3:
- 설계 도면 vs 현장 사진 비교 보조 판독 (Claude Vision)
- 철근 배근, 거푸집 치수 1차 분석

설계도서 파싱:
- PDF 이미지/텍스트에서 공종·수량·규격 자동 추출
- Pandoc HWP 출력 지원

발주처 전용 포털:
- 토큰 기반 읽기 전용 API
- 공사 현황 대시보드, 공정률 추이 차트

에이전트 협업 고도화:
- 협업 시나리오 (concrete_pour, excavation, weekly_report)
- GONGSA→PUMJIL→ANJEON 순차 처리

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 22:02:29 +09:00

45 lines
1.9 KiB
HTML

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;700&display=swap');
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Noto Sans KR', sans-serif; font-size: 10pt; color: #111; padding: 15mm; }
h1 { text-align: center; font-size: 16pt; font-weight: 700; margin-bottom: 6mm; }
.meta { text-align: center; color: #555; margin-bottom: 6mm; }
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #999; padding: 2mm 3mm; font-size: 9pt; }
th { background: #1e3a5f; color: white; text-align: center; }
tr:nth-child(even) td { background: #f8f8f8; }
.approved { color: #065f46; font-weight: 700; }
.pending { color: #92400e; }
.footer { margin-top: 6mm; text-align: right; font-size: 9pt; color: #777; }
</style>
</head>
<body>
<h1>인허가 취득 현황</h1>
<div class="meta">{{ project.name }} | 생성일: {{ today }} | 총 {{ permits|length }}건</div>
<table>
<tr><th>No.</th><th>인허가 항목</th><th>관할 기관</th><th>기한</th><th>제출일</th><th>취득일</th><th>상태</th></tr>
{% for p in permits %}
<tr>
<td style="text-align:center">{{ loop.index }}</td>
<td>{{ p.permit_type }}</td>
<td>{{ p.authority or '-' }}</td>
<td>{{ p.deadline or '-' }}</td>
<td>{{ p.submitted_date or '-' }}</td>
<td>{{ p.approved_date or '-' }}</td>
<td style="text-align:center">
{% if p.status.value == 'approved' %}<span class="approved">취득 완료</span>
{% elif p.status.value == 'submitted' %}<span class="pending">제출됨</span>
{% elif p.status.value == 'in_progress' %}<span class="pending">진행중</span>
{% else %}대기{% endif %}
</td>
</tr>
{% endfor %}
</table>
<div class="footer">CONAI 자동 생성</div>
</body>
</html>