rename: data_mart → sage_datamark

This commit is contained in:
yumoqing 2026-07-17 17:20:13 +08:00
parent 4d24094048
commit 8aafb31ef4
11 changed files with 26 additions and 26 deletions

View File

@ -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"

View File

@ -1,2 +0,0 @@
"""data_mart — Sage 数据集市模块"""
from .init import load_data_mart

View File

@ -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)"

View File

@ -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*"]

View File

@ -0,0 +1,2 @@
"""sage_datamark — Sage 数据集市模块"""
from .init import load_sage_datamark

View File

@ -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)

View File

@ -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")

View File

@ -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")

View File

@ -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)

View File

@ -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)

View File

@ -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')}}"
} }
} }
] ]