Skip to content

Commit 30aa6b6

Browse files
committed
feat: Enhance database integrity checks and diagnostics in deployment scripts; update SQL seed data for variant attributes
1 parent 0abe946 commit 30aa6b6

File tree

5 files changed

+120
-14
lines changed

5 files changed

+120
-14
lines changed

.github/workflows/cd.yml

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,9 @@ jobs:
287287
}
288288
289289
if ! verify_tag_exists "$TARGET_TAG"; then
290-
echo "Tag $TARGET_TAG not found for both images. Falling back to $FALLBACK_TAG"
291-
TARGET_TAG="$FALLBACK_TAG"
290+
echo "ERROR: Required image tag $TARGET_TAG not found for backend/frontend."
291+
echo "Refusing to deploy fallback tag to avoid artifact drift."
292+
exit 1
292293
fi
293294
294295
deploy_tag "$TARGET_TAG"
@@ -304,18 +305,47 @@ jobs:
304305
mysql -N -s -uroot -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" -e "SELECT COUNT(*) FROM $table;" 2>/dev/null | tr -d '\r'
305306
}
306307
308+
get_scalar_value() {
309+
sql="$1"
310+
compose_cmd exec -T mysql \
311+
mysql -N -s -uroot -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" -e "$sql" 2>/dev/null | tr -d '\r'
312+
}
313+
314+
refresh_integrity_metrics() {
315+
JOINABLE_VARIANTS_COUNT="$(get_scalar_value "SELECT COUNT(*) FROM product_variants pv LEFT JOIN products p ON p.id = pv.product_id LEFT JOIN units u ON u.id = pv.unit_id WHERE p.id IS NOT NULL AND u.id IS NOT NULL;" || echo 0)"
316+
ORPHAN_PRODUCT_REFS="$(get_scalar_value "SELECT COUNT(*) FROM product_variants pv LEFT JOIN products p ON p.id = pv.product_id WHERE p.id IS NULL;" || echo 0)"
317+
ORPHAN_UNIT_REFS="$(get_scalar_value "SELECT COUNT(*) FROM product_variants pv LEFT JOIN units u ON u.id = pv.unit_id WHERE u.id IS NULL;" || echo 0)"
318+
STOCKED_VARIANTS_COUNT="$(get_scalar_value "SELECT COUNT(DISTINCT variant_id) FROM inventory_stock WHERE COALESCE(quantity, 0) > 0;" || echo 0)"
319+
}
320+
321+
is_integrity_bad() {
322+
stock_count="$1"
323+
if [ "${JOINABLE_VARIANTS_COUNT:-0}" = "0" ]; then
324+
return 0
325+
fi
326+
if [ "${ORPHAN_PRODUCT_REFS:-0}" != "0" ] || [ "${ORPHAN_UNIT_REFS:-0}" != "0" ]; then
327+
return 0
328+
fi
329+
if [ "${stock_count:-0}" != "0" ] && [ "${STOCKED_VARIANTS_COUNT:-0}" = "0" ]; then
330+
return 0
331+
fi
332+
return 1
333+
}
334+
307335
PRODUCTS_COUNT="$(get_table_count products || echo 0)"
308336
VARIANTS_COUNT="$(get_table_count product_variants || echo 0)"
309337
STOCK_COUNT="$(get_table_count inventory_stock || echo 0)"
338+
refresh_integrity_metrics
310339
SEED_WAS_RUN=0
311340
312341
echo "Post-deploy counts: products=$PRODUCTS_COUNT, variants=$VARIANTS_COUNT, inventory_stock=$STOCK_COUNT"
342+
echo "Post-deploy integrity: joinable_variants=$JOINABLE_VARIANTS_COUNT, orphan_product_refs=$ORPHAN_PRODUCT_REFS, orphan_unit_refs=$ORPHAN_UNIT_REFS, stocked_variants=$STOCKED_VARIANTS_COUNT"
313343
314-
if [ "${PRODUCTS_COUNT:-0}" = "0" ] || [ "${VARIANTS_COUNT:-0}" = "0" ]; then
315-
echo "Detected empty critical tables. Running reset-db-and-seed.sh..."
344+
if [ "${PRODUCTS_COUNT:-0}" = "0" ] || [ "${VARIANTS_COUNT:-0}" = "0" ] || is_integrity_bad "$STOCK_COUNT"; then
345+
echo "Detected empty or inconsistent critical product data. Running reset-db-and-seed.sh..."
316346
if [ -f "./deploy/scripts/reset-db-and-seed.sh" ]; then
317347
sudo chmod +x ./deploy/scripts/reset-db-and-seed.sh
318-
sudo DEPLOY_PATH="$DEPLOY_PATH" COMPOSE_FILE="$DEPLOY_PATH/docker-compose.prod.yml" ENV_FILE="$ENV_FILE" bash ./deploy/scripts/reset-db-and-seed.sh
348+
sudo DEPLOY_PATH="$DEPLOY_PATH" COMPOSE_FILE="$DEPLOY_PATH/docker-compose.prod.yml" ENV_FILE="$ENV_FILE" SEED_STRATEGY="data-only" ENABLE_LEGACY_FALLBACK="false" bash ./deploy/scripts/reset-db-and-seed.sh
319349
SEED_WAS_RUN=1
320350
# Ensure services are up after seed
321351
compose_cmd up -d --remove-orphans
@@ -327,10 +357,13 @@ jobs:
327357
PRODUCTS_COUNT_FINAL="$(get_table_count products || echo 0)"
328358
VARIANTS_COUNT_FINAL="$(get_table_count product_variants || echo 0)"
329359
STOCK_COUNT_FINAL="$(get_table_count inventory_stock || echo 0)"
360+
refresh_integrity_metrics
330361
echo "Post-start final counts: products=$PRODUCTS_COUNT_FINAL, variants=$VARIANTS_COUNT_FINAL, inventory_stock=$STOCK_COUNT_FINAL"
362+
echo "Post-start final integrity: joinable_variants=$JOINABLE_VARIANTS_COUNT, orphan_product_refs=$ORPHAN_PRODUCT_REFS, orphan_unit_refs=$ORPHAN_UNIT_REFS, stocked_variants=$STOCKED_VARIANTS_COUNT"
331363
332-
if [ "${PRODUCTS_COUNT_FINAL:-0}" = "0" ] || [ "${VARIANTS_COUNT_FINAL:-0}" = "0" ]; then
333-
echo "ERROR: Critical tables are still empty after deploy + seed."
364+
if [ "${PRODUCTS_COUNT_FINAL:-0}" = "0" ] || [ "${VARIANTS_COUNT_FINAL:-0}" = "0" ] || is_integrity_bad "$STOCK_COUNT_FINAL"; then
365+
echo "ERROR: Critical product data is still inconsistent after deploy + seed."
366+
echo "Diagnostics: products=$PRODUCTS_COUNT_FINAL, variants=$VARIANTS_COUNT_FINAL, stock=$STOCK_COUNT_FINAL, joinable_variants=$JOINABLE_VARIANTS_COUNT, orphan_product_refs=$ORPHAN_PRODUCT_REFS, orphan_unit_refs=$ORPHAN_UNIT_REFS, stocked_variants=$STOCKED_VARIANTS_COUNT"
334367
compose_cmd logs --tail=150 mysql backend || true
335368
exit 1
336369
fi

