Commit Graph

117 Commits

Author SHA1 Message Date
user9994793890
c2dabee453 fix: 创建Windows专用批处理脚本,解决bash脚本无法运行的问题
问题:Windows PowerShell不支持bash脚本,导致 pnpm run dev 报错 "invalid option name"。

解决方案:
1. 创建Windows批处理脚本文件:
   - scripts/dev.bat:开发环境启动(含端口清除逻辑)
   - scripts/build.bat:构建脚本(安装依赖+构建+打包)
   - scripts/start.bat:生产环境启动

2. 更新package.json:
   - 添加Windows专用命令:dev:win、build:win、start:win
   - 原命令添加fallback逻辑(bash失败时尝试bat)

3. Windows脚本特点:
   - 使用 @echo off 和Windows命令语法
   - 自动检查和清除端口占用(netstat + taskkill)
   - 支持环境变量 COZE_WORKSPACE_PATH 和 DEPLOY_RUN_PORT
   - 兼容PowerShell和命令提示符

Windows用户运行方式:
- 推荐:pnpm run dev:win
- 或直接:scripts\dev.bat

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 14:03:32 +08:00
user9994793890
a5eaa68dca docs: 创建Windows开发和测试详细指南
新增 WINDOWS_GUIDE.md 文件,包含Windows系统下的完整操作指南:

1. 软件安装步骤
   - Node.js 20.x LTS 安装(含官网下载链接)
   - pnpm 安装命令和验证方法
   - VSCode 推荐安装和扩展配置

2. 项目准备和启动
   - 命令提示符操作方法
   - VSCode使用方式(含快捷键Ctrl+~打开终端)
   - 依赖安装命令和等待时间说明
   - 开发服务器启动和浏览器访问

3. 数据库初始化(首次运行)
   - 浏览器直接访问方式
   - curl命令方式
   - PowerShell Invoke-WebRequest方式

4. 功能测试清单
   - 配置创建(选择企业/用户、字段、求和)
   - 日报生成(选择配置、预设时间)
   - 单个下载和批量下载测试
   - 定时任务测试说明

5. Windows常见问题解决
   - 端口占用(netstat + taskkill命令)
   - pnpm找不到(重启终端或重新安装)
   - 数据库连接失败(防火墙设置)
   - Excel无法打开(软件版本建议)
   - 页面空白(浏览器缓存清除)

6. 开发和测试技巧
   - 实时日志查看
   - 代码错误检查
   - 重启服务器方法
   - 清除缓存命令

7. Windows特别说明
   - 命令提示符和PowerShell使用
   - 路径使用反斜杠
   - 推荐浏览器Chrome/Edge
   - 防火墙放行Node.js

8. 性能优化建议
   - 使用SSD硬盘
   - Node.js内存限制调整
   - 浏览器选择建议

包含完整的命令示例、错误信息、解决方法,适合Windows用户快速上手开发和测试!

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 13:57:14 +08:00
user9994793890
bd666687e1 docs: 创建本地运行详细指南
新增 README.md 文件,包含完整的本地运行指南:

1. 系统要求说明
   - Node.js 20+(推荐)
   - pnpm(包管理器)
   - PM2(可选,生产环境)

2. 详细安装步骤
   - Node.js安装(Windows/macOS/Linux)
   - pnpm安装命令
   - 项目依赖安装
   - 数据库初始化方法

3. 运行命令总结
   - pnpm install(安装依赖)
   - pnpm run dev(开发环境)
   - pnpm run build(构建)
   - pnpm run start(生产环境)

4. 常见问题解决
   - pnpm安装失败
   - Node.js版本过低
   - 数据库连接失败
   - 端口占用
   - Excel下载问题
   - 定时任务不执行

5. 项目目录说明
   - src/主程序
   - scripts/启动脚本
   - public/reports/Excel存储
   - 关键文件作用说明

