Files
crm.twinpol.com/modules/EcmInvoiceOuts/ai/analysisAI.py
2025-09-02 23:04:35 +02:00

74 lines
2.6 KiB
Python

#!/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()