Files
mkd/backend/migrate_resident_report_data.sql

61 lines
2.6 KiB
MySQL
Raw Normal View History

2026-02-04 00:17:04 +05:00
-- ========= ДАННЫЕ ОТЧЕТОВ ДЛЯ ЖИТЕЛЕЙ =========
-- Одна запись на дом + период (например: дом 12, январь 2026).
-- Все собранные данные отчета сохраняются здесь.
CREATE TABLE IF NOT EXISTS resident_report_data (
id BIGSERIAL PRIMARY KEY,
building_id VARCHAR(50) NOT NULL REFERENCES buildings(id) ON DELETE CASCADE,
period_start DATE NOT NULL,
period_end DATE NOT NULL,
period_month INTEGER NOT NULL, -- 1-12
period_year INTEGER NOT NULL,
-- NPS
nps_score INTEGER NOT NULL DEFAULT 0,
nps_total_responses INTEGER NOT NULL DEFAULT 0,
nps_avg_score NUMERIC(4,2) DEFAULT 0,
nps_promoters INTEGER NOT NULL DEFAULT 0,
nps_passives INTEGER NOT NULL DEFAULT 0,
nps_detractors INTEGER NOT NULL DEFAULT 0,
-- Заявки
apps_total INTEGER NOT NULL DEFAULT 0,
apps_completed INTEGER NOT NULL DEFAULT 0,
apps_quality INTEGER NOT NULL DEFAULT 0,
-- Задачи (календарный план)
tasks_total INTEGER NOT NULL DEFAULT 0,
tasks_completed INTEGER NOT NULL DEFAULT 0,
-- Финансы
funds_collected NUMERIC(14,2) NOT NULL DEFAULT 0,
funds_spent NUMERIC(14,2) NOT NULL DEFAULT 0,
funds_balance NUMERIC(14,2) NOT NULL DEFAULT 0,
-- Долги
debt_cases_won INTEGER NOT NULL DEFAULT 0,
debt_collected NUMERIC(14,2) NOT NULL DEFAULT 0,
-- Расходы (итог и по категориям — JSON)
expenses_total NUMERIC(14,2) NOT NULL DEFAULT 0,
expenses_by_category JSONB,
-- Доп. данные в JSON (мероприятия, фото, план)
events JSONB,
work_photos JSONB,
plan_items JSONB,
-- Полный снимок отчета (как в content) — на случай расширения
snapshot JSONB,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(building_id, period_start, period_end)
);
CREATE INDEX IF NOT EXISTS idx_resident_report_data_building ON resident_report_data(building_id);
CREATE INDEX IF NOT EXISTS idx_resident_report_data_period ON resident_report_data(period_year, period_month);
COMMENT ON TABLE resident_report_data IS 'Собранные данные отчетов для жителей: дом + период (напр. дом 12, январь)';