优化: 增强高风速功率曲线清洗

- 自动估算每台风机平台功率和平台起始风速
- 增加高风速低功率、曲线残差和严格平台过滤
- 前端展示估算参数并更新接口与设计文档
This commit is contained in:
cloud
2026-07-14 16:10:29 +08:00
parent 50b8111fd9
commit ce58c35c34
5 changed files with 462 additions and 13 deletions
+16
View File
@@ -334,6 +334,22 @@ select:focus {
white-space: nowrap;
}
.paramStrip {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: -4px 0 12px;
}
.paramStrip span {
border: 1px solid #2a2a3a;
border-radius: 6px;
background: #191927;
color: #cbd5e1;
padding: 5px 8px;
font-size: 12px;
}
.tableWrap {
max-height: 420px;
overflow: auto;
+23 -7
View File
@@ -348,6 +348,9 @@ export default function HomePage() {
const selectedFiltered = selectedFan && result?.filtered_points
? result.filtered_points[selectedFan] || []
: [];
const selectedEstimatedParams = selectedFan && result?.estimated_params
? result.estimated_params[selectedFan]
: null;
const totalRows = useMemo(
() => files.reduce((sum, file) => sum + file.row_count, 0),
@@ -360,9 +363,9 @@ export default function HomePage() {
setReading(true);
setError('');
setResult(null);
setSelectedFan('');
setShowFiltered(false);
setResult(null);
setSelectedFan('');
setShowFiltered(false);
try {
const parsedFiles = [];
for (const file of selectedFiles) {
@@ -387,8 +390,8 @@ export default function HomePage() {
let jobId = '';
setSubmitting(true);
setError('');
setResult(null);
setShowFiltered(false);
setResult(null);
setShowFiltered(false);
setProgress('正在准备标准化数据');
try {
@@ -417,8 +420,6 @@ export default function HomePage() {
const calculation = await finishWindJob({
job_id: jobId,
options: {
rated_power: 4800,
rated_wind_speed: 18,
power_step: 5,
cleaning_wind_speed_step: 0.25,
curve_wind_speed_step: 0.5,
@@ -589,6 +590,21 @@ export default function HomePage() {
</select>
</div>
</div>
{selectedEstimatedParams && (
<div className="paramStrip">
<span>
自动平台功率
{Number(selectedEstimatedParams.rated_power || 0).toFixed(0)}
{' kW'}
</span>
<span>
平台起始风速
{Number(selectedEstimatedParams.rated_wind_speed || 0).toFixed(1)}
{' m/s'}
</span>
<span>来源{selectedEstimatedParams.source || 'fallback'}</span>
</div>
)}
<PowerCurveChart
points={selectedPoints}
scatterPoints={selectedScatter}