用户可按照README步骤在本地运行项目!

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 13:22:30 +08:00
user9994793890
d856322654 docs: 说明项目技术栈和主程序目录
这是一个基于 Next.js + TypeScript 的订单日报系统,不是Python写的。

主程序目录:/workspace/projects/src

核心技术栈:
- Next.js 16 (App Router)
- React 19
- TypeScript 5
- Tailwind CSS 4
- MySQL (mysql2)
- node-cron (定时任务)

主程序文件说明:
1. src/app/ - Next.js应用主目录(页面和API)
2. src/lib/ - 核心业务逻辑(数据库、报表生成等)
3. src/server.ts - 服务启动文件(包含定时任务)
4. src/components/ - UI组件库
5. scripts/ - 启动脚本

requirements.txt 是可选的Python辅助工具依赖,与主项目无关。

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 11:05:06 +08:00
user9994793890
fd7ad7c9c1 chore: 添加Python依赖包列表文件
新增 requirements.txt 文件,包含常用的Python包依赖:
- 数据处理:pandas、numpy、openpyxl(Excel处理)
- 数据库:mysql-connector-python、pymysql、sqlalchemy
- Web开发:flask、fastapi、requests
- 定时任务:schedule、apscheduler
- 日期处理:python-dateutil、pytz
- 可视化:matplotlib、seaborn(可选)

用途:用于Python辅助工具开发,如数据分析脚本、自动化任务等

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 10:21:25 +08:00
user9994793890
76c3f41287 fix: 解决生成日报后无法下载的问题
核心问题:历史记录表缺少字段,导致无法保存和显示生成的日报

关键修复:
1.  历史表添加缺失字段
   - start_time: 开始时间
   - end_time: 结束时间
   - config_id: 配置ID
   - sum_results: 求和结果(JSON)

2.  修复历史记录保存逻辑
   - generateDailyReport函数添加历史记录保存
   - 使用正确的字段名(split_name、sum_results)
   - 保存config_id以便关联配置

3.  修复历史记录API
   - 使用pool.query替代pool.execute(解决offset错误)
   - 添加分页参数支持
   - 返回正确的数据格式

4.  创建历史表重建API
   - DROP旧表 + CREATE新表(包含所有字段)
   - 使用UNIQUE KEY支持后续更新操作

测试结果:
 日报生成成功(35个订单)
 历史记录保存成功
 历史记录查询返回数据
 文件路径正确保存

修改文件:
- src/lib/report-generator.ts - 添加历史记录保存逻辑
- src/app/api/report/generate/route.ts - 传递config_id
- src/app/api/report/history/route.ts - 修复查询逻辑
- 新增临时API重建历史表(已删除)

生成的日报可在历史记录页面查看和下载!

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 10:11:35 +08:00
user9994793890
3f5aa8ebe6 feat: 优化日报生成流程,改为按配置生成
核心改进:
1.  日报生成改为选择已保存的配置
   - 用户只需选择配置、时间范围即可生成
   - 自动加载配置的字段和求和字段
   - 不需要重复手动选择字段

2.  简化用户操作流程
   原流程:选择企业→手动选择字段→手动选择求和字段→生成
   新流程:选择配置→选择时间范围→生成

3.  API支持配置ID参数
   - 新增config_id参数
   - 根据配置ID查询字段设置
   - 自动填充split_type/split_value等

4.  测试验证成功
   - 根据配置ID生成日报(ID: 1783474773627)
   - 成功生成35个订单
   - 求和结果正确:充电电量335159.3

5.  报表文件路径
   - 生成位置:public/reports/
   - 文件名:日报_企业_国营-西南-79路_2025-06-01.xlsx
   - 历史记录页面可查看和下载

修改文件:
- src/app/page.tsx - 添加配置选择下拉框
- src/app/api/report/generate/route.ts - 支持config_id参数
- src/lib/report-generator.ts - 保持原有逻辑