backend/src/main/resources/data.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ INSERT INTO `product_variants` (`id`,`barcode`,`created_at`,`image_url`,`is_acti
116116
-- removed unit_conversions for deleted variants (Coca-Cola / Vinamilk dâu)
117117

118118
-- 9.0 VARIANT ATTRIBUTES
119-
INSERT INTO `variant_attributes` VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích');
119+
INSERT INTO `variant_attributes` (`variant_id`,`attribute_value`,`attribute_name`) VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích');
120120

121121
-- 9.1 VARIANT PRICES (Initial active prices for all variants)
122122
INSERT INTO `variant_prices` (`id`,`created_at`,`effective_date`,`purchase_price`,`selling_price`,`status`,`tax_percent`,`variant_id`,`base_selling_price`,`expiry_date`) VALUES(1,'2026-03-18 01:40:08.947535','2026-01-15',20000.00,23000.00,'ACTIVE',10.00,1,NULL,NULL),(2,'2026-03-18 01:40:08.947535','2026-02-01',12000.00,15000.00,'ACTIVE',10.00,2,NULL,NULL),(3,'2026-03-18 01:40:08.947535','2026-01-20',35000.00,45000.00,'ACTIVE',10.00,3,NULL,NULL),(5,'2026-03-18 01:40:08.947535','2026-02-01',6000.00,8000.00,'ACTIVE',10.00,5,NULL,NULL),(6,'2026-03-18 01:40:08.947535','2026-01-15',10000.00,13000.00,'ACTIVE',10.00,6,NULL,NULL),(7,'2026-03-18 01:40:08.947535','2026-02-01',45000.00,55000.00,'ACTIVE',10.00,7,NULL,NULL),(8,'2026-03-18 01:40:08.947535','2026-01-20',18000.00,22000.00,'ACTIVE',10.00,8,NULL,NULL),(9,'2026-03-18 01:40:08.947535','2026-02-10',32000.00,40000.00,'INACTIVE',10.00,9,NULL,NULL),(10,'2026-03-18 01:40:08.947535','2026-02-01',1000.00,2000.00,'ACTIVE',5.00,10,NULL,NULL),(11,'2026-03-18 01:40:08.947535','2026-01-15',6000.00,8000.00,'ACTIVE',10.00,11,NULL,NULL),(12,'2026-03-18 01:40:08.947535','2026-02-01',3000.00,4500.00,'ACTIVE',10.00,12,NULL,NULL),(13,'2026-03-18 01:40:08.947535','2026-01-20',7000.00,10000.00,'ACTIVE',10.00,13,NULL,NULL),(14,'2026-03-18 01:40:08.947535','2026-02-10',11000.00,15000.00,'ACTIVE',10.00,14,NULL,NULL),(15,'2026-03-18 01:40:08.947535','2026-03-01',4000.00,6000.00,'ACTIVE',5.00,15,NULL,NULL),(16,'2026-03-18 01:40:08.947535','2026-03-01',25000.00,35000.00,'ACTIVE',10.00,16,NULL,NULL),(17,'2026-03-18 01:40:08.947535','2026-02-10',8000.00,12000.00,'ACTIVE',10.00,17,NULL,NULL),(18,'2026-03-18 01:40:08.947535','2026-02-15',7000.00,10000.00,'ACTIVE',10.00,18,NULL,NULL),(19,'2026-03-18 01:40:08.947535','2026-01-20',24000.00,30000.00,'ACTIVE',10.00,19,NULL,NULL),(20,'2026-03-18 01:40:08.947535','2026-02-10',20000.00,25000.00,'ACTIVE',10.00,20,NULL,NULL),(21,'2026-03-18 01:40:08.947535','2026-02-15',16000.00,20000.00,'INACTIVE',10.00,21,NULL,NULL),(22,'2026-03-18 01:40:08.947535','2026-02-15',14000.00,18000.00,'ACTIVE',10.00,22,NULL,NULL),(23,'2026-03-18 01:40:08.947535','2026-02-15',28000.00,35000.00,'ACTIVE',10.00,23,NULL,NULL),(24,'2026-03-18 01:40:08.947535','2026-02-15',20000.00,25000.00,'ACTIVE',10.00,24,NULL,NULL),(25,'2026-03-18 01:40:08.947535','2026-02-15',40000.00,50000.00,'ACTIVE',10.00,25,NULL,NULL),(26,'2026-03-18 01:40:08.947535','2026-02-15',32000.00,40000.00,'ACTIVE',10.00,26,NULL,NULL),(27,'2026-03-17 21:53:50.224337','2026-03-17',32000.00,30000.00,'INACTIVE',10.00,9,NULL,NULL),(28,'2026-03-17 21:54:07.038309','2026-03-17',32000.00,35000.00,'INACTIVE',10.00,9,NULL,NULL),(29,'2026-03-18 08:56:14.613425','2026-03-18',0.00,10000.00,'INACTIVE',10.00,33,NULL,'2026-03-19'),(30,'2026-03-18 10:12:59.693522','2026-03-18',32000.00,38500.00,'INACTIVE',10.00,9,NULL,'2026-03-19'),(31,'2026-03-18 16:35:35.389328','2026-03-18',16000.00,23100.00,'ACTIVE',10.00,21,NULL,NULL),(36,'2026-03-19 09:02:42.165644','2026-03-19',32000.00,38500.00,'ACTIVE',10.00,9,NULL,'2026-08-31'),(37,'2026-03-19 09:03:09.683238','2026-03-19',10000.00,12100.00,'ACTIVE',10.00,30,NULL,'2026-08-31'),(39,'2026-03-19 09:04:18.388334','2026-03-19',10000.00,15400.00,'ACTIVE',10.00,28,NULL,'2026-08-31');

deploy/fix_seed.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ INSERT INTO `product_variants` (`id`,`barcode`,`created_at`,`image_url`,`is_acti
117117
INSERT INTO `unit_conversions` (id,conversion_factor,description,is_active,sell_price,to_unit_id,variant_id) VALUES (15,48.0000,'',1,0.00,3,28);
118118

119119
-- 9.0 VARIANT ATTRIBUTES
120-
INSERT INTO `variant_attributes` VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích');
120+
INSERT INTO `variant_attributes` (`variant_id`,`attribute_value`,`attribute_name`) VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích');
121121

122122
-- 9.1 VARIANT PRICES (Initial active prices for all variants)
123123
INSERT INTO `variant_prices` (`id`,`created_at`,`effective_date`,`purchase_price`,`selling_price`,`status`,`tax_percent`,`variant_id`,`base_selling_price`,`expiry_date`) VALUES(1,'2026-03-18 01:40:08.947535','2026-01-15',20000.00,23000.00,'ACTIVE',10.00,1,NULL,NULL),(2,'2026-03-18 01:40:08.947535','2026-02-01',12000.00,15000.00,'ACTIVE',10.00,2,NULL,NULL),(3,'2026-03-18 01:40:08.947535','2026-01-20',35000.00,45000.00,'ACTIVE',10.00,3,NULL,NULL),(5,'2026-03-18 01:40:08.947535','2026-02-01',6000.00,8000.00,'ACTIVE',10.00,5,NULL,NULL),(6,'2026-03-18 01:40:08.947535','2026-01-15',10000.00,13000.00,'ACTIVE',10.00,6,NULL,NULL),(7,'2026-03-18 01:40:08.947535','2026-02-01',45000.00,55000.00,'ACTIVE',10.00,7,NULL,NULL),(8,'2026-03-18 01:40:08.947535','2026-01-20',18000.00,22000.00,'ACTIVE',10.00,8,NULL,NULL),(9,'2026-03-18 01:40:08.947535','2026-02-10',32000.00,40000.00,'INACTIVE',10.00,9,NULL,NULL),(10,'2026-03-18 01:40:08.947535','2026-02-01',1000.00,2000.00,'ACTIVE',5.00,10,NULL,NULL),(11,'2026-03-18 01:40:08.947535','2026-01-15',6000.00,8000.00,'ACTIVE',10.00,11,NULL,NULL),(12,'2026-03-18 01:40:08.947535','2026-02-01',3000.00,4500.00,'ACTIVE',10.00,12,NULL,NULL),(13,'2026-03-18 01:40:08.947535','2026-01-20',7000.00,10000.00,'ACTIVE',10.00,13,NULL,NULL),(14,'2026-03-18 01:40:08.947535','2026-02-10',11000.00,15000.00,'ACTIVE',10.00,14,NULL,NULL),(15,'2026-03-18 01:40:08.947535','2026-03-01',4000.00,6000.00,'ACTIVE',5.00,15,NULL,NULL),(16,'2026-03-18 01:40:08.947535','2026-03-01',25000.00,35000.00,'ACTIVE',10.00,16,NULL,NULL),(17,'2026-03-18 01:40:08.947535','2026-02-10',8000.00,12000.00,'ACTIVE',10.00,17,NULL,NULL),(18,'2026-03-18 01:40:08.947535','2026-02-15',7000.00,10000.00,'ACTIVE',10.00,18,NULL,NULL),(19,'2026-03-18 01:40:08.947535','2026-01-20',24000.00,30000.00,'ACTIVE',10.00,19,NULL,NULL),(20,'2026-03-18 01:40:08.947535','2026-02-10',20000.00,25000.00,'ACTIVE',10.00,20,NULL,NULL),(21,'2026-03-18 01:40:08.947535','2026-02-15',16000.00,20000.00,'INACTIVE',10.00,21,NULL,NULL),(22,'2026-03-18 01:40:08.947535','2026-02-15',14000.00,18000.00,'ACTIVE',10.00,22,NULL,NULL),(23,'2026-03-18 01:40:08.947535','2026-02-15',28000.00,35000.00,'ACTIVE',10.00,23,NULL,NULL),(24,'2026-03-18 01:40:08.947535','2026-02-15',20000.00,25000.00,'ACTIVE',10.00,24,NULL,NULL),(25,'2026-03-18 01:40:08.947535','2026-02-15',40000.00,50000.00,'ACTIVE',10.00,25,NULL,NULL),(26,'2026-03-18 01:40:08.947535','2026-02-15',32000.00,40000.00,'ACTIVE',10.00,26,NULL,NULL),(27,'2026-03-17 21:53:50.224337','2026-03-17',32000.00,30000.00,'INACTIVE',10.00,9,NULL,NULL),(28,'2026-03-17 21:54:07.038309','2026-03-17',32000.00,35000.00,'INACTIVE',10.00,9,NULL,NULL),(29,'2026-03-18 08:56:14.613425','2026-03-18',0.00,10000.00,'INACTIVE',10.00,33,NULL,'2026-03-19'),(30,'2026-03-18 10:12:59.693522','2026-03-18',32000.00,38500.00,'INACTIVE',10.00,9,NULL,'2026-03-19'),(31,'2026-03-18 16:35:35.389328','2026-03-18',16000.00,23100.00,'ACTIVE',10.00,21,NULL,NULL),(36,'2026-03-19 09:02:42.165644','2026-03-19',32000.00,38500.00,'ACTIVE',10.00,9,NULL,'2026-08-31'),(37,'2026-03-19 09:03:09.683238','2026-03-19',10000.00,12100.00,'ACTIVE',10.00,30,NULL,'2026-08-31'),(39,'2026-03-19 09:04:18.388334','2026-03-19',10000.00,15400.00,'ACTIVE',10.00,28,NULL,'2026-08-31');

0 commit comments

Comments
 (0)