|
...
|
...
|
@@ -409,6 +409,7 @@ class UpdateSeoTdk extends Command |
|
|
|
}
|
|
|
|
|
|
|
|
public function getPrompt($project_id, $prompt, $table, $data){
|
|
|
|
// topic
|
|
|
|
if(strpos($prompt, '{topic}') !== false){
|
|
|
|
$topic = $data[$this->topic_fields[$table]] ?? '';
|
|
|
|
if(!$topic){
|
|
...
|
...
|
@@ -417,6 +418,7 @@ class UpdateSeoTdk extends Command |
|
|
|
}
|
|
|
|
$prompt = str_replace('{topic}', $topic, $prompt);
|
|
|
|
}
|
|
|
|
// keyword
|
|
|
|
if(strpos($prompt, '{keyword}') !== false) {
|
|
|
|
$keyword = $this->mainKeywords($project_id, 1);
|
|
|
|
if(!$keyword){
|
|
...
|
...
|
@@ -425,6 +427,7 @@ class UpdateSeoTdk extends Command |
|
|
|
}
|
|
|
|
$prompt = str_replace('{keyword}', $keyword, $prompt);
|
|
|
|
}
|
|
|
|
// company name
|
|
|
|
if(strpos($prompt, '{company name}') !== false) {
|
|
|
|
$company_name = $this->companyName($project_id);
|
|
|
|
if(!$company_name){
|
|
...
|
...
|
@@ -433,17 +436,71 @@ class UpdateSeoTdk extends Command |
|
|
|
}
|
|
|
|
$prompt = str_replace('{company name}', $company_name, $prompt);
|
|
|
|
}
|
|
|
|
// company detail
|
|
|
|
if(strpos($prompt, '{company detail}') !== false) {
|
|
|
|
$company_detail = $this->companyName($project_id, 'company_detail');
|
|
|
|
if(!$company_detail){
|
|
|
|
echo '公司英文描述为空 跳过' . PHP_EOL;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
$prompt = str_replace('{company detail}', $company_detail, $prompt);
|
|
|
|
}
|
|
|
|
// 前缀关键词
|
|
|
|
if(preg_match_all("/\{qz_(\d+)\}/", $prompt, $matches)) {
|
|
|
|
foreach ($matches[0] as $key=>$val) {
|
|
|
|
$keyword = $this->getPrefixKeyword($project_id, 'prefix', $matches[1][$key]);
|
|
|
|
if(!$keyword){
|
|
|
|
echo '前缀关键词为空 跳过' . PHP_EOL;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
$prompt = str_replace($val, $keyword, $prompt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 后缀关键词
|
|
|
|
if(preg_match_all("/\{hz_(\d+)\}/", $prompt, $matches)) {
|
|
|
|
foreach ($matches[0] as $key=>$val) {
|
|
|
|
$keyword = $this->getPrefixKeyword($project_id, 'suffix', $matches[1][$key]);
|
|
|
|
if(!$keyword){
|
|
|
|
echo '前缀关键词为空 跳过' . PHP_EOL;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
$prompt = str_replace($val, $keyword, $prompt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$prompt .= '.Please answer in ' . $this->getLang();
|
|
|
|
return $prompt;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取前后缀
|
|
|
|
* @param $project_id
|
|
|
|
* @param $type
|
|
|
|
* @param $num
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getPrefixKeyword($project_id, $type, $num)
|
|
|
|
{
|
|
|
|
$str = '';
|
|
|
|
$info = $this->getDeployOptimize($project_id);
|
|
|
|
if (!empty($info['keyword_' . $type])) {
|
|
|
|
$fix_keyword = explode(",", $info['keyword_' . $type]);
|
|
|
|
//随机取
|
|
|
|
shuffle($fix_keyword);
|
|
|
|
if (count($fix_keyword) < $num)
|
|
|
|
return $str;
|
|
|
|
$keyword = array_slice($fix_keyword, 0, $num);
|
|
|
|
$str = implode(", ", $keyword);
|
|
|
|
}
|
|
|
|
return $str;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function getDeployOptimize($project_id){
|
|
|
|
$cache_key = 'project_deploy_optimize_info_' . $project_id;
|
|
|
|
$info = Cache::get($cache_key);
|
|
|
|
if(!$info){
|
|
|
|
$projectOptimizeModel = new DeployOptimize();
|
|
|
|
$info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description']);
|
|
|
|
$info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description', 'keyword_prefix', 'keyword_suffix']);
|
|
|
|
$projectKeywordModel = new ProjectKeyword();
|
|
|
|
$keywordInfo = $projectKeywordModel->read(['project_id'=>$project_id]);
|
|
|
|
$info['main_keyword'] = '';
|
|
...
|
...
|
@@ -466,6 +523,7 @@ class UpdateSeoTdk extends Command |
|
|
|
{
|
|
|
|
$data = [
|
|
|
|
'product_long_description',
|
|
|
|
'company_detail'
|
|
|
|
];
|
|
|
|
$info = $this->getDeployOptimize($project_id);
|
|
|
|
if (in_array($key, $data)) {
|
...
|
...
|
|