1.背景和目标
用户需要对研发项目进行文档管理,以及项目进程管控
2.核心功能
项目管理、归档文库
3.流程实现
项目立项:设定项目负责人,抄送人(仅可查看项目进度),计划开始日期,计划完成日期,立项文件上传,项目成果文件上传
项目开启:自动推送企微消息至相关任务负责人
任务分发:任务分解,选择对应任务负责人以及参与人,任务计划开始时间,计划完成时间,可上传任务成果文件,项目完成需项目负责人审批,审批通过项目完成
项目完成:任务全部完成后,项目负责人可点击项目完成
文件归档:点击归档,项目相关立项文件,项目成果文件,任务成果文件进入归档文库
1.整体架构和思路
后端框架:Flask 3.1 应用工厂 + 蓝图
数据库:SQLite 默认,可切换 SQL Server
前端:Bootstrap 5.3 CDN + Jinja2 模板
多页签交互:iframe + tab 系统
打包部署:PyInstaller → Windows 服务
2.我是唯一的开发者
Python 源文件43 个
代码总行数~6,171 行
HTML模板24 个
数据库表10 张
API 路由端点~50+ 个
PyInstaller 可执行文件6 个(主应用 + 5 个管理工具)
Python 依赖包16个
3.我踩过的坑:
iframe 页签系统的复杂性
现象:
表单提交后重定向导致 iframe 内容替换页签标题错位;postMessage 跨 iframe 通信不可靠,closeMe 销毁 iframe 后后续消息丢失。
根因:iframe 页签是状态同步的黑盒——子 iframe 不知道父窗口有哪些页签,父窗口不知道子 iframe 当前导航到了哪里。
解决:
放弃复杂的 postMessage 双向通信(创建→跳转→关闭→刷新),改为单向 refreshTab 通知
"新建"操作统一用 tab-link 类开新页签,表单在新页签内完成并重定向
删除/状态变更用 axios POST 替代 form.submit(),响应后 location.reload()
全局 preserve_iframe_param 中间件确保重定向不丢失 iframe=1 参数