refactor: 前端 SSE 鉴权改造与公共逻辑抽取,修复统计分组空指针
- SSE 由 EventSource 改为 fetch 流式读取(新增 utils/sse.ts),token 走 Authorization 请求头,避免令牌经 URL 泄露到访问日志 - 抽取 useKeywordHistory,统一备注关键词与 AI 查询历史的读写、下拉与清空 - 抽取 renderCategoryLabel 至 utils/render.ts,消除多处重复实现 - 导出改用统一 request 实例(自动携带鉴权头),并将 blob 错误体解析为业务异常 - 新增 untagged 筛选参数;AI 智能查询改为弹窗入口并补充三语文案 - 分类/标签/邮箱/交易表单补充提交 loading,避免重复提交 - 交易时间改用本地格式化,修复 toISOString 造成的时区偏移 - 移除 Naive UI 全局注册;修正 NLog 的 rows 属性为 lines - 修复未分类记录分组时 categoryMap.get(null) 抛出的 NPE
This commit is contained in:
@@ -328,7 +328,10 @@ public class StatisticsServiceImpl implements StatisticsService {
|
||||
Map<Long, Category> categoryMap, BigDecimal income, BigDecimal expense) {
|
||||
switch (dimension) {
|
||||
case CATEGORY -> {
|
||||
Category category = categoryMap.get(parseLong(key));
|
||||
// 未分类记录的分组键无法解析为分类 ID,此时 categoryMap 可能为不可变空 Map,
|
||||
// 直接 get(null) 会抛 NPE,故先判空
|
||||
Long categoryId = parseLong(key);
|
||||
Category category = categoryId == null ? null : categoryMap.get(categoryId);
|
||||
vo.setName(category != null ? category.getName() : "未分类");
|
||||
vo.setIcon(category != null ? category.getIcon() : "");
|
||||
vo.setType(category != null ? category.getType()
|
||||
|
||||
Reference in New Issue
Block a user