feat: 경영성과 대시보드 DB·엑셀 업로드·HTML 차트 연동

- mgmt_perf_uploads / mgmt_perf_snapshots 스키마
- POST /api/mgmt-perf/upload, 기본 페이로드 data/mgmt-perf-default-payload.json
- 대시보드 페이지: 업로드 영역 + iframe embed
- public/mgmt-perf: 원본 HTML 기반 CSS·dashboard-app.js
- xlsx 미설치 시 기본 페이로드+메타만 저장

Made-with: Cursor
This commit is contained in:
2026-04-13 13:21:31 +09:00
parent 485bd31798
commit fdcf1e0528
12 changed files with 3268 additions and 17 deletions

View File

@@ -270,3 +270,28 @@ CREATE TABLE IF NOT EXISTS lecture_thumbnail_events (
CREATE INDEX IF NOT EXISTS idx_lecture_thumbnail_events_occurred ON lecture_thumbnail_events (occurred_at DESC);
CREATE INDEX IF NOT EXISTS idx_lecture_thumbnail_events_type ON lecture_thumbnail_events (event_type);
CREATE INDEX IF NOT EXISTS idx_lecture_thumbnail_events_lecture ON lecture_thumbnail_events (lecture_id);
-- 경영성과 대시보드: 엑셀 업로드·차트용 JSON 스냅샷
CREATE TABLE IF NOT EXISTS mgmt_perf_uploads (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_email VARCHAR(320),
original_filename TEXT NOT NULL,
fiscal_year INT NOT NULL,
quarter INT NOT NULL CHECK (quarter >= 1 AND quarter <= 4),
file_path TEXT NOT NULL,
file_size BIGINT,
parse_status VARCHAR(32) NOT NULL DEFAULT 'ok',
parse_error TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_mgmt_perf_uploads_created ON mgmt_perf_uploads (created_at DESC);
CREATE TABLE IF NOT EXISTS mgmt_perf_snapshots (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
upload_id UUID NOT NULL UNIQUE REFERENCES mgmt_perf_uploads (id) ON DELETE CASCADE,
payload JSONB NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_mgmt_perf_snapshots_upload ON mgmt_perf_snapshots (upload_id);