package com.smtaiserver.smtaiserver.javaai.metrics.base;
|
|
import java.util.HashSet;
|
import java.util.Map;
|
import java.util.Set;
|
|
import org.apache.commons.text.similarity.JaccardSimilarity;
|
import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
|
import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord;
|
import com.smtaiserver.smtaiserver.javaai.SMTJavaAIError;
|
import com.smtaiserver.smtaiserver.javaai.ast.ASTDBMap;
|
import com.smtaiserver.smtaiserver.javaai.ast.ASTResult;
|
import com.smtaiserver.smtaiserver.javaai.duckdb.DuckResult;
|
import com.smtservlet.util.Json;
|
import com.smtservlet.util.SMTStatic;
|
|
public abstract class SMTMetricsDef
|
{
|
protected String _id;
|
protected String _title;
|
protected String _unit;
|
protected Set<String> _setMatch;
|
|
public abstract Map<String, SMTDimensionDef> getDimensionMap();
|
|
public void initInstance(DBRecord rec) throws Exception
|
{
|
_id = rec.getString("metrics_id");
|
_title = rec.getString("metrics_title");
|
_unit = rec.getString("metrics_unit");
|
String sMatch = rec.getString("metrics_match");
|
|
if(SMTStatic.isNullOrEmpty(_unit))
|
{
|
_unit = "";
|
}
|
_setMatch = new HashSet<>();
|
if(!SMTStatic.isNullOrEmpty(sMatch))
|
{
|
for(Json jsonMatch : Json.read(sMatch).asJsonList())
|
{
|
_setMatch.add(jsonMatch.asString());
|
}
|
|
}
|
}
|
|
public String getUnitName()
|
{
|
return _unit;
|
}
|
|
public Set<String> getMetricsAliasSet()
|
{
|
return _setMatch;
|
}
|
|
public void addMetricsAliasToSet(Set<String> r_set)
|
{
|
for(String alias : _setMatch)
|
{
|
r_set.add(alias);
|
}
|
|
}
|
|
public double matchMetrics(String value, JaccardSimilarity jaccardSimilarity)
|
{
|
if(_setMatch == null)
|
return -1;
|
|
if(_setMatch.contains(value))
|
return 1;
|
|
double maxSim = 0;
|
for(String str : _setMatch)
|
{
|
double curSim = jaccardSimilarity.apply(value, str);
|
if(curSim >= 0.8 && maxSim < curSim)
|
maxSim = curSim;
|
}
|
|
return maxSim;
|
}
|
|
public void afterLoading(Map<String, SMTMetricsDef> mapMetrics) throws Exception
|
{
|
}
|
|
public String getId()
|
{
|
return _id;
|
}
|
|
public String getTitle()
|
{
|
return _title;
|
}
|
|
public boolean isTimeValues()
|
{
|
return true;
|
}
|
|
public boolean isChartValues()
|
{
|
return false;
|
}
|
|
public void queryUnknowQuestionList(JaccardSimilarity jaccardSimilarity, String keyword, SMTAIServerRequest tranReq) throws Exception
|
{
|
}
|
|
// TODO 去掉旧版函数
|
public SMTJavaAIError queryMetrics(String jsonPath, ASTDBMap dbMap, Json jsonAST, Map<String, String> extArg, SMTAIServerRequest tranReq, ASTResult r_parentResult) throws Exception
|
{
|
throw new Exception("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
|
}
|
|
// TODO 新版函数做成抽象函数
|
public SMTJavaAIError queryMetrics(String jsonPath, ASTDBMap dbMap, Json jsonAST, Map<String, String> extArg, SMTAIServerRequest tranReq, DuckResult r_parentResult) throws Exception
|
{
|
throw new Exception("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
|
}
|
}
|