update sync data from site dashboard and testing closing cycles

This commit is contained in:
Alberto-Audrix committed 2026-09-15 16:52:41 +07:00
1 parent 36639d8c38
commit f49e72592c
42 files changed
+1966 -688

No files matched your search

+19 -5
View File
@@ -121,31 +121,40 @@ CREATE INDEX IF NOT EXISTS idx_sites_user_id ON sites (user_id);
-- -----------------------------------------------------------------------------
-- 5. Kandang (Coop / Pen)
-- Optional source_kandang_id = farm kandang PK for mirror upserts.
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS kandang (
kandang_id BIGSERIAL PRIMARY KEY,
kandang_name VARCHAR(30) NOT NULL,
feed_in_button_urls JSONB NOT NULL DEFAULT '[]'::jsonb,
site_id VARCHAR(64) NOT NULL REFERENCES sites (site_id) ON DELETE CASCADE,
source_kandang_id BIGINT,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_kandang_site_id ON kandang (site_id);
CREATE UNIQUE INDEX IF NOT EXISTS uniq_kandang_site_source
ON kandang (site_id, source_kandang_id)
WHERE source_kandang_id IS NOT NULL;
-- -----------------------------------------------------------------------------
-- 6. Flock
-- Belongs to kandang (not cycle). IoT readings attach here.
-- -----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS flock (
flock_id BIGSERIAL PRIMARY KEY,
flock_name VARCHAR(30) NOT NULL,
kandang_id BIGINT NOT NULL REFERENCES kandang (kandang_id) ON DELETE CASCADE,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
flock_id BIGSERIAL PRIMARY KEY,
flock_name VARCHAR(30) NOT NULL,
kandang_id BIGINT NOT NULL REFERENCES kandang (kandang_id) ON DELETE CASCADE,
source_flock_id BIGINT,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_flock_kandang_id ON flock (kandang_id);
CREATE UNIQUE INDEX IF NOT EXISTS uniq_flock_kandang_source
ON flock (kandang_id, source_flock_id)
WHERE source_flock_id IS NOT NULL;
-- -----------------------------------------------------------------------------
-- 7. Cycles
@@ -161,6 +170,9 @@ CREATE TABLE IF NOT EXISTS cycles (
doc_in_count INTEGER NOT NULL,
feed_initial_balance INTEGER NOT NULL DEFAULT 0,
feed_initial_balance_date DATE,
feed_initial_balance_iot INTEGER,
feed_initial_balance_accuracy DOUBLE PRECISION,
feed_initial_balance_sync_error TEXT,
status VARCHAR(30) NOT NULL DEFAULT 'active',
kandang_id BIGINT NOT NULL REFERENCES kandang (kandang_id) ON DELETE CASCADE,
active_site_id BIGINT REFERENCES active_sites (active_site_id) ON DELETE SET NULL,
@@ -227,6 +239,8 @@ CREATE TABLE IF NOT EXISTS ai_insight (
CREATE INDEX IF NOT EXISTS idx_ai_insight_cycle_id ON ai_insight (cycle_id);
CREATE INDEX IF NOT EXISTS idx_ai_insight_date ON ai_insight (date);
CREATE UNIQUE INDEX IF NOT EXISTS uniq_ai_insight_cycle_date_section_session
ON ai_insight (cycle_id, date, section, session);
-- -----------------------------------------------------------------------------
-- 10. Feed Sacks