面向方案、子方案和配套资料全生命周期管理的前后端业务系统。

weisijie c7749418de 1. 实现了多角色挂载架构(契约 1.46),用户可对应多个角色(sys_user_role 多对多挂载表),登录支持角色选择,用户新增席位输入框与首长用户类型,席位随用户名展示于右上角信息面板,标题横幅后加「系统」二字; 2 veckor sedan
.claude 838a803e05 1. 实现了系统管理页签(契约1.23),角色权限矩阵新增「系统管理」与「日志审计」两个管理位(sys_role 加列,Alembic 0029 与 Flyway V14 双引擎幂等迁移,含达梦适配版),拥有权限的角色才可见对应页签,内置 admin 恒拥有; 1 månad sedan
backend c7749418de 1. 实现了多角色挂载架构(契约 1.46),用户可对应多个角色(sys_user_role 多对多挂载表),登录支持角色选择,用户新增席位输入框与首长用户类型,席位随用户名展示于右上角信息面板,标题横幅后加「系统」二字; 2 veckor sedan
backend-java c7749418de 1. 实现了多角色挂载架构(契约 1.46),用户可对应多个角色(sys_user_role 多对多挂载表),登录支持角色选择,用户新增席位输入框与首长用户类型,席位随用户名展示于右上角信息面板,标题横幅后加「系统」二字; 2 veckor sedan
build 015af00ed9 1. 实现了附件权限细分(契约 1.41),权限矩阵新增附件上传/编辑/查看/下载四权限位(仅本部门行可设置,其他部门行服务端拒收),附件查看下载不再跟随主案权限——配置附件位即使主案无权限也可查看下载;方案锁「挂载/解除挂载」合并为单一「挂载」位(protectedActions 收敛 6 项,解挂仍按挂载位判定),迁移 0039/V25 同批并入; 3 veckor sedan
docs 6eed0a17f5 1. 实现了备份自有 SQL 导出格式(Java SqlDataDumper 与 Python sql_dump 双版对齐),摆脱达梦 dexp 依赖,备份引擎与离线恢复CLI全链路适配; 1 månad sedan
frontend c7749418de 1. 实现了多角色挂载架构(契约 1.46),用户可对应多个角色(sys_user_role 多对多挂载表),登录支持角色选择,用户新增席位输入框与首长用户类型,席位随用户名展示于右上角信息面板,标题横幅后加「系统」二字; 2 veckor sedan
skills 1eca780116 1. 将 prompts.txt 需求文档拆分为前后端; 2 månader sedan
tools e7346901bc 1. 实现了目录拖动排序功能(契约 1.27),机构树同级拖拽置换、用户列表与角色列表拖动重排,新增 reorder 接口按步长 10 重编号 sort_no(sys_user 加列,Alembic 0031 与 Flyway V16 双引擎幂等迁移,含达梦适配版),全部拖动排序界面移除排序号输入框(库中保留),审计动作新增 REORDER_ORGANIZATION/REORDER_USER/REORDER_ROLE; 1 månad sedan
.gitattributes 3552691a57 1. 实现了角色管理与权限矩阵功能,支持角色关联用户及密级×部门范围×操作的表格式权限配置,可设默认角色且调整后实时生效; 1 månad sedan
.gitignore 838a803e05 1. 实现了系统管理页签(契约1.23),角色权限矩阵新增「系统管理」与「日志审计」两个管理位(sys_role 加列,Alembic 0029 与 Flyway V14 双引擎幂等迁移,含达梦适配版),拥有权限的角色才可见对应页签,内置 admin 恒拥有; 1 månad sedan
CODEX_BACKEND_PERSISTENCE_GUIDE.md 329c2622b9 1. 实现了DOC与DOCX转PDF预览,支持LibreOffice离线转换; 2 månader sedan
DMS_API_CONTRACT.md c7749418de 1. 实现了多角色挂载架构(契约 1.46),用户可对应多个角色(sys_user_role 多对多挂载表),登录支持角色选择,用户新增席位输入框与首长用户类型,席位随用户名展示于右上角信息面板,标题横幅后加「系统」二字; 2 veckor sedan
DMS_FUNCTION_CONTRACT.md bad04bc5d2 1. 实现了正文解析失败可视化与重新解析功能,失败原因脱敏落库(0019 迁移),管理员编辑界面展示解析状态与失败原因并可一键重新解析; 1 månad sedan
FUNCTION_AND_API_SPECIFICATION.md bad04bc5d2 1. 实现了正文解析失败可视化与重新解析功能,失败原因脱敏落库(0019 迁移),管理员编辑界面展示解析状态与失败原因并可一键重新解析; 1 månad sedan
README.md c07e1bfb77 1. 实现了站内通知功能(契约 1.34),新增 sys_notification 表(V21/0036)与四个接口(通知列表、未读数、全部已读、待办处理),仅可操作本人通知,前端顶栏用户名与设置面板「通知」入口红圈+x 点亮、通知页以列表呈现待办并给出操作列,借阅审批待办为首个写入方; 4 veckor sedan
prompts.md c7749418de 1. 实现了多角色挂载架构(契约 1.46),用户可对应多个角色(sys_user_role 多对多挂载表),登录支持角色选择,用户新增席位输入框与首长用户类型,席位随用户名展示于右上角信息面板,标题横幅后加「系统」二字; 2 veckor sedan
verified.md 873fc549be 1. 实现了文档更新时间范围检索,统一主方案、子方案与附件查询; 2 månader sedan

