fix(dashboard): KPI booth/design counts scoped to current working layout only
Proposal persistence (layout versions incl status=proposal) inflated booth KPI to 1589/600 - count only latest non-proposal version per hall. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
933fb613c6
commit
7d9982d566
@ -23,18 +23,31 @@ public interface DashboardMapper {
|
||||
""")
|
||||
Map<String, Object> findEventHeader(@Param("eventId") String eventId);
|
||||
|
||||
/** KPI 원자 집계(단일 행) — 부스 수·목표 부스·설계 승인·유틸리티 신청·렌더 완료. */
|
||||
/** KPI 원자 집계(단일 행) — 부스 수·목표 부스·설계 승인·유틸리티 신청·렌더 완료.
|
||||
* ★부스류 집계는 홀별 "현재 작업본"(proposal 제외 최신 버전) 레이아웃만 — 배치안(proposal)
|
||||
* 영속화·버전 누적으로 전 버전 booth 를 합산하면 KPI 가 부풀려진다(1589/600 사고, 2026-07-24). */
|
||||
@Select("""
|
||||
SELECT
|
||||
(SELECT count(*) FROM booth b JOIN layout l ON l.id = b.layout_id
|
||||
WHERE l.event_id = #{eventId}) AS "boothCount",
|
||||
WHERE l.event_id = #{eventId} AND l.status != 'proposal'
|
||||
AND l.version = (SELECT max(l2.version) FROM layout l2
|
||||
WHERE l2.event_id = l.event_id AND l2.hall_id = l.hall_id
|
||||
AND l2.status != 'proposal')) AS "boothCount",
|
||||
(SELECT COALESCE(sum(h.booth_capacity), 0) FROM hall_assignment ha
|
||||
JOIN hall h ON h.id = ha.hall_id WHERE ha.event_id = #{eventId}) AS "targetBooths",
|
||||
(SELECT count(*) FROM booth b JOIN layout l ON l.id = b.layout_id
|
||||
JOIN design_plan dp ON dp.booth_id = b.id
|
||||
WHERE l.event_id = #{eventId} AND dp.status = 'approved') AS "designApproved",
|
||||
WHERE l.event_id = #{eventId} AND dp.status = 'approved'
|
||||
AND l.status != 'proposal'
|
||||
AND l.version = (SELECT max(l2.version) FROM layout l2
|
||||
WHERE l2.event_id = l.event_id AND l2.hall_id = l.hall_id
|
||||
AND l2.status != 'proposal')) AS "designApproved",
|
||||
(SELECT count(*) FROM design_plan dp JOIN booth b ON b.id = dp.booth_id
|
||||
JOIN layout l ON l.id = b.layout_id WHERE l.event_id = #{eventId}) AS "designTotal",
|
||||
JOIN layout l ON l.id = b.layout_id WHERE l.event_id = #{eventId}
|
||||
AND l.status != 'proposal'
|
||||
AND l.version = (SELECT max(l2.version) FROM layout l2
|
||||
WHERE l2.event_id = l.event_id AND l2.hall_id = l.hall_id
|
||||
AND l2.status != 'proposal')) AS "designTotal",
|
||||
(SELECT count(*) FROM utility_order u WHERE u.event_id = #{eventId}) AS "utilityOrders",
|
||||
(SELECT count(*) FROM render_job r WHERE r.event_id = #{eventId} AND r.status = 'DONE') AS "renderDone"
|
||||
""")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user