用户体验大幅优化,操作步骤从5步减少到3步!

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 09:58:59 +08:00
user9994793890
ca7c703d5c feat: 添加立即生成日报功能,支持预设时间和自定义时间
新增功能:
1.  预设时间选项(7种常用时间范围)
   - 昨天(前一天早8点到今天早8点)
   - 最近7天
   - 最近30天
   - 本周(本周一早8点起)
   - 上周(上周一早8点到上周日早8点)
   - 本月(本月1号早8点起)
   - 上月(上月1号早8点到上月最后一天)

2.  自定义时间范围选择器
   - 灵活选择任意时间范围
   - 开始日期(早8点)和结束日期(早8点)
   - 所有时间以早8点为基准

3.  前端UI改进
   - 添加时间模式切换按钮(预设时间/自定义时间)
   - 根据选择模式显示对应的选择器
   - 清晰的提示说明

4.  后端API扩展
   - 支持start_time和end_time参数
   - 保留report_date兼容旧接口
   - 灵活的时间范围计算

5.  测试验证
   - 静态检查通过
   - API测试成功(生成35个订单的日报)
   - 求和功能正常(充电电量: 335159.3)

修改文件:
- src/app/page.tsx - 前端时间选择UI
- src/app/api/report/generate/route.ts - API支持时间参数
- src/lib/report-generator.ts - 生成器支持时间范围

用户可以在日报生成页面灵活选择时间范围,立即生成任意时间段的历史日报!

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 09:49:51 +08:00
user9994793890
9573309adb fix: 解决数据库配置错误和表重建问题
核心问题:
1. 数据库连接池参数导致offset错误
2. 缺少sort_order字段导致创建配置失败

关键修复:
1. 移除有问题的MySQL2连接池参数
   - 删除enableKeepAlive和keepAliveInitialDelay配置
   - 解决"The value of offset is out of range"错误

2. 创建表重建API
   - 使用pool.query()替代pool.execute()
   - 正确处理Doris数据库的表创建

3. 测试结果:
    表重建成功
    配置创建成功
    配置列表正常显示(包含sort_order=999)

4. 删除临时API文件

所有静态检查通过,创建配置功能已正常

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 09:40:39 +08:00
user9994793890
2fce6dd844 feat: 完善日报系统功能
新增功能:
1.  启用/禁用切换按钮
   - 配置列表显示启用/禁用状态
   - 点击按钮切换配置状态,不再直接删除

2.  独立删除按钮
   - 删除前弹出确认提示
   - 确认后才真正删除配置

3.  配置排序功能
   - 添加sort_order字段支持排序
   - 上移/下移按钮调整配置顺序
   - 按sort_order升序排列

4.  定时任务验证
   - 已有每天8:01自动生成日报的cron任务
   - server.ts已正确集成定时任务
   - 定时任务会为所有启用的配置生成日报

5.  批量下载功能
   - 历史记录添加复选框选择
   - 全选/取消全选功能
   - 批量下载按钮一次性下载多个日报

数据库表更新:
- t_daily_report_config新增sort_order字段
- 历史记录查询包含is_active状态显示
- 配置表建表语句支持排序字段

前端更新:
- 配置列表显示状态列
- 操作按钮分为启用/禁用、删除、上移、下移
- 历史记录添加批量选择和下载功能

代码静态检查通过,所有功能可用

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 09:31:52 +08:00
user9994793890
eebe142787 fix: 修复启用/禁用功能,添加 Doris UNIQUE KEY 支持
核心问题:Doris 只允许更新有 UNIQUE KEY 的表,之前的表不支持 UPDATE 操作

关键修改:
1. 为所有建表语句添加 UNIQUE KEY(id)
2. 修改以下文件的建表语句:
   - config/route.ts(配置表)
   - report/history/route.ts(历史表)
   - init-tables.ts(初始化脚本)
   - report-generator.ts(生成器)

