74 lines
2.6 KiB
Python
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() |