修复: 升级框架并完善报告导出
- 升级 Drogon 和 Trantor,修复畸形请求导致的连接计数泄漏\n- 增加第三方框架版本校验与自动重建\n- 完善完整报告导出和接口文档
This commit is contained in:
@@ -75,6 +75,7 @@ const DEFAULT_SCHEMES = [
|
||||
generator_speed_k: 0.9,
|
||||
rotor_radius: 78,
|
||||
gearbox_ratio: 162,
|
||||
report_wind_speed_interval: 0.25,
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -85,6 +86,7 @@ const DEFAULT_SCHEMES = [
|
||||
grid_connected_speed: 1030,
|
||||
rated_generator_speed: 1755,
|
||||
rated_power: 2000,
|
||||
report_wind_speed_interval: 0.25,
|
||||
},
|
||||
},
|
||||
];
|
||||
@@ -93,6 +95,7 @@ const DEFAULT_SCHEME_TWO_PARAMS = {
|
||||
grid_connected_speed: '1030',
|
||||
rated_generator_speed: '1755',
|
||||
rated_power: '2000',
|
||||
report_wind_speed_interval: '0.25',
|
||||
};
|
||||
const DEFAULT_SCHEME_ONE_PARAMS = {
|
||||
rated_power: '4800',
|
||||
@@ -106,6 +109,7 @@ const DEFAULT_SCHEME_ONE_PARAMS = {
|
||||
generator_speed_k: '0.9',
|
||||
rotor_radius: '78',
|
||||
gearbox_ratio: '162',
|
||||
report_wind_speed_interval: '0.25',
|
||||
};
|
||||
const SCHEME_ONE_PARAM_FIELDS = [
|
||||
{ key: 'rated_power', label: '额定功率', unit: 'kW', min: '0', step: '0.1' },
|
||||
@@ -119,6 +123,7 @@ const SCHEME_ONE_PARAM_FIELDS = [
|
||||
{ key: 'generator_speed_k', label: '发电机转速系数 K', unit: '', min: '0', step: '0.01' },
|
||||
{ key: 'rotor_radius', label: '叶轮半径', unit: 'm', min: '0', step: '0.01' },
|
||||
{ key: 'gearbox_ratio', label: '齿轮箱传动比', unit: '', min: '0', step: '0.01' },
|
||||
{ key: 'report_wind_speed_interval', label: '报告公式风速区间半宽', unit: 'm/s', min: '0', step: '0.01' },
|
||||
];
|
||||
const CHART_STATE_KEY = 'wind_power_chart_state_v1';
|
||||
const DEFAULT_CHART_OPTIONS = {
|
||||
@@ -2045,6 +2050,8 @@ export default function HomePage() {
|
||||
chart_image: chartImageData || '',
|
||||
});
|
||||
downloadReportBlob(blob, selectedFan);
|
||||
setExportingReport(false);
|
||||
setReportExportProgress('');
|
||||
} catch (err) {
|
||||
const message = err.message || '导出完整报告失败';
|
||||
setError(message);
|
||||
@@ -2141,6 +2148,7 @@ export default function HomePage() {
|
||||
const gridConnectedSpeed = normalizeNumber(schemeTwoParams.grid_connected_speed);
|
||||
const ratedGeneratorSpeed = normalizeNumber(schemeTwoParams.rated_generator_speed);
|
||||
const ratedPower = normalizeNumber(schemeTwoParams.rated_power);
|
||||
const reportWindSpeedInterval = normalizeNumber(schemeTwoParams.report_wind_speed_interval);
|
||||
if (selectedScheme.id === DEFAULT_SCHEME_ID &&
|
||||
(!Number.isFinite(schemeOneValues.rated_power) || schemeOneValues.rated_power <= 0 ||
|
||||
!Number.isFinite(schemeOneValues.rated_wind_speed) || schemeOneValues.rated_wind_speed <= 0 ||
|
||||
@@ -2148,6 +2156,9 @@ export default function HomePage() {
|
||||
!Number.isFinite(schemeOneValues.cleaning_wind_speed_step) || schemeOneValues.cleaning_wind_speed_step <= 0 ||
|
||||
!Number.isFinite(schemeOneValues.rotor_radius) || schemeOneValues.rotor_radius <= 0 ||
|
||||
!Number.isFinite(schemeOneValues.gearbox_ratio) || schemeOneValues.gearbox_ratio <= 0 ||
|
||||
!Number.isFinite(schemeOneValues.report_wind_speed_interval) ||
|
||||
schemeOneValues.report_wind_speed_interval <= 0 ||
|
||||
schemeOneValues.report_wind_speed_interval > 2 ||
|
||||
['wind_speed_change_threshold', 'iqr_lower_multiplier', 'iqr_upper_multiplier',
|
||||
'minimum_generator_speed', 'generator_speed_k'].some((field) => (
|
||||
!Number.isFinite(schemeOneValues[field]) || schemeOneValues[field] < 0
|
||||
@@ -2155,9 +2166,11 @@ export default function HomePage() {
|
||||
throw new Error('方案一参数必须为合法数值,额定与步长参数、叶轮半径和传动比必须大于 0');
|
||||
}
|
||||
if (selectedScheme.id === SCHEME_TWO_ID &&
|
||||
(!Number.isFinite(gridConnectedSpeed) || gridConnectedSpeed <= 0 ||
|
||||
(!Number.isFinite(gridConnectedSpeed) || gridConnectedSpeed <= 0 ||
|
||||
!Number.isFinite(ratedGeneratorSpeed) || ratedGeneratorSpeed <= 0 ||
|
||||
!Number.isFinite(ratedPower) || ratedPower <= 0)) {
|
||||
!Number.isFinite(ratedPower) || ratedPower <= 0 ||
|
||||
!Number.isFinite(reportWindSpeedInterval) || reportWindSpeedInterval <= 0 ||
|
||||
reportWindSpeedInterval > 2)) {
|
||||
throw new Error('方案二参数必须为正数');
|
||||
}
|
||||
const data = await saveWindSchemeDescription(selectedScheme.id, {
|
||||
@@ -2168,6 +2181,7 @@ export default function HomePage() {
|
||||
grid_connected_speed: gridConnectedSpeed,
|
||||
rated_generator_speed: ratedGeneratorSpeed,
|
||||
rated_power: ratedPower,
|
||||
report_wind_speed_interval: reportWindSpeedInterval,
|
||||
},
|
||||
} : {}),
|
||||
});
|
||||
@@ -2288,6 +2302,9 @@ export default function HomePage() {
|
||||
schemeOneValues.cleaning_wind_speed_step <= 0 ||
|
||||
!Number.isFinite(schemeOneValues.rotor_radius) || schemeOneValues.rotor_radius <= 0 ||
|
||||
!Number.isFinite(schemeOneValues.gearbox_ratio) || schemeOneValues.gearbox_ratio <= 0 ||
|
||||
!Number.isFinite(schemeOneValues.report_wind_speed_interval) ||
|
||||
schemeOneValues.report_wind_speed_interval <= 0 ||
|
||||
schemeOneValues.report_wind_speed_interval > 2 ||
|
||||
['wind_speed_change_threshold', 'iqr_lower_multiplier', 'iqr_upper_multiplier',
|
||||
'minimum_generator_speed', 'generator_speed_k'].some((field) => (
|
||||
!Number.isFinite(schemeOneValues[field]) || schemeOneValues[field] < 0
|
||||
@@ -2299,10 +2316,13 @@ export default function HomePage() {
|
||||
const gridConnectedSpeed = normalizeNumber(schemeTwoParams.grid_connected_speed);
|
||||
const ratedGeneratorSpeed = normalizeNumber(schemeTwoParams.rated_generator_speed);
|
||||
const ratedPower = normalizeNumber(schemeTwoParams.rated_power);
|
||||
const reportWindSpeedInterval = normalizeNumber(schemeTwoParams.report_wind_speed_interval);
|
||||
if (isSchemeTwo &&
|
||||
(!Number.isFinite(gridConnectedSpeed) || gridConnectedSpeed <= 0 ||
|
||||
!Number.isFinite(ratedGeneratorSpeed) || ratedGeneratorSpeed <= 0 ||
|
||||
!Number.isFinite(ratedPower) || ratedPower <= 0)) {
|
||||
!Number.isFinite(ratedPower) || ratedPower <= 0 ||
|
||||
!Number.isFinite(reportWindSpeedInterval) || reportWindSpeedInterval <= 0 ||
|
||||
reportWindSpeedInterval > 2)) {
|
||||
setError('方案二需要填写并网转速、额定转速和额定功率,且必须为正数');
|
||||
return;
|
||||
}
|
||||
@@ -2354,6 +2374,7 @@ export default function HomePage() {
|
||||
grid_connected_speed: gridConnectedSpeed,
|
||||
rated_generator_speed: ratedGeneratorSpeed,
|
||||
rated_power: ratedPower,
|
||||
report_wind_speed_interval: reportWindSpeedInterval,
|
||||
} : {}),
|
||||
},
|
||||
});
|
||||
@@ -2520,6 +2541,22 @@ export default function HomePage() {
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</label>
|
||||
<label className="fieldControl">
|
||||
<span>报告公式风速区间半宽 (m/s)</span>
|
||||
<input
|
||||
type="number"
|
||||
min="0"
|
||||
max="2"
|
||||
step="0.01"
|
||||
value={schemeTwoParams.report_wind_speed_interval}
|
||||
onChange={(event) => handleSchemeTwoParamChange(
|
||||
'report_wind_speed_interval',
|
||||
event.target.value,
|
||||
)}
|
||||
disabled={submitting || savingScheme}
|
||||
placeholder="请输入"
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
)}
|
||||
<div className="schemeFooter">
|
||||
|
||||
Reference in New Issue
Block a user