fix: memperbaiki predict tomat, feact:menambahkan file vercel
This commit is contained in:
parent
cdf9a4ddb3
commit
6d38369c55
Binary file not shown.
|
@ -1,7 +1,7 @@
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from sqlalchemy import create_engine, MetaData
|
from sqlalchemy import create_engine, MetaData
|
||||||
|
|
||||||
engine = create_engine("mysql+pymysql://root@localhost:3306/predict")
|
engine = create_engine("mysql+pymysql://uupkixae2jbw2zse:1bFkfd8pfZ6EZhphAPQa@bdcaorplf9ct8apn6n5o-mysql.services.clever-cloud.com:3306/bdcaorplf9ct8apn6n5o")
|
||||||
meta = MetaData()
|
meta = MetaData()
|
||||||
conn = engine.connect()
|
conn = engine.connect()
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -24,13 +24,13 @@ async def read_data(db: Session = Depends(get_db)):
|
||||||
query = text("""
|
query = text("""
|
||||||
SELECT
|
SELECT
|
||||||
(SELECT pt.tanggal
|
(SELECT pt.tanggal
|
||||||
FROM predict.price_tomat AS pt
|
FROM price_tomat AS pt
|
||||||
JOIN predict.result_predict AS rp ON pt.id = rp.id
|
JOIN result_predict AS rp ON pt.id = rp.id
|
||||||
ORDER BY rp.id ASC
|
ORDER BY rp.id ASC
|
||||||
LIMIT 1 OFFSET 29) AS tanggal_old,
|
LIMIT 1 OFFSET 29) AS tanggal_old,
|
||||||
|
|
||||||
(SELECT tanggal
|
(SELECT tanggal
|
||||||
FROM predict.price_tomat
|
FROM price_tomat
|
||||||
ORDER BY tanggal DESC
|
ORDER BY tanggal DESC
|
||||||
LIMIT 1) AS tanggal_new;
|
LIMIT 1) AS tanggal_new;
|
||||||
""")
|
""")
|
||||||
|
@ -50,6 +50,7 @@ async def read_data(db: Session = Depends(get_db)):
|
||||||
|
|
||||||
@predict_router.get("/price", response_model=dict, dependencies=[Depends(verify_token)])
|
@predict_router.get("/price", response_model=dict, dependencies=[Depends(verify_token)])
|
||||||
def predict_price(db: Session = Depends(get_db)):
|
def predict_price(db: Session = Depends(get_db)):
|
||||||
|
try:
|
||||||
existing_data = db.execute(select(resultPredict)).fetchone()
|
existing_data = db.execute(select(resultPredict)).fetchone()
|
||||||
if existing_data:
|
if existing_data:
|
||||||
db.execute(delete(resultPredict)) # Hapus semua data lama
|
db.execute(delete(resultPredict)) # Hapus semua data lama
|
||||||
|
@ -140,26 +141,61 @@ def predict_price(db: Session = Depends(get_db)):
|
||||||
jumlah_data_dikirim = 0
|
jumlah_data_dikirim = 0
|
||||||
|
|
||||||
# Gabungkan hasil prediksi ke data uji
|
# Gabungkan hasil prediksi ke data uji
|
||||||
|
# for i in range(len(y_pred)):
|
||||||
|
# id_tomat = id_test[i]
|
||||||
|
# hasil = y_pred[i]
|
||||||
|
|
||||||
|
# # Invers hasil prediksi
|
||||||
|
# dummy_row = np.zeros((1, 5)) # [0, 0, 0, 0, 0, hasil_prediksi]
|
||||||
|
# dummy_row[0][4] = hasil
|
||||||
|
# prediksi_asli = float(scaler.inverse_transform(dummy_row)[0][4])
|
||||||
|
|
||||||
|
# existing = db.execute(select(resultPredict).where(resultPredict.c.id == id_tomat)).fetchone()
|
||||||
|
# if existing:
|
||||||
|
# db.execute(
|
||||||
|
# resultPredict.update()
|
||||||
|
# .where(resultPredict.c.id == id_tomat)
|
||||||
|
# .values(hasil_prediksi=prediksi_asli)
|
||||||
|
# )
|
||||||
|
# else:
|
||||||
|
# db.execute(insert(resultPredict).values(id=id_tomat, hasil_prediksi=prediksi_asli))
|
||||||
|
|
||||||
|
# jumlah_data_dikirim += 1
|
||||||
|
|
||||||
|
insert_data = []
|
||||||
|
update_data = []
|
||||||
|
|
||||||
for i in range(len(y_pred)):
|
for i in range(len(y_pred)):
|
||||||
|
|
||||||
id_tomat = id_test[i]
|
id_tomat = id_test[i]
|
||||||
hasil = y_pred[i]
|
hasil = y_pred[i]
|
||||||
|
print("start prediction", id_tomat, hasil)
|
||||||
|
|
||||||
# Invers hasil prediksi
|
# Invers hasil prediksi
|
||||||
dummy_row = np.zeros((1, 5)) # [0, 0, 0, 0, 0, hasil_prediksi]
|
dummy_row = np.zeros((1, 5))
|
||||||
dummy_row[0][4] = hasil
|
dummy_row[0][4] = hasil
|
||||||
prediksi_asli = float(scaler.inverse_transform(dummy_row)[0][4])
|
prediksi_asli = float(scaler.inverse_transform(dummy_row)[0][4])
|
||||||
|
|
||||||
existing = db.execute(select(resultPredict).where(resultPredict.c.id == id_tomat)).fetchone()
|
|
||||||
if existing:
|
insert_data.append({
|
||||||
|
"id": id_tomat,
|
||||||
|
"hasil_prediksi": prediksi_asli
|
||||||
|
})
|
||||||
|
|
||||||
|
print("print data keseluruhan", insert_data)
|
||||||
|
# Bulk insert
|
||||||
|
if insert_data:
|
||||||
|
db.execute(insert(resultPredict), insert_data)
|
||||||
|
|
||||||
|
# Bulk update (looped, karena SQLAlchemy core tidak punya bulk update langsung)
|
||||||
|
for item in update_data:
|
||||||
db.execute(
|
db.execute(
|
||||||
resultPredict.update()
|
resultPredict.update()
|
||||||
.where(resultPredict.c.id == id_tomat)
|
.where(resultPredict.c.id == item["id"])
|
||||||
.values(hasil_prediksi=prediksi_asli)
|
.values(hasil_prediksi=item["hasil_prediksi"])
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
db.execute(insert(resultPredict).values(id=id_tomat, hasil_prediksi=prediksi_asli))
|
|
||||||
|
|
||||||
jumlah_data_dikirim += 1
|
jumlah_data_dikirim += len(insert_data) + len(update_data)
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
@ -170,6 +206,12 @@ def predict_price(db: Session = Depends(get_db)):
|
||||||
"Pesan": "Prediksi seluruh data berhasil disimpan ke database"
|
"Pesan": "Prediksi seluruh data berhasil disimpan ke database"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
db.rollback() # penting!
|
||||||
|
print(f"Error: {e}")
|
||||||
|
finally:
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"builds":[
|
||||||
|
{
|
||||||
|
"src": "index.py",
|
||||||
|
"use": "@vercel/python"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"routes": [
|
||||||
|
{
|
||||||
|
"src": "/(.*)",
|
||||||
|
"dest": "index.py"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -71,7 +71,7 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!!date && !!tempPriceType) {
|
if (!date && !tempPriceType) {
|
||||||
|
|
||||||
setTabelDataAktual([]);
|
setTabelDataAktual([]);
|
||||||
setTabelDataPredict([]);
|
setTabelDataPredict([]);
|
||||||
|
|
Loading…
Reference in New Issue