← スキル一覧に戻る

postgres-db
by TheVillegas
Proyecto de Practica de Matias Villegas para realizar la web de analistas para el laboratorio AsisTec de la PUCV
⭐ 0🍴 0📅 2026年1月23日
SKILL.md
name: postgres-db description: Úsalo OBLIGATORIAMENTE cuando el usuario pida escribir consultas SQL para PostgreSQL, crear modelos en Node.js (pg), debuggear errores o entender la estructura de tablas refactorizada.
PostgreSQL Database Context (Asistec Lab)
Eres el DBA experto en PostgreSQL. Tu fuente de verdad es este esquema.
Driver Node.js: pg (node-postgres)
🧠 Reglas de Oro para PostgreSQL (Node.js Driver)
-
Bind Variables (SEGURIDAD):
- OBLIGATORIO: Jamás concatenes valores.
- Usa el signo peso y un número secuencial:
$1,$2,$3. - Ejemplo:
SELECT * FROM USUARIOS WHERE RUT_ANALISTA = $1
-
Manejo de Tipos de Dato:
- Booleanos: PostgreSQL tiene tipo nativo
BOOLEAN.- App (
true) -> DB (true) - App (
false) -> DB (false) - Nota: Ya no uses
0o1como en Oracle.
- App (
- Fechas:
- Postgres maneja nativamente strings ISO 8601 (
YYYY-MM-DD). - No necesitas
TO_DATE. Simplemente pasa el string:VALUES ($1)donde$1es'2026-01-21'.
- Postgres maneja nativamente strings ISO 8601 (
- IDs Autoincrementales:
- Para obtener el ID recién creado después de un insert, usa
RETURNING. - Ejemplo:
INSERT INTO ... VALUES (...) RETURNING ID_SESION;
- Para obtener el ID recién creado después de un insert, usa
- Booleanos: PostgreSQL tiene tipo nativo
-
Configuración de Salida:
- La librería
pgdevuelve un objeto resultado. Las filas están en la propiedad.rows. const res = await pool.query(...)-> Los datos están enres.rows(Array de objetos).
- La librería
🏛️ Esquema de Tablas (Diccionario de Datos)
1. Núcleo & Usuarios
CREATE TABLE USUARIOS (
RUT_ANALISTA VARCHAR(20) PRIMARY KEY, -- Aumentado a 20 car.
NOMBRE_APELLIDO_ANALISTA VARCHAR(100),
CORREO_ANALISTA VARCHAR(100),
CONTRASENA_ANALISTA VARCHAR(100), -- Hash bcrypt
ROL_ANALISTA INT DEFAULT 0 -- 0: Analista, 1: Admin/Supervisor
);
CREATE TABLE MUESTRAS_ALI (
CODIGO_ALI BIGINT PRIMARY KEY, -- ID Principal (Externo)
CODIGO_OTROS BIGINT,
OBSERVACIONES_CLIENTE TEXT,
OBSERVACIONES_GENERALES TEXT,
FECHA_CREACION TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Reporte Principal TPA
CREATE TABLE TPA_REPORTE (
CODIGO_ALI BIGINT PRIMARY KEY REFERENCES MUESTRAS_ALI(CODIGO_ALI),
ID_LUGAR INT, -- FK LUGARES_ALMACENAMIENTO
ESTADO_ACTUAL VARCHAR(20), -- 'BORRADOR', 'VERIFICADO', 'NO_REALIZADO'
FECHA_CIERRE TIMESTAMP,
USUARIO_CIERRE VARCHAR(20), -- FK USUARIOS
FECHA_ULTIMA_MODIFICACION TIMESTAMP,
USUARIO_ULTIMA_MODIFICACION VARCHAR(20)
);
-- Etapa 2: Sesiones y Equipos
CREATE TABLE TPA_ETAPA2_SESION (
ID_SESION SERIAL PRIMARY KEY,
CODIGO_ALI BIGINT REFERENCES TPA_REPORTE(CODIGO_ALI),
RUT_ANALISTA VARCHAR(20),
FECHA_INICIO TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
RETIRO_PESADO BOOLEAN DEFAULT FALSE -- Cambio: Boolean Nativo
);
CREATE TABLE TPA_ETAPA2_EQUIPOS (
ID_USO_EQUIPO SERIAL PRIMARY KEY,
ID_SESION INT, -- FK TPA_ETAPA2_SESION
ID_EQUIPO INT -- FK EQUIPOS_LAB
);
CREATE TABLE TPA_ETAPA2_MATERIALES (
ID_USO_MATERIAL SERIAL PRIMARY KEY,
ID_SESION INT,
TIPO_MATERIAL VARCHAR(20),
ID_PIPETA INT, -- FK MICROPIPETAS (Opcional)
ID_INSTRUMENTO INT, -- FK INSTRUMENTOS (Opcional)
CODIGO_MANUAL VARCHAR(100)
);
-- Etapa 3: Checklist
CREATE TABLE TPA_ETAPA3_CHECKLIST (
ID_CHECKLIST SERIAL PRIMARY KEY,
CODIGO_ALI BIGINT,
NOMBRE_ITEM VARCHAR(100),
SELECCIONADO BOOLEAN DEFAULT FALSE,
BLOQUEADO BOOLEAN DEFAULT FALSE
);
-- Etapa 5: Siembra y Recursos
CREATE TABLE TPA_ETAPA5_SIEMBRA (
ID_SIEMBRA SERIAL PRIMARY KEY,
CODIGO_ALI BIGINT UNIQUE,
OBSERVACIONES_SIEMBRA TEXT,
FECHA_REGISTRO TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE TPA_ETAPA5_RECURSOS (
ID_RECURSO_SIEMBRA SERIAL PRIMARY KEY,
ID_SIEMBRA INT, -- FK TPA_ETAPA5_SIEMBRA
CATEGORIA_RECURSO VARCHAR(20), -- 'MATERIAL', 'DILUYENTE', 'EQUIPO'
ID_MATERIAL_SIEMBRA INT,
ID_DILUYENTE INT,
ID_EQUIPO INT,
SELECCIONADO BOOLEAN DEFAULT TRUE
);
-- Reporte Principal TPA
CREATE TABLE TPA_REPORTE (
CODIGO_ALI BIGINT PRIMARY KEY REFERENCES MUESTRAS_ALI(CODIGO_ALI),
ID_LUGAR INT, -- FK LUGARES_ALMACENAMIENTO
ESTADO_ACTUAL VARCHAR(20), -- 'BORRADOR', 'VERIFICADO', 'NO_REALIZADO'
FECHA_CIERRE TIMESTAMP,
USUARIO_CIERRE VARCHAR(20), -- FK USUARIOS
FECHA_ULTIMA_MODIFICACION TIMESTAMP,
USUARIO_ULTIMA_MODIFICACION VARCHAR(20)
);
-- Etapa 2: Sesiones y Equipos
CREATE TABLE TPA_ETAPA2_SESION (
ID_SESION SERIAL PRIMARY KEY,
CODIGO_ALI BIGINT REFERENCES TPA_REPORTE(CODIGO_ALI),
RUT_ANALISTA VARCHAR(20),
FECHA_INICIO TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
RETIRO_PESADO BOOLEAN DEFAULT FALSE -- Cambio: Boolean Nativo
);
CREATE TABLE TPA_ETAPA2_EQUIPOS (
ID_USO_EQUIPO SERIAL PRIMARY KEY,
ID_SESION INT, -- FK TPA_ETAPA2_SESION
ID_EQUIPO INT -- FK EQUIPOS_LAB
);
CREATE TABLE TPA_ETAPA2_MATERIALES (
ID_USO_MATERIAL SERIAL PRIMARY KEY,
ID_SESION INT,
TIPO_MATERIAL VARCHAR(20),
ID_PIPETA INT, -- FK MICROPIPETAS (Opcional)
ID_INSTRUMENTO INT, -- FK INSTRUMENTOS (Opcional)
CODIGO_MANUAL VARCHAR(100)
);
-- Etapa 3: Checklist
CREATE TABLE TPA_ETAPA3_CHECKLIST (
ID_CHECKLIST SERIAL PRIMARY KEY,
CODIGO_ALI BIGINT,
NOMBRE_ITEM VARCHAR(100),
SELECCIONADO BOOLEAN DEFAULT FALSE,
BLOQUEADO BOOLEAN DEFAULT FALSE
);
-- Etapa 5: Siembra y Recursos
CREATE TABLE TPA_ETAPA5_SIEMBRA (
ID_SIEMBRA SERIAL PRIMARY KEY,
CODIGO_ALI BIGINT UNIQUE,
OBSERVACIONES_SIEMBRA TEXT,
FECHA_REGISTRO TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE TPA_ETAPA5_RECURSOS (
ID_RECURSO_SIEMBRA SERIAL PRIMARY KEY,
ID_SIEMBRA INT, -- FK TPA_ETAPA5_SIEMBRA
CATEGORIA_RECURSO VARCHAR(20), -- 'MATERIAL', 'DILUYENTE', 'EQUIPO'
ID_MATERIAL_SIEMBRA INT,
ID_DILUYENTE INT,
ID_EQUIPO INT,
SELECCIONADO BOOLEAN DEFAULT TRUE
);
4. Maestros y Catálogos (Lookups)
Tablas maestras para llenar selects en el Frontend. IDs son INT (SERIAL).
EQUIPOS_LAB:ID_EQUIPO,NOMBRE_EQUIPO,CODIGO_EQUIPOMICROPIPETAS:ID_PIPETA,NOMBRE_PIPETA,CAPACIDADINSTRUMENTOS:ID_INSTRUMENTO,NOMBRE_INSTRUMENTODILUYENTES:ID_DILUYENTE,NOMBRE_DILUYENTEMATERIAL_SIEMBRA:ID_MATERIAL_SIEMBRA,NOMBRE_MATERIALMAESTRO_CHECKLIST_LIMPIEZA: Items por defecto.
5. Vistas Útiles
V_CATALOGO_UNIFICADO:
- Consulta unificada de
INSTRUMENTOSyMICROPIPETAS. - Columnas:
id_origen,nombre,codigo,tipo_material('INSTRUMENTO' | 'PIPETA'),capacidad.
スコア
総合スコア
60/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
✓説明文
100文字以上の説明がある
+10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です