script preaggregates.py
This commit is contained in:
74
modules/EcmInvoiceOuts/ai/analysisAI.py
Normal file
74
modules/EcmInvoiceOuts/ai/analysisAI.py
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python3
|
||||
import os, sys, json
|
||||
from preaggregates import compute_preaggregates, serialize_for_ai
|
||||
|
||||
try:
|
||||
import mysql.connector
|
||||
except Exception as e:
|
||||
sys.stderr.write("MySQL connector not available: %s\n" % e)
|
||||
sys.exit(1)
|
||||
|
||||
def getenv(key, default=None):
|
||||
return os.environ.get(key, default)
|
||||
|
||||
def main():
|
||||
cfg = {
|
||||
#"host": getenv("MYSQL_HOST", "twinpol-mysql56"),
|
||||
"host": getenv("MYSQL_HOST", "localhost"),
|
||||
"user": getenv("MYSQL_USER", "root"),
|
||||
"password": getenv("MYSQL_PASSWORD", "rootpassword"),
|
||||
"database": getenv("MYSQL_DATABASE", "preDb_0dcc87940d3655fa574b253df04ca1c3"),
|
||||
"port": int(getenv("MYSQL_PORT", "3306")),
|
||||
}
|
||||
|
||||
try:
|
||||
cnx = mysql.connector.connect(**cfg)
|
||||
cur = cnx.cursor()
|
||||
#cur.execute("SELECT COUNT(*) FROM ecminvoiceouts WHERE YEAR(register_date)=2025")
|
||||
cur.execute("""
|
||||
SELECT i.document_no,
|
||||
i.parent_name,
|
||||
DATE(i.register_date) AS register_date,
|
||||
ii.code,
|
||||
ii.name,
|
||||
ii.quantity,
|
||||
ii.total_netto
|
||||
FROM ecminvoiceoutitems AS ii
|
||||
JOIN ecminvoiceouts AS i ON i.id = ii.ecminvoiceout_id
|
||||
WHERE i.register_date >= %s
|
||||
AND i.register_date < %s
|
||||
AND i.type = %s
|
||||
""", ("2025-07-01", "2025-08-01", "normal"))
|
||||
rows = cur.fetchall()
|
||||
|
||||
results = compute_preaggregates(rows)
|
||||
|
||||
# 2) podejrzyj wyniki
|
||||
# ['daily_sales', 'product_summary', 'customer_summary', 'product_daily',
|
||||
# 'top10_products_by_sales', 'top10_customers_by_sales']
|
||||
print(">> available tables:", list(results.keys()))
|
||||
# print(results["daily_sales"].head(10))
|
||||
# print(results["product_summary"])
|
||||
# print(results["customer_summary"])
|
||||
# print(results["product_daily"])
|
||||
# print(results["top10_products_by_sales"])
|
||||
# print(results["top10_customers_by_sales"])
|
||||
results["daily_sales"].head(10)
|
||||
results["product_summary"]
|
||||
results["customer_summary"]
|
||||
results["product_daily"]
|
||||
results["top10_products_by_sales"]
|
||||
results["top10_customers_by_sales"]
|
||||
|
||||
# 3) zserializuj do lekkiego JSON-a (np. do AI lub do pliku)
|
||||
ai_payload = serialize_for_ai(results)
|
||||
print(json.dumps(ai_payload, ensure_ascii=False, indent=2, default=str))
|
||||
|
||||
cur.close()
|
||||
cnx.close()
|
||||
except Exception as e:
|
||||
sys.stderr.write("Query error: %s\n" % e)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user