feat: 회고 시스템 Phase 1 캡처 파이프라인
chat_bridge에 회고 채널 텍스트 폴링 + n8n 포워딩 추가. n8n 워크플로우(8노드): Webhook → Validate → Qwen 분류 → PostgreSQL INSERT → Chat 확인. retrospect 스키마 + 3 테이블 (entries, reviews, patterns). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
50
init/migrate-v6.sql
Normal file
50
init/migrate-v6.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
-- migrate-v6.sql: 회고 시스템 (retrospect) 스키마 + 테이블
|
||||
-- 실행: docker exec -i bot-postgres psql -U bot -d chatbot < init/migrate-v6.sql
|
||||
|
||||
CREATE SCHEMA IF NOT EXISTS retrospect;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS retrospect.entries (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
raw_text TEXT NOT NULL,
|
||||
domain VARCHAR(20) NOT NULL, -- work | health | finance
|
||||
entry_type VARCHAR(20) NOT NULL, -- event | reflection | regret | log
|
||||
sentiment VARCHAR(10) NOT NULL, -- positive | neutral | negative
|
||||
tags TEXT[] DEFAULT '{}',
|
||||
confidence REAL DEFAULT 0.0,
|
||||
source VARCHAR(20) DEFAULT 'chat',
|
||||
reviewed BOOLEAN DEFAULT FALSE,
|
||||
source_post_id INTEGER,
|
||||
username VARCHAR(100)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_entries_created ON retrospect.entries (created_at DESC);
|
||||
CREATE INDEX IF NOT EXISTS idx_entries_domain ON retrospect.entries (domain);
|
||||
CREATE INDEX IF NOT EXISTS idx_entries_type ON retrospect.entries (entry_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_entries_reviewed ON retrospect.entries (reviewed) WHERE NOT reviewed;
|
||||
CREATE INDEX IF NOT EXISTS idx_entries_tags ON retrospect.entries USING GIN(tags);
|
||||
-- 중복 방지: chat_bridge 재시작 시 같은 post 재처리 방지
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_entries_post_id ON retrospect.entries (source_post_id)
|
||||
WHERE source_post_id IS NOT NULL;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS retrospect.reviews (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
review_type VARCHAR(10) NOT NULL, -- daily | weekly | monthly
|
||||
period_start DATE NOT NULL,
|
||||
period_end DATE NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
entry_ids BIGINT[] DEFAULT '{}',
|
||||
model_used VARCHAR(50) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS retrospect.patterns (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
discovered_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
domain VARCHAR(20) NOT NULL,
|
||||
pattern_type VARCHAR(20) NOT NULL, -- recurring_mistake | habit | correlation | improvement
|
||||
description TEXT NOT NULL,
|
||||
occurrences INTEGER DEFAULT 1,
|
||||
last_seen DATE NOT NULL,
|
||||
status VARCHAR(20) DEFAULT 'active'
|
||||
);
|
||||
Reference in New Issue
Block a user