feat: 自动候选筛选与股票研究工作台
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
CREATE TABLE veyra_strategy_screening (
|
||||
id varchar(36) PRIMARY KEY CHECK (id ~ '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'),
|
||||
strategy_version_id varchar(36) NOT NULL REFERENCES veyra_strategy_version(id),
|
||||
symbol varchar(6) NOT NULL CHECK(symbol ~ '^[0-9]{6}$'),
|
||||
exchange varchar(4) NOT NULL CHECK(exchange IN ('SSE','SZSE')),
|
||||
bar_date date NOT NULL,
|
||||
source_id varchar(36) NOT NULL REFERENCES veyra_provider_config(id),
|
||||
source_version bigint NOT NULL CHECK(source_version>0),
|
||||
source_adapter varchar(32) NOT NULL CHECK(source_adapter IN ('sina_public','eastmoney_public')),
|
||||
observed_at timestamptz NOT NULL,
|
||||
received_at timestamptz NOT NULL,
|
||||
input_hash varchar(64) NOT NULL CHECK(input_hash ~ '^[0-9a-f]{64}$'),
|
||||
input jsonb NOT NULL,
|
||||
status varchar(16) NOT NULL CHECK(status IN ('SIGNAL','NO_SIGNAL')),
|
||||
candidate_revision_id varchar(36) UNIQUE REFERENCES veyra_candidate_revision(id),
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
UNIQUE(strategy_version_id,exchange,symbol,bar_date,source_id,source_version),
|
||||
CHECK ((status='SIGNAL')=(candidate_revision_id IS NOT NULL))
|
||||
);
|
||||
CREATE INDEX veyra_strategy_screening_created_idx ON veyra_strategy_screening(created_at DESC,id DESC);
|
||||
CREATE TRIGGER veyra_strategy_screening_immutable BEFORE UPDATE OR DELETE ON veyra_strategy_screening FOR EACH ROW EXECUTE FUNCTION veyra_reject_fact_mutation();
|
||||
@@ -0,0 +1,5 @@
|
||||
ALTER TABLE veyra_quote_snapshot DROP CONSTRAINT veyra_quote_snapshot_data_mode_check;
|
||||
ALTER TABLE veyra_quote_snapshot ADD CONSTRAINT veyra_quote_snapshot_data_mode_check CHECK(data_mode IN ('simulation','public'));
|
||||
ALTER TABLE veyra_quote_snapshot ADD COLUMN source_id varchar(36) REFERENCES veyra_provider_config(id);
|
||||
ALTER TABLE veyra_quote_snapshot ADD COLUMN source_version bigint;
|
||||
ALTER TABLE veyra_quote_snapshot ADD CONSTRAINT veyra_quote_snapshot_source_check CHECK((data_mode='simulation' AND source_id IS NULL AND source_version IS NULL) OR (data_mode='public' AND source_id IS NOT NULL AND source_version IS NOT NULL AND source_version>0));
|
||||
Reference in New Issue
Block a user