61 lines
2.6 KiB
MySQL
61 lines
2.6 KiB
MySQL
|
|
-- ========= ДАННЫЕ ОТЧЕТОВ ДЛЯ ЖИТЕЛЕЙ =========
|
|||
|
|
-- Одна запись на дом + период (например: дом 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, январь)';
|