rename: data_mart → sage_datamark
This commit is contained in:
parent
4d24094048
commit
8aafb31ef4
2
build.sh
2
build.sh
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
echo "[data_mart] build done"
|
echo "[sage_datamark] build done"
|
||||||
|
|||||||
@ -1,2 +0,0 @@
|
|||||||
"""data_mart — Sage 数据集市模块"""
|
|
||||||
from .init import load_data_mart
|
|
||||||
@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# data_mart has no CRUD tables - skip xls2ui
|
# sage_datamark has no CRUD tables - skip xls2ui
|
||||||
echo "[data_mart] json build skipped (no CRUD)"
|
echo "[sage_datamark] json build skipped (no CRUD)"
|
||||||
|
|||||||
@ -3,10 +3,10 @@ requires = ["setuptools>=61", "wheel"]
|
|||||||
build-backend = "setuptools.build_meta"
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "data_mart"
|
name = "sage_datamark"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Sage 数据集市 — 模型性能指标、供应商性价比、多维度分析"
|
description = "Sage 数据集市 — 模型性能指标、供应商性价比、多维度分析"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
|
|
||||||
[tool.setuptools.packages.find]
|
[tool.setuptools.packages.find]
|
||||||
include = ["data_mart*"]
|
include = ["sage_datamark*"]
|
||||||
|
|||||||
2
sage_datamark/__init__.py
Normal file
2
sage_datamark/__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
"""sage_datamark — Sage 数据集市模块"""
|
||||||
|
from .init import load_sage_datamark
|
||||||
@ -11,7 +11,7 @@ from appPublic.log import debug, info, exception
|
|||||||
from sqlor.dbpools import DBPools
|
from sqlor.dbpools import DBPools
|
||||||
from ahserver.serverenv import ServerEnv
|
from ahserver.serverenv import ServerEnv
|
||||||
|
|
||||||
MODULE_NAME = "data_mart"
|
MODULE_NAME = "sage_datamark"
|
||||||
|
|
||||||
|
|
||||||
async def ensure_tables(sor):
|
async def ensure_tables(sor):
|
||||||
@ -129,7 +129,7 @@ async def sync_call_fact(sor, last_sync=None):
|
|||||||
ORDER BY lu.use_time
|
ORDER BY lu.use_time
|
||||||
"""
|
"""
|
||||||
rows = await sor.sqlExe(sql, {'last_sync': last_sync})
|
rows = await sor.sqlExe(sql, {'last_sync': last_sync})
|
||||||
info('data_mart ETL: syncing ' + str(len(rows)) + ' rows from ' + last_sync)
|
info('sage_datamark ETL: syncing ' + str(len(rows)) + ' rows from ' + last_sync)
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
for r in rows:
|
for r in rows:
|
||||||
@ -168,7 +168,7 @@ async def sync_call_fact(sor, last_sync=None):
|
|||||||
await sor.C('dm_model_call_fact', ns)
|
await sor.C('dm_model_call_fact', ns)
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
info('data_mart ETL: inserted ' + str(count) + ' new rows')
|
info('sage_datamark ETL: inserted ' + str(count) + ' new rows')
|
||||||
return count
|
return count
|
||||||
|
|
||||||
|
|
||||||
@ -195,7 +195,7 @@ async def aggregate_daily_perf(sor, stat_date=None):
|
|||||||
GROUP BY call_date, llmid, model, catelogid, providerid, ownerid, userorgid
|
GROUP BY call_date, llmid, model, catelogid, providerid, ownerid, userorgid
|
||||||
"""
|
"""
|
||||||
rows = await sor.sqlExe(sql, {'stat_date': stat_date})
|
rows = await sor.sqlExe(sql, {'stat_date': stat_date})
|
||||||
info('data_mart AGG: aggregating ' + str(len(rows)) + ' groups for ' + stat_date)
|
info('sage_datamark AGG: aggregating ' + str(len(rows)) + ' groups for ' + stat_date)
|
||||||
|
|
||||||
for r in rows:
|
for r in rows:
|
||||||
r = DictObject(r)
|
r = DictObject(r)
|
||||||
@ -1,11 +1,11 @@
|
|||||||
"""data_mart 模块初始化"""
|
"""sage_datamark 模块初始化"""
|
||||||
from ahserver.serverenv import ServerEnv
|
from ahserver.serverenv import ServerEnv
|
||||||
from appPublic.jsonConfig import getConfig
|
from appPublic.jsonConfig import getConfig
|
||||||
from appPublic.log import debug, exception
|
from appPublic.log import debug, exception
|
||||||
from sqlor.dbpools import DBPools
|
from sqlor.dbpools import DBPools
|
||||||
from .etl import sync_call_fact, aggregate_daily_perf, aggregate_provider_cost, ensure_tables
|
from .etl import sync_call_fact, aggregate_daily_perf, aggregate_provider_cost, ensure_tables
|
||||||
|
|
||||||
MODULE_NAME = "data_mart"
|
MODULE_NAME = "sage_datamark"
|
||||||
|
|
||||||
|
|
||||||
def get_dbname():
|
def get_dbname():
|
||||||
@ -14,7 +14,7 @@ def get_dbname():
|
|||||||
|
|
||||||
|
|
||||||
async def api_model_perf(sor, params_kw=None):
|
async def api_model_perf(sor, params_kw=None):
|
||||||
"""模型性能统计 API — POST /data_mart/api/model_perf.dspy"""
|
"""模型性能统计 API — POST /sage_datamark/api/model_perf.dspy"""
|
||||||
model = params_kw.get('model') if params_kw else None
|
model = params_kw.get('model') if params_kw else None
|
||||||
stat_date = params_kw.get('date') if params_kw else None
|
stat_date = params_kw.get('date') if params_kw else None
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ async def api_model_perf(sor, params_kw=None):
|
|||||||
|
|
||||||
|
|
||||||
async def api_provider_roi(sor, params_kw=None):
|
async def api_provider_roi(sor, params_kw=None):
|
||||||
"""供应商性价比 API — POST /data_mart/api/provider_roi.dspy"""
|
"""供应商性价比 API — POST /sage_datamark/api/provider_roi.dspy"""
|
||||||
model = params_kw.get('model') if params_kw else None
|
model = params_kw.get('model') if params_kw else None
|
||||||
stat_date = params_kw.get('date') if params_kw else None
|
stat_date = params_kw.get('date') if params_kw else None
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ async def api_provider_roi(sor, params_kw=None):
|
|||||||
|
|
||||||
|
|
||||||
async def api_call_detail(sor, params_kw=None):
|
async def api_call_detail(sor, params_kw=None):
|
||||||
"""调用明细 API — POST /data_mart/api/call_detail.dspy"""
|
"""调用明细 API — POST /sage_datamark/api/call_detail.dspy"""
|
||||||
stat_date = (params_kw or {}).get('date')
|
stat_date = (params_kw or {}).get('date')
|
||||||
userorgid = (params_kw or {}).get('userorgid')
|
userorgid = (params_kw or {}).get('userorgid')
|
||||||
|
|
||||||
@ -70,9 +70,9 @@ async def api_call_detail(sor, params_kw=None):
|
|||||||
return [dict(r) for r in rows]
|
return [dict(r) for r in rows]
|
||||||
|
|
||||||
|
|
||||||
def load_data_mart():
|
def load_sage_datamark():
|
||||||
env = ServerEnv()
|
env = ServerEnv()
|
||||||
env.api_model_perf = api_model_perf
|
env.api_model_perf = api_model_perf
|
||||||
env.api_provider_roi = api_provider_roi
|
env.api_provider_roi = api_provider_roi
|
||||||
env.api_call_detail = api_call_detail
|
env.api_call_detail = api_call_detail
|
||||||
debug("[data_mart] registered API endpoints")
|
debug("[sage_datamark] registered API endpoints")
|
||||||
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""data_mart 模块 load_path"""
|
"""sage_datamark 模块 load_path"""
|
||||||
import os, sys, subprocess
|
import os, sys, subprocess
|
||||||
|
|
||||||
MOD = "data_mart"
|
MOD = "sage_datamark"
|
||||||
SAGE_ROOT = os.environ.get("SAGE_ROOT", os.path.expanduser("~/sage"))
|
SAGE_ROOT = os.environ.get("SAGE_ROOT", os.path.expanduser("~/sage"))
|
||||||
PYTHON = os.path.join(SAGE_ROOT, "py3", "bin", "python")
|
PYTHON = os.path.join(SAGE_ROOT, "py3", "bin", "python")
|
||||||
SET_PERM = os.path.join(SAGE_ROOT, "set_role_perm.py")
|
SET_PERM = os.path.join(SAGE_ROOT, "set_role_perm.py")
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 模型性能统计 API
|
# 模型性能统计 API
|
||||||
env = request._run_ns
|
env = request._run_ns
|
||||||
async with get_sor_context(env, 'data_mart') as sor:
|
async with get_sor_context(env, 'sage_datamark') as sor:
|
||||||
rows = await env.api_model_perf(sor, params_kw)
|
rows = await env.api_model_perf(sor, params_kw)
|
||||||
return json.dumps(rows, ensure_ascii=False)
|
return json.dumps(rows, ensure_ascii=False)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 供应商性价比 API
|
# 供应商性价比 API
|
||||||
env = request._run_ns
|
env = request._run_ns
|
||||||
async with get_sor_context(env, 'data_mart') as sor:
|
async with get_sor_context(env, 'sage_datamark') as sor:
|
||||||
rows = await env.api_provider_roi(sor, params_kw)
|
rows = await env.api_provider_roi(sor, params_kw)
|
||||||
return json.dumps(rows, ensure_ascii=False)
|
return json.dumps(rows, ensure_ascii=False)
|
||||||
|
|||||||
@ -6,16 +6,16 @@
|
|||||||
"widgettype": "MenuItem",
|
"widgettype": "MenuItem",
|
||||||
"options": {
|
"options": {
|
||||||
"label": "模型性能",
|
"label": "模型性能",
|
||||||
"url": "{{entire_url('/data_mart/index.ui')}}",
|
"url": "{{entire_url('/sage_datamark/index.ui')}}",
|
||||||
"icon": "{{entire_url('/data_mart/imgs/perf.svg')}}"
|
"icon": "{{entire_url('/sage_datamark/imgs/perf.svg')}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widgettype": "MenuItem",
|
"widgettype": "MenuItem",
|
||||||
"options": {
|
"options": {
|
||||||
"label": "供应商性价比",
|
"label": "供应商性价比",
|
||||||
"url": "{{entire_url('/data_mart/provider_roi.ui')}}",
|
"url": "{{entire_url('/sage_datamark/provider_roi.ui')}}",
|
||||||
"icon": "{{entire_url('/data_mart/imgs/roi.svg')}}"
|
"icon": "{{entire_url('/sage_datamark/imgs/roi.svg')}}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user