refactor(stage16): 里程域移入 repository,后端分层全部完成
改动
- 新增 mileage/repository.ts:18 个查询函数,覆盖
vehicle-info(含搬走的 VEHICLE_INFO_SQL 共享常量)、trend、监控缓存、targets(8 条)、
daily-report-store(5 条)、daily-report-service。
- 6 个含 SQL 的文件改为调用 repository;路由/服务层不再出现 SQL 文本。
- 日报写入的两个函数改为返回 affectedRows(调用方本来只用它),而不是行数组。
- 架构守护的"已完整分层"清单加入 mileage —— 至此八个域全部在守护范围内。
SQL 保持性验证
- 逐字比对:改造前 6 个文件里的 19 条 SQL 字面量,除"动态 INSERT 关键字"一处外,
全部在 repository.ts 中原样出现。
- 那一处是 `${insert} INTO ${TABLE}`(insert 为 'REPLACE' | 'INSERT IGNORE'),
改为 `${replace ? "REPLACE" : "INSERT IGNORE"}`;已渲染两个分支与原文本逐字比对,均为 identical。
验证
- 全量 lint / test(191) / build 全绿,可达性 0 未引用文件。
- 里程域的模型层测试(cache-model / oneos-model / daily-report-model)以及依赖里程的
调度、车辆热力图契约测试全部通过。
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { loadReportAssessmentRows } from './repository.js';
|
||||
import type { RowDataPacket } from 'mysql2';
|
||||
import pool from '../../db/mysql.js';
|
||||
import type {
|
||||
@@ -123,30 +124,7 @@ function shanghaiIsoNow(): string {
|
||||
}
|
||||
|
||||
async function fetchAssessmentRows(): Promise<AssessmentRow[]> {
|
||||
const [rows] = await pool.query<AssessmentRow[]>(`
|
||||
SELECT
|
||||
t.id AS target_id,
|
||||
t.target_name,
|
||||
t.annual_mileage_per_vehicle,
|
||||
v.id AS assessment_vehicle_id,
|
||||
v.plate_number,
|
||||
DATE_FORMAT(v.assessment_start_date, '%Y-%m-%d') AS assessment_start_date,
|
||||
DATE_FORMAT(v.assessment_end_date, '%Y-%m-%d') AS assessment_end_date,
|
||||
v.total_mileage_task,
|
||||
v.current_mileage,
|
||||
v.completion_rate,
|
||||
v.current_year_mileage_task,
|
||||
v.current_year_mileage,
|
||||
v.current_year_completion_rate,
|
||||
v.current_year_is_qualified,
|
||||
v.daily_required_mileage,
|
||||
DATE_FORMAT(v.current_year_assessment_end_date, '%Y-%m-%d') AS current_year_assessment_end_date
|
||||
FROM lingniu_prod.tab_mileage_assessment_target t
|
||||
JOIN lingniu_prod.tab_mileage_assessment_vehicle v
|
||||
ON v.target_id = t.id AND v.is_deleted = 0
|
||||
WHERE t.is_deleted = 0
|
||||
ORDER BY t.id, v.plate_number
|
||||
`);
|
||||
const rows = await loadReportAssessmentRows(pool) as unknown as AssessmentRow[];
|
||||
return rows;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user