File size: 2,783 Bytes
4e586fb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
-- ============================================================
-- Toque de Cor — Script de inicialização do banco Supabase
-- Execute uma única vez no SQL Editor do Supabase:
--   https://supabase.com/dashboard → SQL Editor → New query
-- ============================================================

-- 1. Usuários do sistema
CREATE TABLE IF NOT EXISTS usuarios (
    id        SERIAL PRIMARY KEY,
    usuario   TEXT UNIQUE NOT NULL,
    nome      TEXT NOT NULL,
    senha     TEXT NOT NULL,
    perfil    TEXT NOT NULL DEFAULT 'vendedor',
    loja      TEXT NOT NULL DEFAULT '',
    ativo     BOOLEAN NOT NULL DEFAULT TRUE,
    criado_em TIMESTAMPTZ DEFAULT NOW()
);

-- 2. Pedidos
CREATE TABLE IF NOT EXISTS pedidos (
    id           SERIAL PRIMARY KEY,
    numero       INTEGER NOT NULL,
    usuario      TEXT NOT NULL,
    loja         TEXT NOT NULL DEFAULT '',
    uf           TEXT NOT NULL,
    desconto_pct NUMERIC(6,2)  DEFAULT 0,
    total_geral  NUMERIC(12,2) DEFAULT 0,
    status       TEXT NOT NULL DEFAULT 'pendente',
    criado_em    TIMESTAMPTZ DEFAULT NOW(),
    enviado_em   TIMESTAMPTZ
);

-- 3. Itens dos pedidos
CREATE TABLE IF NOT EXISTS pedido_itens (
    id         SERIAL PRIMARY KEY,
    pedido_id  INTEGER REFERENCES pedidos(id) ON DELETE CASCADE,
    cod_sku    TEXT,
    cod_citel  TEXT,
    marca      TEXT,
    descricao  TEXT,
    embalagem  TEXT,
    qtd        INTEGER       NOT NULL DEFAULT 0,
    preco_unit NUMERIC(12,2) DEFAULT 0,
    total      NUMERIC(12,2) DEFAULT 0
);

-- 4. Configurações do sistema (chave-valor)
CREATE TABLE IF NOT EXISTS configuracoes (
    chave TEXT PRIMARY KEY,
    valor TEXT
);

-- 5. Log de auditoria
CREATE TABLE IF NOT EXISTS auditoria (
    id        SERIAL PRIMARY KEY,
    usuario   TEXT,
    acao      TEXT,
    detalhe   TEXT,
    criado_em TIMESTAMPTZ DEFAULT NOW()
);

-- 6. Usuário administrador inicial
-- IMPORTANTE: troque a senha antes de colocar em produção!
-- A senha abaixo é 'admin123' com bcrypt (gerada pelo auth.py)
INSERT INTO usuarios (usuario, nome, senha, perfil, loja, ativo)
VALUES (
    'admin',
    'Administrador',
    '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMUBJKfHFNtF.ZIQoGBP0XT0H2',
    'admin',
    'Matriz',
    TRUE
)
ON CONFLICT (usuario) DO NOTHING;

-- ============================================================
-- Índices para performance
-- ============================================================
CREATE INDEX IF NOT EXISTS idx_pedidos_usuario  ON pedidos(usuario);
CREATE INDEX IF NOT EXISTS idx_pedidos_loja     ON pedidos(loja);
CREATE INDEX IF NOT EXISTS idx_pedidos_status   ON pedidos(status);
CREATE INDEX IF NOT EXISTS idx_pedido_itens_pid ON pedido_itens(pedido_id);
CREATE INDEX IF NOT EXISTS idx_auditoria_usr    ON auditoria(usuario);