weizong song 4 months ago
parent 0310045caa
commit cd88c69a7b

@ -13,6 +13,9 @@ use Illuminate\Support\Arr;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
/**
* 供需模块测试数据生成器
*/
class SupplyDemandTestDataGenerator
{
/**
@ -51,10 +54,10 @@ class SupplyDemandTestDataGenerator
$supplyDemand = new SupplyDemand();
$supplyDemand->user_id = $publisher->id;
$supplyDemand->title = $faker->sentence(4);
$supplyDemand->title = $this->generateTechBusinessTitle($faker);
$supplyDemand->type = $faker->randomElement([1, 2]);
$supplyDemand->content = $faker->paragraphs($faker->numberBetween(1, 3), true);
$supplyDemand->tag = implode(',', $faker->randomElements(['采购', '合作', '招聘', '渠道', '推广', '技术', '投资'], $faker->numberBetween(1, 3)));
$supplyDemand->content = $this->generateContentFromTitle($supplyDemand->title, $supplyDemand->type, $faker);
$supplyDemand->tag = implode(',', $this->generateTagsFromTitle($supplyDemand->title, $faker));
$supplyDemand->wechat = 'wx_' . $faker->bothify('??####');
$supplyDemand->mobile = $faker->phoneNumber();
$supplyDemand->email = $faker->safeEmail();
@ -176,6 +179,88 @@ class SupplyDemandTestDataGenerator
}
});
}
/**
* 生成科技/商业取向的标题
*/
private function generateTechBusinessTitle($faker): string
{
$regions = ['华东', '华南', '华北', '西南', '中原', '长三角', '珠三角'];
$industries = ['制造', '零售', '医药', '教育', '金融', '能源', '物流', '政企'];
$materials = ['光刻胶', '硅片', 'CMP 抛光液', '陶瓷基板'];
$domains = ['电商推荐', '客服质检', '金融风控', '工业检测', '内容审核'];
$countries = ['新加坡', '印度尼西亚', '阿联酋', '沙特', '巴西', '墨西哥'];
$templates = [
'SaaS 渠道分销伙伴招募(' . $faker->randomElement($regions) . '',
'云计算成本优化服务对接(' . $faker->randomElement($industries) . '行业)',
'AI 数据标注外包合作(' . $faker->randomElement($domains) . '',
'跨境电商供应链合作(' . $faker->randomElement($countries) . '仓)',
'半导体材料采购需求(' . $faker->randomElement($materials) . '',
'新能源充电桩 OEM/ODM 代工合作',
'企业私有化部署 DevOps 顾问服务',
'工业物联网传感器批量采购',
'大模型微调服务(' . $faker->randomElement($domains) . '',
'移动端 SDK 联合推广与结算',
'本地化运营团队招募(' . $faker->randomElement($regions) . '',
'出海广告投放合作(' . $faker->randomElement($countries) . '',
'数据中台建设项目外包',
'企业安全渗透测试服务对接',
];
return $faker->randomElement($templates);
}
/**
* 基于标题生成结构化内容,围绕标题展开
* @param int $type 1=供应 2=需求
*/
private function generateContentFromTitle(string $title, int $type, $faker): string
{
$timeframeWeeks = $faker->numberBetween(2, 12);
$budget = $faker->randomElement(['5万-10万', '10万-30万', '30万-80万', '80万以上', '按效果结算']);
$scale = $faker->randomElement(['小规模试点', '区域级铺开', '全国推广', '跨境协同']);
$partner = $faker->randomElement(['渠道商', 'ISV', '系统集成商', '服务外包商', '硬件厂商', '联合营销伙伴']);
$kpi = $faker->randomElement(['留存率', '转化率', '交付周期', '单点成本', '渠道覆盖']);
$roleLine = $type === 1
? '供给能力:我们可提供成熟方案/产品/产能,支持灵活对接与深度合作。'
: '需求说明:我们需要优质方案/资源/产能,期待高效、稳定的交付能力。';
$sections = [
"【项目标题】{$title}",
'项目背景:' . $faker->realText($faker->numberBetween(40, 80)),
$roleLine,
'合作模式:' . $faker->randomElement(['佣金', '代理', '分销', '联合投放', '项目外包', '里程碑结算']),
"目标指标:重点关注{$kpi},预计{$timeframeWeeks}周达到{$scale}阶段性目标。",
"预算与周期:预算 {$budget},计划周期 {$timeframeWeeks} 周。",
"适配伙伴:优先 {$partner},具备行业交付经验者加分。",
'补充信息:' . $faker->realText($faker->numberBetween(40, 80)),
];
return implode("\n", $sections);
}
/**
* 根据标题提取/生成标签
* @return array<string>
*/
private function generateTagsFromTitle(string $title, $faker): array
{
$dictionary = ['AI', 'SaaS', '云计算', '大模型', '供应链', '半导体', '新能源', '跨境电商', '营销', '渠道', 'OEM', 'ODM', '物联网', '安全', '出海', '数据中台', 'DevOps'];
$matched = [];
foreach ($dictionary as $keyword) {
if (mb_stripos($title, $keyword) !== false) {
$matched[] = $keyword;
}
}
$extra = $faker->randomElements($dictionary, $faker->numberBetween(0, 2));
$tags = array_values(array_unique(array_merge($matched, $extra)));
if (empty($tags)) {
$tags = $faker->randomElements($dictionary, $faker->numberBetween(1, 3));
}
return $tags;
}
}

Loading…
Cancel
Save