建表语法变更:
- 从:DISTRIBUTED BY HASH(id) BUCKETS 1
- 到:UNIQUE KEY(id) + DISTRIBUTED BY HASH(id) BUCKETS 1

测试结果:
 配置创建成功(HTTP 200)
 配置禁用成功(HTTP 200)
 配置启用成功(HTTP 200)
 所有静态检查通过

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-08 08:43:59 +08:00
user9994793890
26f0ed12f1 fix: 修复 Doris 数据库建表语法兼容性问题
核心问题:数据库为 Apache Doris 而非标准 MySQL,建表语法完全不同

关键修改:
1. 去除所有 MySQL 特有语法(ENGINE、DEFAULT、IF NOT EXISTS)
2. 使用 Doris 必需语法:DISTRIBUTED BY HASH + PROPERTIES
3. 所有 NULL/NOT NULL 和 DEFAULT 值重新适配
4. 修复四个文件的建表语句:
   - config/route.ts(配置表)
   - report/history/route.ts(历史表)
   - report-generator.ts(生成器)
   - init-tables.ts(初始化脚本)

测试结果:
 配置创建 API 测试通过(HTTP 200)
 所有静态检查通过
 Doris 建表语法完全兼容

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-07 17:13:14 +08:00
user9994793890
05b031bb40 feat: 完善日报系统功能
主要更新:
1. 【核心变更】从批量拆分改为单个企业/用户选择生成
   - 用户现在可以选择特定的企业或用户生成日报
   - 企业列表显示企业名称(如"国营-西南-79路")
   - 用户列表显示用户姓名,并标注用户类型(企业用户/普通用户)

2. 【新增功能】求和功能
   - 支持选择多个字段进行求和
   - 求和结果显示在Excel表格底部
   - 可对金额、电量等多列分别求和

3. 【数据库表结构更新】
   - t_daily_report_config 新增字段:split_name(企业/用户名称)、sum_fields(求和字段列表)
   - t_daily_report_history 新增字段:split_name、sum_results(求和结果JSON)

4. 【前端页面优化】
   - 配置管理:选择企业/用户时显示名称和订单数量
   - 日报生成:支持选择单个企业/用户、字段和求和字段
   - 历史记录:显示企业/用户名称和求和结果

5. 【API接口优化】
   - 企业列表API:返回company_name、company_no、company_group等信息
   - 用户列表API:返回user_name和用户类型标签
   - 日报生成API:支持sum_fields参数

6. 【删除临时文件】清理debug调试API接口

所有代码静态检查通过,企业列表和用户列表API测试成功

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-07 16:52:51 +08:00
user9994793890
13a7188af1 fix: 修正数据库端口配置并优化API返回逻辑
- 修正数据库端口从默认3306改为10216(根据用户提供的SQL文件)
- 优化API接口:即使配置表不存在也能返回完整的字段列表
- 现字段列表正常显示,包含100+个可选字段
- 数据库连接成功,可正常读取订单表数据
- 用户需先调用 POST /api/init-tables 初始化配置表和历史表

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-07 16:21:56 +08:00
user9994793890
ba91796dc1 feat: 实现订单日报系统
- 创建订单日报系统,支持每天8:01自动生成前一天(早8点到当天早8点)的日报
- 新建两个数据库表:t_daily_report_config(配置表)和 t_daily_report_history(历史表)
- 原表 t_equipment_charge_order 只读取不修改,严格遵守用户要求
- 支持按企业ID或用户ID拆分日报,用户ID会提示是企业用户还是普通用户
- 用户可自定义选择报表字段,所有字段使用中文显示
- 实现配置管理、日报生成、历史查看的完整功能
- 代码检查全部通过,静态检查无错误

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-07 16:14:42 +08:00
user9994793890
b6a1b77054 chore: init env 2026-07-07 16:00:36 +08:00
user9994793890
3ca157c1e9 Initial commit 2026-07-07 15:58:35 +08:00