7.3 KiB
7.3 KiB
项目上下文记录
2026-05-15:新版上传页对齐旧版布局并恢复拖拽上传
frontend/src/components/FileWorkflow.vue的上传页内容区已按旧版frontend_old/index.html的上传结构重排,保留新版侧边导航和顶部标题栏,只对齐页面主体中的上传区、文件列表、上传进度和处理日志布局。- 上传区支持点击选择文件,也支持把文件或文件夹直接拖拽到页面;目录拖拽使用
DataTransferItem.webkitGetAsEntry()递归读取,readEntries()会循环读取完整批次,兼容 Chrome 目录拖拽一次只返回部分条目的情况。 - 上传文件统一过滤
.zip、.xlsx、.xls、.csv,路径会归一化为/,并按相对路径去重;文件状态显示为等待上传、上传中、已完成或失败。 - 旧版对照端口仍为
9082,新版端口仍为9081;已用 headless Chrome 对比9082/与9081/upload,新版上传框尺寸、虚线边框、圆角和文案与旧版基本一致,并通过模拟拖拽drag-test.csv验证文件列表能正常出现。 - 构建验证命令为
cd frontend && npm run build;当前只存在 Vite 大 chunk 体积警告,构建本身通过,frontend/dist/仍按.gitignore作为本地构建产物处理。
2026-05-15:拆分新旧前端访问端口
python -m app.main现在由同一个 FastAPI 进程同时监听9081和9082,共享后端运行状态、任务锁和 API。9081固定服务新版 Vue 3 前端,9082固定服务frontend_old/旧版 HTML/CSS/JS 前端;旧版页面仍通过/old/...加载本地 Monaco 等静态资源。app.main:app保留为新版单端口 ASGI 实例,app.main:old_app保留为旧版单端口 ASGI 实例,app.main:split_app用于按请求端口切换前端。run.bat、supervisord.conf、Dockerfile、Docker Compose 和离线构建脚本已同步新旧端口:本地为9081/9082,容器宿主机映射为19081/19082。
2026-05-15:增加旧版前端对照入口和新版路由
- 从旧提交
54773f547f6fcb853d73785f05ff5ac39ab2e5f5恢复原生 HTML/CSS/JS 前端到frontend_old/,包含旧版index.html、login.html、样式、脚本和本地 Monaco 资源。 - 后端在
app/main.py中通过/old和/old/...托管frontend_old/,旧版静态资源统一改为/old/...前缀;旧版页面仍复用当前/api/...接口,便于和新版直接对比。 - 新版 Vue 前端新增
vue-router,页面路径为/upload、/history、/database、/script、/settings;菜单切换会更新浏览器地址,刷新时由 FastAPI SPA fallback 返回新版入口,不再固定回到主页。 frontend/dist/仍是本地构建产物,只用于运行验证,不进入版本库;源码运行时需要先在frontend/执行npm install和npm run build。
2026-05-15:恢复前端工作台交互质量
- 前端工作台布局重新对齐旧版
54773f547f6fcb853d73785f05ff5ac39ab2e5f5的信息架构:左侧导航、顶部标题栏、紧凑后台式内容区,导航项使用“数据上传 / 处理历史 / 数据管理 / 脚本编辑 / 系统设置”。 ScriptPanel.vue不再使用普通 textarea,改为monaco-editorSQL 编辑器,保留脚本读取、保存、执行和状态轮询接口;支持 SQL 高亮、行号、缩略图、光标行列状态和未保存状态。- Monaco 通过 Vue 异步组件按需加载,避免脚本编辑器依赖进入首屏主包;Vite worker 类型由
frontend/src/vite-env.d.ts提供。 SettingsPanel.vue的字段提取配置恢复为结构化树状配置:字段名、字段类型、提取来源列表、搜索、增删和去重保存,不再要求用户直接编辑 JSON。- 新增前端运行依赖
monaco-editor,构建时仍会生成frontend/dist/,该目录继续作为构建产物忽略,不进入版本库。
2026-05-15:修复 Windows 启动脚本编码问题
run.bat改为纯 ASCII 输出,并规范为 CRLF 行尾,避免 Windowscmd在 PowerShell 中执行 UTF-8 中文批处理时把提示文本解析成碎片命令。- 启动脚本仍使用
.venv\Scripts\python.exe、检查 Python 依赖和frontend/dist/index.html,实际启动方式保持python -m app.main不变。 - 后续如需中文启动提示,优先放到 PowerShell 脚本或应用日志中,不建议直接写入
.bat。
2026-05-15:后端拆分与前端迁移
当前架构
- 后端入口收敛到
app/main.py,只负责创建 FastAPI 应用、注册中间件、注册路由和托管前端构建产物。 - API 按业务拆分到
app/api/routers/:auth.py:登录和修改密码。upload.py:上传会话和文件上传。tasks.py:任务锁、处理启动、处理状态。history.py:历史记录、日志和记录删除。database.py:数据库测试、表查询、表维护和导出。config.py:配置读取、保存、上传和下载。cache.py:缓存大小统计。service.py:服务状态和重启。script.py:SQL 脚本读取、保存和执行。health.py:健康检查。
- 运行时共享状态放在
app/state.py,包括配置实例、历史管理器、处理任务、上传会话和全局任务锁。 - 登录、密码文件和 Token 逻辑放在
app/auth.py,继续使用本地auth.ini。 - 服务重启检测和进程退出逻辑放在
app/services/runtime.py。 - 文件大小等工具函数放在
app/utils/files.py。
前端
- 旧
static/原生 HTML/CSS/JS 已替换为frontend/。 - 前端技术栈为 Vue 3 + TypeScript + Vite + Naive UI。
- 构建产物位于
frontend/dist,由 FastAPI 根路由托管;/assets映射到frontend/dist/assets。 - 未构建前端时,后端会返回 503,并提示执行
cd frontend && npm install && npm run build。 - Vite 开发服务器将
/api和/health代理到后端http://localhost:9081。
部署与运行
- Windows 本地运行使用
run.bat,优先使用 uv 创建的.venv\Scripts\python.exe。 run.bat会检查 Python 依赖和frontend/dist/index.html,缺少前端产物时要求先构建前端。- Docker 构建改为多阶段:
node:22-slim阶段安装前端依赖并执行npm run build。python:3.13.11-slim阶段安装后端依赖,复制应用代码,再复制前端构建产物。
.dockerignore只排除frontend/node_modules、frontend/dist等本地产物,不再排除完整前端源码。
依赖与清理
- Python 依赖保留当前代码实际使用项:
fastapi、uvicorn[standard]、python-multipart、pymysql、sqlalchemy、cryptography、pandas、openpyxl、chardet、supervisor。 - 已移除未使用的
sqlparse、aiofiles、python-dateutil。 - 旧静态目录、根目录打包产物、日志和 Python 编译缓存属于可清理产物,不应提交。
注意事项
- 当前项目按每周整包替换使用,不维护旧版 API 兼容层;但核心处理流程、配置文件和
ReportScript.sql仍沿用现有语义。 ReportScript.sql是业务处理链路的一部分,重构接口或前端时不要改写 SQL 语义。auth.ini、cache/、dist/、frontend/dist/、frontend/node_modules/均为本地运行或构建产物,不进入版本库。