41 lines
1.5 KiB
PHP
41 lines
1.5 KiB
PHP
<?php
|
|
/**
|
|
* 硬碎片公共逻辑:完整度计算(按非空字段直接计数)+ 内容摘要
|
|
* 被 hard_list.php 与 hard_detail.php 共用
|
|
*/
|
|
|
|
/** 硬碎片可统计字段(核心+重要:企业名/联系人/手机/邮箱;品类与描述已从表中移除) */
|
|
const HARD_FIELDS = ['company_name', 'person_name', 'contact_phone', 'contact_email'];
|
|
const HARD_LABELS = [
|
|
'company_name' => '公司名称', 'person_name' => '联系人', 'contact_phone' => '电话',
|
|
'contact_email' => '邮箱',
|
|
];
|
|
|
|
/** 计算硬碎片完整度:已填字段数 ÷ 总可填字段数 × 100% */
|
|
function hardCompleteness($row)
|
|
{
|
|
$filled = 0;
|
|
$missing = [];
|
|
foreach (HARD_FIELDS as $field) {
|
|
if ($row[$field] !== null && trim((string)$row[$field]) !== '') {
|
|
$filled++;
|
|
} else {
|
|
$missing[] = $field;
|
|
}
|
|
}
|
|
$total = count(HARD_FIELDS);
|
|
$score = $total > 0 ? (int)round($filled / $total * 100) : 0;
|
|
return ['score' => $score, 'missing' => $missing];
|
|
}
|
|
|
|
/** 内容摘要:拼接已有关键信息 */
|
|
function hardSummary($row)
|
|
{
|
|
$parts = [];
|
|
if (!empty($row['company_name'])) $parts[] = '公司:' . $row['company_name'];
|
|
if (!empty($row['person_name'])) $parts[] = '联系人:' . $row['person_name'];
|
|
if (!empty($row['contact_phone'])) $parts[] = '手机:' . $row['contact_phone'];
|
|
if (!empty($row['contact_email'])) $parts[] = '邮箱:' . $row['contact_email'];
|
|
return implode(' ', $parts);
|
|
}
|