Files
ln-bi/src/server/types.ts
kkfluous 2575778293 feat: 后端用户认证和权限过滤
- 新增 auth 模块:jumpToken 代理交换、用户信息获取、JWT 签发
- 三级权限:full(所有权限/数智中心/BI-Leader)、department(BI-Leader-Dep)、personal
- 添加 managerId 到车辆数据模型,支持个人级别按 userId 精确过滤
- auth 中间件保护所有 /api/* 端点(跳过 /api/health 和 /api/auth/*)
- 所有路由集成 filterByPermission 权限过滤

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:35:29 +08:00

152 lines
3.3 KiB
TypeScript

export interface VehicleRow {
id: string;
车牌号: string;
vin: string;
车辆品牌: string;
车辆型号: string;
车辆颜色: string;
租赁公司: string;
车辆归属状态Label: string | null;
车辆型号Label: string | null;
库存区域: string | null;
车辆租赁状态: string | null;
车辆租赁状态Label: string | null;
是否营运: number;
: string | null;
: string | null;
纬度: number | null;
经度: number | null;
车辆品牌Label: string | null;
合同ID: number | null;
合同编码: string | null;
客户名称: string | null;
合同归属公司: string | null;
合同归属部门: string | null;
主体: string | null;
项目名称: string | null;
客户经理: string | null;
经理ID: string | null;
}
export interface Vehicle {
id: string;
plateNumber: string;
vin: string;
type: string;
model: string;
color: string;
location: string;
region: string;
province: string | null;
city: string | null;
status: 'Operating' | 'Inventory' | 'Pending' | 'Abnormal';
ownership: string;
rentCompany: string;
contractNo: string | null;
customerName: string | null;
orgName: string | null;
departmentName: string | null;
subjectOrg: string | null;
projectName: string | null;
customerManager: string | null;
managerId: string | null;
brandLabel: string | null;
}
export interface SummaryData {
totalAssets: number;
operating: {
total: number;
self: number;
leased: number;
public: number;
hanging: number;
};
inventory: {
total: number;
inStock: number;
abnormal: number;
};
pendingDelivery: number;
weeklyNew: number;
weeklyRemoved: number;
weeklyDelivered: number;
weeklyReturned: number;
weeklyReplaced: number;
}
export interface TypeSummary {
type: string;
totalAssets: number;
totalInventory: number;
totalOperating: number;
inventoryRegions: Record<string, number>;
pending: number;
weeklyDelivered: number;
weeklyReturned: number;
weeklyReplaced: number;
models: ModelSummary[];
}
export interface ModelSummary {
model: string;
total: number;
inventory: number;
inventoryRegions: Record<string, number>;
pending: number;
operating: number;
weeklyDelivered: number;
weeklyReturned: number;
weeklyReplaced: number;
batches: BatchSummary[];
}
export interface BatchSummary {
batch: string;
total: number;
inventory: number;
inventoryRegions: Record<string, number>;
pending: number;
operating: number;
weeklyDelivered: number;
weeklyReturned: number;
weeklyReplaced: number;
}
export interface BatchGroup {
batch: string;
total: number;
inventory: number;
inventoryRegions: Record<string, number>;
pending: number;
operating: number;
weeklyDelivered: number;
weeklyReturned: number;
weeklyReplaced: number;
models: {
model: string;
type: string;
total: number;
inventory: number;
inventoryRegions: Record<string, number>;
pending: number;
operating: number;
weeklyDelivered: number;
weeklyReturned: number;
weeklyReplaced: number;
}[];
}
export interface InventoryTypeSummary {
type: string;
totalAssets: number;
totalInventory: number;
models: {
model: string;
totalAssets: number;
totalInventory: number;
regions: Record<string, number>;
}[];
regionSubtotals: Record<string, number>;
}