README.md

方案计划文档管理系统

面向方案、子方案和共享附件全生命周期管理的前后端业务系统。系统提供分类管理、文档上传与下载、共享附件挂载、文档权限、审计统计、回收站恢复和统一中文展示字典。

技术栈

  • 前端:React 18、TypeScript、Vite、Material UI
  • 后端(现役):Java、Spring Boot、MyBatis(backend-java/)
  • 后端(已废弃):Python、Flask、SQLAlchemy、Alembic(backend/,仅历史参考,不再更新与测试)
  • 数据库:MySQL 8
  • 文件存储:本地文件系统,数据库仅保存安全相对路径
  • 接口规范:OpenAPI 3.0.3

工程结构

.
├─ backend-java/               后端应用(现役,Java/Spring Boot)
├─ backend/                    【已废弃】Python 后端,仅历史参考(见 backend/DEPRECATED.md)
│  ├─ dms/                    DMS业务模块
│  ├─ src/                    既有AI信息抽取模块
│  ├─ migrations/             Alembic迁移
│  ├─ openapi/                OpenAPI规格
│  ├─ tests/                  后端自动化测试
│  ├─ dms-storage/            正式运行文件存储(内容不提交Git)
│  └─ dms-test-storage/       本地测试文件存储(不提交Git)
├─ frontend/                   React前端
│  └─ src/features/           按业务领域划分的前端模块
├─ docs/                       计划、提示词和演示资料
├─ deliverables/               本地部署包和交付压缩包(不提交Git)
├─ DMS_FUNCTION_CONTRACT.md    正式功能契约
├─ DMS_API_CONTRACT.md         正式接口契约
└─ FUNCTION_AND_API_SPECIFICATION.md

详细文档索引见 docs/README.md。

本地运行

后端

Python 版后端已废弃(见 backend/DEPRECATED.md):以下内容仅作历史参考;现役 Java 版见 backend-java/,发行包构建使用 build/build-java.ps1。

cd backend
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt

.env.example 是配置模板,应用不会自动读取本地 .env。运行前应通过进程环境或服务管理器配置至少以下参数:

DMS_DATABASE_URL
DMS_JWT_SECRET
DMS_STORAGE_ROOT

开发启动:

python app.py

默认后端地址为 http://127.0.0.1:8754,健康检查为:

GET /api/v1/health

数据库迁移:

alembic -c migrations/alembic.ini upgrade head

前端

cd frontend
npm install
npm run dev

默认开发端口由 vite.config.ts 配置为 9345。生产接口基础路径通过 VITE_API_BASE_URL 配置。

验证

后端(Python 版已废弃,不再运行测试;现役 Java 版验证):

cd backend-java
mvn test

前端:

cd frontend
npm run typecheck
npm run test
npm run build

自动化测试源码属于正式工程质量资产,应保留在仓库中;缓存、覆盖率、运行日志和隔离测试存储不提交Git。

配置与数据边界

  • 数据库连接、JWT密钥、存储根目录和AI密钥通过安全环境配置提供。
  • UI中文展示字典默认位于 backend/dms/resources/ui-dictionaries.zh-CN.json。
  • 业务文件保存在 DMS_STORAGE_ROOT,数据库只保存相对路径、大小和SHA-256。
  • .env、运行日志、构建目录、部署包和存储文件均不提交Git。

当前基线

  • 功能契约:1.2
  • API契约:1.2
  • OpenAPI:1.2.0
  • 数据库迁移最新版本:0002_add_restore_audit_action
  • Q1统一UI字典、分类层级和真实认证已通过独立验收