文档版本:v2.0 编制日期:2026-08-13 密级:内部 适用范围:方案计划文档管理系统(DMS)研制与交付
方案计划类文档(含主方案、子方案、配套资料)历来是各级单位的核心知识资产,其内容不仅承载具体业务决策与战术技术安排,往往还涉及组织层级、人员编组、装备资源、保密要求等敏感信息。长期以来,这类文档主要依赖办公自动化系统、共享目录或单机档案柜进行管理,普遍存在三类突出问题。其一,存储分散、版本混乱:同一份方案在不同人员、不同终端、不同时期存在多个副本,难以及时定位“现行有效版本”,更难以追溯变更过程。其二,权限粗放、密级管控薄弱:传统基于目录或共享权限的管理模型只能做组织级粒度的访问控制,无法针对单份文档、单一主体、单一操作(查看、下载、编辑、删除、授权)进行细粒度授权,更无法与文档密级、用户密级联合判断,存在敏感信息越权扩散风险。其三,检索能力低下:大部分系统仅能按文件名或关键字匹配,无法对正文内容、概述、标签进行联合检索,无法基于语义进行智能匹配,更无法在命中正文时给出上下文片段,导致“明明有却搜不到”的现象频发。
随着各级单位对信息化、智能化办公能力提出更高要求,方案计划类文档的“集中存储、分类组织、密级管控、细粒度授权、智能检索、在线预览、操作审计”已经成为基础能力而非加分项。同时,方案类文档经常以PDF、DOC、DOCX、WPS等主要格式流转,且目标场景下整个系统运行在严格物理隔离的专用网络中,所有能力必须完全依托本地资源完成,必须依靠本地化的转换与渲染链路完成预览与正文提取,必须依靠本地化的分片与向量化链路完成智能检索与语义匹配。这就要求新系统在功能完备的同时,具备可离线、低依赖、适配国产化平台、支持多机集群部署的形态,能够在银河麒麟操作系统下以服务器集群方式部署运行,服务于机关与一线分队的协同办公。
基于上述背景,本项目研制“方案计划文档管理系统”(下称“本系统”),面向各级军事机关、部队及野外作业分队等场景,提供一套完整的方案文档全生命周期管理平台。系统以“主方案—子方案—配套资料”三类对象为核心业务实体,以分类树、标签、密级为检索与管控主轴,以“令牌时效与会话版本联动失效”机制和“基于访问控制列表的细粒度授权”为安全底座,以离线文档转换引擎与可切换的前端预览渲染器为内容呈现保障,以文档分片、向量化与多字段合并检索为知识挖掘能力,以多机集群部署与主备热备为可靠运行形态,最终为各级用装单位提供一套“集群部署、管控到位、追溯清晰、智能检索”的方案文档管理工具。
本系统的研制遵循“安全为先、可用为本、可审计、可离线、可演进”五项核心指导思想,所有架构决策、技术选型与实现取舍均围绕这五条主线展开。
安全为先意味着所有与权限、密级、文件读写相关的判定必须由服务端做出且仅由服务端做出,前端只承担呈现与请求发起职责,不允许将任何权限标识、密级判断、操作开关作为可信任输入回传至后端。系统在鉴权链条上严格遵循“登录态校验→用户有效性→文档有效性→密级比对→系统管理员特权→可见范围→操作权限”七级判定,前一级未通过即整体拒绝,不进入下一级。所有写操作必须携带乐观锁版本号,所有敏感操作必须留下与业务事务原子提交的审计记录,所有错误响应必须避免泄露绝对路径、文件摘要、SQL文本、堆栈信息等内部细节。
可用为本意味着系统面向真实指挥办公场景设计,而非面向演示或招标。系统必须支持PDF、DOC、DOCX、WPS等主流格式的在线预览,且在严格物理隔离的专用网络中能通过本地转换引擎完成格式转换;必须支持基于关键字的多字段合并检索与基于向量化的语义检索,并在命中正文时给出上下文片段;必须支持基于“主方案—子方案—配套资料”三档业务对象的层级浏览、基于分类树的导航浏览、基于标签多选OR的过滤浏览;必须支持左右分栏的查看对话框,让用户在查看预览的同时阅读提取出的正文段落;必须支持银河麒麟服务器上的多机集群部署,由机关普通用户通过浏览器访问即可开展日常办公。
可审计意味着系统中发生的每一次有意义的行为——登录、登出、查看、下载、上传、编辑、删除、权限变更、挂载、解绑、恢复——都必须留下不可篡改、不可删除、可追溯的审计记录,且审计记录与业务变更必须在同一事务中原子提交,避免“业务成功但审计丢失”。审计日志需保留操作发生时的快照(用户名、真实姓名、组织名、目标名称),即便用户改名、组织调整或文档删除,历史日志仍然可读、可解释。
可离线意味着系统在严格物理隔离的专用网络中也能完整运行。系统不依赖任何在线Office服务、在线PDF渲染服务、外部认证服务、在线大模型服务,所有能力均在专用网络内部完成:文档转换、正文提取、分片与向量化、检索匹配均依托本地资源完成。系统采用集群部署形态,前端构建产物、后端服务、向量化服务、数据库主备、数据备份均运行于专用网络内的服务器集群之上,便于在专用网络内统一部署、运维与升级。
可演进意味着系统在功能边界、数据模型、技术栈三个维度均预留扩展空间。功能上,正文检索已具备关键字多字段合并与向量化语义匹配两条链路,数据规模增长后可平滑切换到专用全文检索引擎或专用向量数据库;数据模型上,为后续批量导入、跨库federate等高级能力保留扩展空间;技术栈上,采用主流且长期维护的开源框架,避免引入小众或停止维护的依赖。系统采用分层与模块化设计,新功能的引入以新增模块、新增迁移、新增路由为主,尽量避免对既有业务模型的破坏性改造。
除上述五项设计原则外,研制过程还遵循若干工程纪律:所有对外接口遵循统一响应结构(业务状态码、消息、业务负载、请求追踪标识),前端不得仅依赖HTTP状态判断业务成功;所有写接口必须支持并发冲突识别(乐观锁);所有数据库迁移脚本按版本号线性递增且不允许修改历史迁移;所有时间字段以毫秒精度存储协调世界时(UTC)、对外以ISO 8601标准格式呈现;所有数据库字符集统一为支持完整Unicode的字符集,存储引擎统一为支持事务与外键的主流引擎。这些工程纪律是指导思想在代码层面的具体落地,构成了系统质量与可维护性的基础。
本系统在逻辑上采用“前端展现层、后端业务层、数据存储层、智能检索与向量化服务”四层结构。前端展现层负责交互呈现、表单校验与请求编排,由浏览器加载的单页应用承担;后端业务层负责业务逻辑、权限判定、文件读写、文档转换与正文提取,由无状态的应用服务承担;数据存储层负责结构化业务数据与原始文件的可靠存储,由关系型数据库主备集群与本地文件存储共同承担;智能检索与向量化服务作为独立部署的辅助服务,承担文档分片、向量化计算与语义匹配能力,供应用服务按主备方式调用。各层之间通过明确的边界解耦:前端只通过加密通道调用后端业务层的应用接口,不直接访问数据库与文件目录;后端业务层通过受控的数据访问层操作数据库,通过受控的存储抽象读写文件目录,通过受控的客户端调用向量化服务;数据库主备集群对应用服务暴露统一的数据源,应用服务无需感知主备切换细节。
在逻辑分层上,后端业务层内部进一步划分为五个子层,各层职责单一、互不越界:
其一,接入层,承担HTTP路由与请求接入,是外部请求进入后端的唯一入口。接入层只负责接收请求、校验入参格式、调用业务层、组装响应,不直接访问数据库。
其二,业务层,承担领域建模与业务编排,是所有业务规则的裁决中心。业务层承载所有“在某一业务动作中需要发生的事”,例如“创建一份主方案”涉及到的字段校验、文件落盘、摘要计算、密级比对、权限初始化、审计写入、正文提取、分片与向量化、索引更新等所有步骤均被聚合到一个服务方法中,且该方法在数据库事务内原子提交。
其三,数据层,承担实体模型定义与数据持久化,是数据库模式的唯一描述来源。数据层定义了用户、组织、分类、文档、配套资料挂载关系、权限、审计日志、文档分片、文档向量等核心实体表以及若干辅助表,所有外键约束、唯一约束、检查约束、索引均在模型层显式声明。
其四,基础设施层,承担外部资源与加密算法的抽象封装,是外部依赖的隔离边界。基础设施层封装了文件命名策略、目录布局、摘要缓存、外部转换引擎调用方式、向量化服务调用方式、令牌签发与校验等“与外部资源或加密算法交互”的细节,使上层业务方法只见抽象接口、不见具体实现。
其五,横切层,承担多业务复用的工具与协议封装,是跨模块公共能力的集散地。横切层提供了响应包装器、分页协议、错误码映射、时间范围解析、操作枚举等被多业务复用的工具类,避免相同逻辑在多个模块重复实现。
通过分层设计,使得“新增一个业务实体”的成本被控制在“新增一个模型、新增一个迁移、新增一个服务、新增一组路由”的可预期工作量内,不会侵入既有模块。
在物理部署形态上,本系统采用5台服务器的集群部署方案,全部运行于严格物理隔离的专用网络内的银河麒麟服务器之上。部署方式如下:
第一台服务器部署应用服务包、向量化服务(主)、负载均衡器(主),其中应用服务包内置数据备份功能,按计划将本机数据备份至第三台服务器;
第二台服务器部署应用服务包、向量化服务(备)、负载均衡器(备),应用服务包同样内置数据备份功能,按计划将本机数据备份至第三台服务器;
第三台服务器部署应用服务包,同时作为第一台服务器与第二台服务器数据备份的目标设备,集中存储备份文件;
第四台服务器部署数据库主库;
第五台服务器部署数据库备库。
部署方式的核心要点如下:
其一,第一、二、三台服务器构成无状态应用服务集群,三台服务器上运行的应用服务包完全同构、对外提供并行访问能力,任一节点故障均不影响整体可用性。
其二,第一台服务器承担主负载均衡器职责,作为日常服务访问入口;为避免单点故障,第二台服务器部署备用负载均衡器作为备用访问入口,主负载均衡器故障时由用户端将访问入口切换至第二台服务器即可继续访问。
其三,第一台服务器部署主向量化服务,由所有应用服务节点调用以完成文档向量化;为应对主向量化服务节点故障,第二台服务器部署备用向量化服务,各应用服务节点在配置中同时登记主备向量化服务地址,主实例不可达时由应用服务节点自动切换至备用实例。
其四,第三台服务器作为集中备份目标,是防止两台数据库同时损坏的第三重保障;按每周日凌晨执行全量备份、每日凌晨执行增量备份的策略生成副本,备份目录以只追加不覆盖方式写入,避免应用层数据被误删或恶意删除时对备份介质产生连锁影响。
其五,第四、五台服务器构成数据库主备集群,采用热备方式与同步双写,主库故障时由系统管理员审批后通过主备切换脚本切换至备库继续提供服务。
在组成清单上,本系统交付的软件资产包括:前端服务部署包、后端服务部署包、向量化服务部署包、数据库脚本、集群部署与运维脚本、配套的用户手册等。所有组件的版本、来源、修改记录均在配置管理与版本控制中留痕,可追溯、可复现。
系统的工作原理可以从“请求-响应主链路”、“鉴权判定链”、“文件存储与预览链路”、“正文提取与向量化链路”、“检索匹配链路”五条主线分别说明,这五条主线共同覆盖了系统日常运行中的绝大多数行为。
请求-响应主链路,定义了“用户在前端发起一次操作→负载均衡器分发→后端应用服务完成处理→前端展示结果”的全过程。用户在浏览器中登录后,前端拿到一段访问令牌与一段“保持登录”长效令牌,将访问令牌缓存在内存中(不写入本地存储或Cookie,防止XSS与CSRF携带),并在后续每一次调用后端接口时通过鉴权头部经负载均衡器发送至应用服务集群中的某一节点。后端在请求预处理阶段拦截该头部,解码还原出“用户标识+用户密级+组织标识+角色集合+会话版本号”,并将这些信息注入到当前请求上下文中,供下游业务方法直接读取而无需重复解码。业务方法在被调用时,先从请求上下文中取出当前用户,再执行业务逻辑、读写数据库主库、写审计记录,最后通过响应包装器返回统一结构的响应。前端在收到响应后,先校验业务状态字段是否表示成功,再读取业务负载渲染界面;遇到失败响应时,前端根据错误码与消息决定是提示用户、跳转登录、还是触发乐观锁冲突的二次确认流程。
鉴权判定链是本系统安全设计的核心,所有受保护资源在被访问前都必须完整通过七级判定,前一级未通过即整体拒绝,不进入下一级。第一级是登录态校验:访问令牌必须存在、必须未被篡改、必须未过期;第二级是用户有效性:用户记录必须存在、未被逻辑禁用、会话版本号必须与令牌中的版本号一致(一旦系统管理员强制下线或修改了用户的密级或角色,该用户的令牌立即失效);第三级是文档有效性:被访问的文档记录必须存在、未被销毁;第四级是系统管理员特权:如果当前用户是系统管理员,则直接放行,不再走后续的可见范围与操作权限判定,以便系统管理员进行全局运维;第五级是密级比对:用户的密级必须大于或等于文档的密级,例如“秘密级用户”不能查看“机密级文档”;第六级是可见范围判定:根据文档的可见范围类型(“全员可见”、“按组织”、“按用户”三类),判断当前用户是否在允许集合内;第七级是操作权限判定:根据该用户或其所在组织对该文档的访问控制授权记录,判断是否具有本次操作所必需的具体权限(查看、下载、编辑、删除、授权)。这七级判定全部在后端应用服务内完成,前端不参与任何判定,也不持有任何判定结果作为可信任输入。
文件存储与预览链路,定义了一份方案文件从落地到可被在线预览的全部内部行为。用户在前端选择一份本地方案文件并提交上传时,前端在单次表单请求中同时携带文件本体与元数据(标题、密级、分类、可见范围、标签等)提交至后端。后端在落盘的同时计算文件摘要,并以此摘要为键查询预览缓存:如果命中缓存且缓存对应的预览源仍然有效,则直接复用预览源,避免重复转换;如果未命中,则按需触发转换——能直接作为预览源的格式直接落位,无法直接预览的格式由外部转换引擎转换为预览源后再落位。转换完成后,预览源的相对路径被写入预览缓存,下次同一份方案文件再次上传或被其他文档引用时直接命中缓存。前端在收到预览响应后,按预置策略选择深度渲染器或浏览器原生嵌入两种方式之一完成展示。
正文提取与向量化链路是系统知识挖掘能力的核心,覆盖“上传时提取、分片与向量化、存量回填”三个阶段。在上传时,系统按文件类型选择对应的解析路径——能直接解析的格式由文档解析库直接提取,无法直接解析的格式先经外部转换引擎转换后再由解析库提取,得到方案文件的原始文本;提取出的文本被去空白、按段落归一化、写入文档记录的正文存储字段,同时被裁剪拼接为更短的检索专用字段以支撑关键字模糊匹配检索。随后系统按固定字数与段落边界对正文进行分片,将每片文本连同文档标识、片序号、所属段落范围写入文档分片表;接着将每片文本送至向量化服务,得到该片文本的向量表示,连同片标识一并写入文档向量表。在存量回填阶段,运维人员通过系统提供的回填工具对历史已上传但尚未提取正文、尚未生成向量的文档批量重跑提取与向量化流程,使旧数据也具备智能检索能力。
检索匹配链路覆盖“用户发起检索→双路召回→合并排序→命中呈现”四个阶段。用户在前端输入关键词或自然语言问句后,后端启动双路召回:第一路是关键字多字段合并检索,在检索专用字段上执行模糊匹配查询,同时联合主方案、子方案、配套资料三档对象的标题、概述、标签字段做多字段合并检索;第二路是语义检索,先将用户的问句送至向量化服务得到查询向量,再在文档向量表上按相似度检索出Top-N片文本,按所属文档聚合得到候选文档集合。两路结果按既定权重合并、去重、排序后分页返回。命中正文时,后端进一步在正文存储字段中定位关键词或匹配片段首次出现的位置,截取前后各若干字符作为上下文片段返回给前端。前端在表格行的下方延展一行“正文”片段,使用高亮组件把关键词在片段中可视化标红,让用户在不打开文件的情况下就能判断这是否就是他要找的内容。
本系统的软件按业务功能域划分为“方案管理、分类与标签管理、部门与用户管理、权限管理、日志审计、安全保密”六个一级功能模块,外加支撑六个业务模块运行的前端展现层与运维脚本。每个功能模块由“接入层路由、领域服务、数据层模型、基础设施依赖”四部分构成,模块之间通过领域服务显式调用、不共享数据层细节,遵循“先校验、再判定权限、再执行业务、再写审计、最后提交事务”的固定顺序,确保业务与审计的原子性。
数据层定义了用户、组织、分类、文档、文档分片、文档向量、配套资料挂载关系、权限、审计日志等核心实体表,所有表均使用主流存储引擎与支持完整Unicode的字符集,所有时间字段统一以毫秒精度存储协调世界时(UTC),所有外键约束显式声明级联策略。
前端展现层采用主流的构建工具与组件框架,配合TypeScript与Tailwind CSS v4等技术,按“特性模块化”组织代码,特性目录按上述六个业务功能域同构划分;所有API调用统一通过API客户端发起,API客户端在内部完成“附带鉴权头部→检查响应结构→检查业务状态→自动刷新过期令牌→转换为前端业务异常”五步流程,业务层调用方只需关心成功后的业务负载与失败后的异常,不必处理底层细节。
系统另附若干运维脚本:示例数据脚本用于在初次部署时生成示例组织、用户、分类与文档,便于系统快速演示;分类与文档批量导入脚本用于按预置清单批量导入分类与文档;正文回填脚本与向量回填脚本用于对历史已上传但未提取正文、尚未生成向量的文档批量重跑相应流程。这些脚本配合集群部署方案使用,构成“集群部署、存量可补、故障可切”的运维能力闭环。
方案管理模块是系统的核心业务模块,承担主方案、子方案、配套资料三类业务对象的完整生命周期管理。模块按“主案维护、子案维护、附件挂载、文件处理、正文检索、语义检索、销毁与回收”七个子域分工协作,所有写操作均遵循“参数校验、权限判定、业务执行、审计留痕、事务提交”五步链路原子完成,确保业务结果与审计记录同生共死。
主方案是业务语义的最顶层对象,承载方案名称、概述、密级、所属分类、标签集合、文档状态、原始文件、版本信息等业务属性。本子功能要点:
子方案是挂在主案下的从属文档,复用主案的密级与权限策略,不独立配置可见性。本子功能要点:
配套资料(附件)是独立于主案存在的可复用文档,通过挂载关系与主案关联,同一份附件可被多份主案挂载。本子功能要点:
模块统一接管原始文件的存储、备份与预览生成,对外屏蔽文件格式差异。本子功能要点:
模块在文档查看界面内提供正文级关键词检索能力,特别处理换行符拆词问题。本子功能要点:
模块对每份入库文档异步触发语义索引流程,使其具备基于自然语言的语义检索能力。本子功能要点:
模块区分“删除”与“销毁”两种语义:删除进入回收站可恢复,销毁不可逆。本子功能要点:
分类与标签管理模块承担分类树与标签字典的全生命周期管理,为方案管理模块提供“分类导航+标签过滤”两个正交的检索维度。模块按“树结构维护、导航浏览、弱约束模式、标签字典、标签过滤”五个子域分工。
分类树采用邻接表模型组织,每条分类承载分类编码、分类名称、分类类型、父节点、分类路径、排序号、扁平模式标记等业务属性。本子功能要点:
分类导航是普通用户浏览文档的主路径。本子功能要点:
针对少数业务场景下“同一文档需多归属”的需求,模块对一级分类支持弱约束(扁平)模式。本子功能要点:
标签字典为系统提供一份统一的标签清单,与分类树正交。本子功能要点:
普通用户可按标签做轻量过滤。本子功能要点:
组织与用户管理模块承担组织树与用户记录的全生命周期管理,是权限管理模块与日志审计模块的数据底座。模块按“组织树维护、用户账号管理、角色与模块映射、密码与登录策略、会话失效”五个子域分工。
组织树同样采用邻接表模型,每条组织承载组织编码、组织名称、父节点、组织路径、排序号、启用状态等业务属性。本子功能要点:
用户记录承载账号、密码、密级、组织归属、角色、状态、登录信息、会话版本等业务属性。本子功能要点:
系统内置“普通用户、超级管理员、部门管理员”三档角色,每档角色映射到一组可访问的功能模块。本子功能要点:
模块统一管理密码存储与登录校验。本子功能要点:
模块通过会话版本机制实现令牌主动失效,无需维护服务端会话表。本子功能要点:
权限管理模块承担细粒度授权能力,是文档级安全的核心。模块按“可见性策略、授权维护、权限继承与透传、鉴权判定链、数据范围过滤”五个子域分工。
每份主案有一个“可见性类型”属性,决定默认情况下的可见范围。本子功能要点:
授权记录以“主体类型、主体标识、文档标识、五个操作位标记”形式存储。本子功能要点:
权限计算遵循“主案为权限源”的统一模型。本子功能要点:
每次文档访问请求都经过统一的鉴权判定链,按“短路优先”顺序执行多级判定。本子功能要点:
文档列表与用户列表均按角色做数据范围过滤。本子功能要点:
日志审计模块承担所有有意义操作的不可篡改记录,为事后追溯与合规审计提供底层数据。模块按“事件分类、写入流程、查询导出、不可篡改性”四个子域分工,目标是“任何一次业务变更、权限调整、登录尝试、销毁动作都可被事后还原与核查”。
模块预定义一套覆盖全业务的审计动作清单,任何一条写入记录都对应清单中明确的一种动作类型,避免因动作语义模糊导致的追溯困难。本子功能要点:
所有审计写入与对应的业务写入在同一个事务内完成,遵循“业务成功则审计必有、业务失败则审计不生”的铁律,避免审计与业务脱节。本子功能要点:
审计数据的价值取决于“可被高效检索”。模块对外提供多维组合查询与受控导出能力,供审计专员与合规检查使用。本子功能要点:
审计记录一旦写入即不可修改、不可删除,这是审计作为合规证据的前提。本子功能要点:
安全保密模块承担横切性安全能力,是其他五个业务模块的安全底座。模块按“身份认证、会话管理、密级管控、传输与存储加密、敏感信息收敛、文件销毁可追溯”六个子域分工,目标是“在保密管理的全生命周期中,对身份、通道、数据、行为四类要素形成闭环管控”。
模块统一管理登录认证流程,确保“账号可被证明、密码不可被还原、暴力破解不可成功”。本子功能要点:
模块通过“会话版本号”实现令牌主动失效,无需维护服务端会话表,兼顾安全性与横向扩展能力。本子功能要点:
模块对每份文档与每个用户赋予密级属性,并由鉴权判定链强制执行密级比对,杜绝“低密人员接触高密内容”。本子功能要点:
模块在生产部署中强制启用加密通道与存储隔离,覆盖数据“在途”、“在用”、“静态”三种状态。本子功能要点:
模块对所有可能泄露内部细节的对外响应统一脱敏,遵循“对外只给业务结论、内部细节不外露”的原则。本子功能要点:
模块区分“软删”与“销毁”两种语义,并提供完整的销毁追溯链,确保“该留的可恢复、该灭的不可重建”。本子功能要点:
本系统所有对外接口均以REST风格组织,请求与响应统一使用JSON编码,字符集统一为UTF-8。所有接口遵循“统一响应结构、统一错误码、统一分页协议、统一时间格式、统一鉴权头部、统一乐观锁机制”六项约定,前端由此获得一致的错误处理、加载态、重试策略与刷新策略,不必为每个接口单独编写防御性代码。
统一响应结构由响应包装器统一生成。成功响应包含业务状态、消息、业务负载、请求追踪标识四个字段,业务状态以约定的成功标识字符串表示操作成功、消息为人类可读的中文提示、业务负载承载具体数据、请求追踪标识为每次请求的唯一标识(同时被写入审计日志,便于前后端联调与问题追溯)。失败响应包含业务状态、消息、错误细节三个字段,业务状态以业务域命名的错误标识字符串表示(例如“参数无效”、“令牌失效”、“密级不足”、“权限不足”、“资源不存在”等),消息为人类可读的中文提示,错误细节为可选的附加说明(例如字段级校验错误清单)。HTTP状态码仅反映“传输层与应用层握手是否成功”,业务成败完全由响应体内的业务状态决定,前端在任何情况下都必须先读取业务状态字段、不得仅依赖HTTP状态判断业务成功。
统一错误码按业务域命名,覆盖通用错误、鉴权错误、权限错误、业务冲突、资源不存在、外部依赖错误等类别。通用错误包含参数缺失、参数格式错误、请求体解析失败等;鉴权错误包含未登录、令牌过期、令牌无效、会话版本不一致等;权限错误包含无操作权限、密级不足、不在可见范围等;业务冲突包含乐观锁冲突、唯一约束冲突、状态机非法迁移等;资源不存在包含用户、组织、分类、文档、配套资料、权限记录不存在等;外部依赖错误包含文件读写失败、转换失败、摘要计算失败等。每个错误码对应一条标准化的中文消息,前端在收到失败响应时可以根据错误码决定是显示友好提示、跳转登录、触发二次确认还是直接抛出。
统一分页协议规定:所有列表型接口接受页码(从1开始)与每页条数(默认值与上限由系统约定)两个查询参数,响应中的业务负载统一为“记录列表、总数、当前页、每页条数、总页数”五个字段。前端由此可以直接复用同一份分页组件,无需为不同接口编写适配器。
统一时间格式规定:所有时间字段在数据库中以毫秒精度存储协调世界时(UTC),在对外响应中以ISO 8601标准格式呈现(“年-月-日T时:分:秒.毫秒Z”形式,末尾Z后缀代表协调世界时),在前端展示时由前端按用户本地时区格式化。这种“数据库UTC、接口UTC、前端本地化”的三段式策略保证了多终端、多时区场景下时间的一致性,避免了“服务器时间与客户端时间不一致”导致的审计歧义。
统一鉴权头部规定:除健康检查、登录等少数无登录态要求的接口外,所有接口必须携带鉴权头部,头部中携带登录后获得的访问令牌;后端在校验失败时返回鉴权类错误码,前端收到鉴权类错误码后自动触发令牌刷新流程,刷新失败时跳转登录页。前端将访问令牌缓存在内存变量中(页面刷新即丢失),长效令牌以HttpOnly且SameSite严格的Cookie形式下发,避免被JavaScript读取,从而同时抵御XSS与CSRF。
统一乐观锁机制要求所有写操作在请求体中携带当前记录的版本号,后端在执行更新时附加“版本号必须与当前持久化版本号一致”的条件,若影响行数为零则返回乐观锁冲突错误码,前端弹出“该数据已被他人修改,是否刷新后重试”的二次确认。这一机制保障了“在不引入分布式锁的前提下,多用户并发操作同一份数据时的正确性”。
系统采用“单次表单提交、流式下载”的策略。上传时前端在一次表单请求中同时携带文件本体与元数据(标题、密级、分类、可见范围、标签等),后端在事务内完成文件落盘、摘要计算、预览生成、正文提取、审计写入、记录创建等步骤,事务提交后异步触发分片与向量化流程,最终返回新建文档的标识。下载统一通过下载接口触发,后端设置正确的响应头与媒体类型,并以流式响应返回,避免大文件全量加载进内存。在线预览统一通过预览接口触发,后端返回预览源的相对路径与版本号,前端按系统预置的策略选择深度渲染器或浏览器原生嵌入两种方式之一。
系统提供关键字检索与语义检索两类接口,并支持合并调用。关键字检索接口接收关键词、分类、密级、时间范围、标签、页码等查询参数,按多字段模糊匹配合并检索;语义检索接口接收自然语言问句、过滤条件、Top-N等参数,后端先将问句送至向量化服务得到查询向量,再在文档向量表上按相似度检索出候选文档集合;合并检索接口接收上述两类参数并按既定权重合并排序后分页返回。三类接口的响应结构除常规分页字段外,还在每条命中记录上附带“正文片段”字段,承载关键词或匹配片段在正文中的上下文片段,供前端在高亮组件中可视化呈现。
系统的使用流程围绕“普通用户、系统管理员”两类典型角色,以及“主方案、子方案、配套资料”三类业务对象展开,覆盖从首次部署到日常运行的全生命周期。普通用户承担方案文档的日常创建、上传、检索、查看、下载与挂载等业务操作;系统管理员在承担上述业务操作之外,还负责组织树建模、用户与密级管理、分类与标签字典初始化、权限授予、审计看板监督以及各类运维管理操作。整个使用流程在设计上遵循“日常操作高频简单、敏感操作低频可控、所有操作可追溯”的原则,使得非技术用户可以在五分钟内学会日常使用,而系统管理员则可以通过细粒度授权与审计看板对全员行为进行有效监督。
系统部署与初始化阶段,按集群部署方案,在五台银河麒麟服务器上分别完成数据库主备、应用服务、向量化服务、负载均衡器的部署与启动,将主负载均衡器的访问IP告知用户;系统启动后自动完成数据库主备同步初始化、初始迁移、根分类与初始系统管理员的创建,并向前端返回登录页。系统管理员使用初始账号登录后,第一时间修改密码并完善个人密级,随后依次完成“组织树建模、用户录入与密级分配、分类树建模、标签字典初始化”等项准备工作。组织树建模按层级逐级录入,每一级组织可以挂载多个用户,组织是后续“按组织”可见范围判定的基础。用户录入要求填写用户名、真实姓名、所属组织、密级。分类树建模按业务域逐级展开,每一份文档必须归属到某个分类,分类是后续按分类导航浏览的基础。
主方案的创建与流转是系统最核心的日常操作。普通用户在前端“主方案管理”页面点击“新建主方案”按钮后,系统弹出多标签页对话框,要求依次填写基本信息(标题、概述、密级、分类、可见范围、标签)、上传主方案文件(PDF、DOC、DOCX、WPS)、补充元数据(编制单位、编制时间、文号、关键词)。在用户点击“提交”后,前端先完成本地表单校验(必填项、字符长度、文件大小、文件格式),再将表单数据与文件流一同提交至后端。后端在事务内依次完成“字段再次校验、密级合法性校验(不允许创建密级高于当前用户密级的主方案)、文件落盘、文件摘要计算、预览生成(命中缓存则跳过转换)、正文提取、审计记录写入、事务提交”七个步骤;事务提交后异步触发分片与向量化流程,将正文按固定字数与段落边界切片、调用向量化服务计算向量表示并写入文档分片表与文档向量表,整个流程对用户表现为一次“提交、等待数秒、返回成功”。向量化在后台并行完成,不阻塞用户操作。返回成功后,主方案即对授权范围内的其他用户可见。
子方案与配套资料的挂载流程设计为“先有主方案、后挂子方案与配套资料”,使主方案成为业务上的“锚点”。对于子方案,普通用户进入主方案详情页后,点击“挂载子方案”按钮,在弹出的对话框中上传子方案文档,后端在文档表上将子方案的父方案指向主方案的标识,并写入“上传”+“挂载”审计记录。对于配套资料,普通用户进入主方案详情页后,点击“挂载配套资料”按钮,在弹出的对话框中选择已存在的配套资料文档,后端在挂载关系表上插入一条记录,记录挂载动作、挂载时间、关联的主方案与配套资料。
检索与查看流程是用户日常使用频率最高的操作。用户在主页面的检索工具栏输入关键词或自然语言问句后,前端将查询内容连同当前页码、分类筛选、时间范围筛选、密级筛选、标签筛选等参数一同提交至后端合并检索接口。后端并行启动两条召回链路:
第一条是关键字多字段合并检索,在主方案、子方案、配套资料三档对象的标题、概述、标签、检索专用文本字段上执行模糊匹配合并查询;
第二条是语义检索,将用户的问句送至向量化服务得到查询向量,再在文档向量表上按相似度检索出候选文档集合。
两路结果按既定权重合并、去重、排序后分页返回;命中正文时,后端进一步在正文存储字段中定位关键词或匹配片段首次出现的位置,截取前后各若干字符作为上下文片段一并返回。前端在表格中渲染检索结果时,对于命中正文的结果行,在该行下方延展一行“正文”片段,使用高亮组件把关键词在片段中可视化标红。用户点击“查看”按钮后,前端弹出预览对话框,左侧展示文件预览,右侧展示提取文本(按空行分段、显示段号与字数),让用户在不下载文件的情况下完整阅读。用户点击“下载”按钮时,前端调用下载接口触发浏览器的原生下载行为,后端在审计日志中记录“下载”操作。
权限管理流程由文档所有者或系统管理员发起。文档所有者在该文档的“权限管理”页面可以看到当前已授权的主体列表(其他用户或组织),可以为新主体授予“查看、下载、编辑、删除、授权”五类权限中的任意组合,也可以撤销已授予的权限。每一次授权与撤销均写入审计日志。授权行为本身也受权限判定链约束——只有持有“授权”权限的主体才能为他人授权,避免越权扩散。同时,所有授权操作均不能突破“密级比对”的天花板:低密级用户无法通过授权获得对高密级文档的访问能力。
文档销毁流程设计为“二次确认、不可逆销毁”,避免误删造成不可恢复的损失。普通用户在前端点击“删除”按钮时,系统弹出二次确认对话框,要求普通用户再次输入操作理由并确认;若确认为最终销毁,则在事务内删除数据库记录、删除对应的文件、删除预览缓存、删除文档分片与文档向量记录、写入“销毁”审计记录,操作不可逆,且销毁前再次要求普通用户输入登录密码。所有销毁操作均写入审计日志,构成完整的数据生命周期可追溯链条。
审计与监督流程由系统管理员承担。系统管理员进入审计看板后,可以按时间范围、操作类型、操作人、目标对象类型等维度组合筛选审计记录,并支持导出为通用电子表格供外部归档。审计看板展示的内容包括但不限于:登录与登出、查看与下载、上传与编辑、删除与销毁、授权与撤销、挂载与解绑、密码修改、用户启停、密级变更等。所有审计记录均不可修改、不可删除,记录中包含的“操作人用户名、真实姓名、组织名、目标对象名称”等字段均为操作发生时的快照,即便事后用户改名、组织调整或文档被销毁,历史日志仍然可读、可解释。
安全保密是本系统的核心设计目标,所有安全措施均围绕“分层防御、纵深防御、最小特权、可审计、可恢复”五项原则展开,构建从传输层到应用层再到数据层的完整防护体系。系统不依赖任何单一防护手段,而是通过身份认证、敏感操作二次认证、会话管理、密级管控、可见范围、细粒度授权、操作审计、哈希链防篡改、传输加密、存储隔离、应用层信封加密、敏感信息脱敏、错误信息收敛等多层机制叠加,形成“任何单一防线被突破都不会直接导致敏感信息泄露”的纵深格局。
在身份认证层面,系统采用密码加令牌的双因子机制,并对敏感操作叠加二次认证。用户在登录时提交用户名与密码,后端使用Argon2id算法对密码进行校验,可抵御GPU与ASIC暴力破解、且在抗碰撞变体上更稳健。校验通过后签发访问令牌,用于日常接口调用,有效期为1小时。令牌使用现代签名算法签发,签名密钥存储在后端进程的受控配置中、不落盘、不出进程。登录失败时系统不区分“用户名不存在”与“密码错误”,统一返回“账号或密码错误”,避免账号枚举攻击。连续登录失败达到阈值时账号被自动锁定一段时间,同时写入审计日志。在常规登录态之上,系统对敏感操作叠加二次认证:文档销毁、用户密级调整、用户角色变更、权限批量授予与撤销、备份恢复、主备切换等高权限或不可逆操作执行前,要求操作人再次输入登录密码并由后端使用Argon2id重新校验,同时限定二次认证会话时间窗口,避免“会话被劫持后即可执行敏感操作”的风险。
在会话管理层面,系统通过“会话版本号”字段实现“令牌主动失效”能力。每个用户在用户表上有一个会话版本号字段,每次签发访问令牌时该值被编码到令牌负载中;后端在校验令牌时不仅校验签名与有效期,还校验令牌中的会话版本号与数据库中的当前值是否一致,不一致即拒绝。当系统管理员对某用户执行强制下线、修改密级、修改角色、重置密码等敏感操作时,系统在事务内将该用户的会话版本号自增,使该用户已签发的所有令牌立即失效。在这种机制下,系统管理员对某用户做出权限调整后,该用户在数秒内即被强制重新登录,避免权限已被撤销但用户仍能继续操作。
在密级管控层面,系统对每一份文档与每一个用户均赋予密级属性。用户密级由系统管理员在创建用户时设定,且只能由系统管理员调整;文档密级由文档创建者在创建时设定。系统在鉴权判定链执行密级比对:用户的密级必须大于或等于文档的密级才能进行任何操作;密级比对失败时返回“密级不足”错误码,前端展示“您的密级不足以访问该文档”。这一比对发生在所有其他业务判定之前,与可见范围、授权记录共同构成“密级是天花板、可见范围是边界、授权是细粒度”的三层授权模型。
在细粒度授权层面,系统实现了基于访问控制列表的“主体、资源、操作”三元组授权模型。主体可以是单个用户,也可以是一个组织(组织内的所有用户自动继承该授权);资源是某一份具体的文档;操作细分为查看、下载、编辑、删除、授权五类,可以任意组合。授权记录在权限表中以“主体类型、主体标识、文档标识、五个权限位标记”的形式存储,并对该四元组建立唯一约束,防止重复授权。鉴权时,系统先查“主体直接持有的授权”,再查“主体所在组织持有的授权”,将两者的并集作为该主体的最终权限集合。授权行为本身也受权限判定链约束,只有持有“授权”权限的主体才能为他人授权,避免越权扩散。
在操作审计层面,系统对所有有意义的写操作(以及部分敏感读操作,如查看机密文档、下载配套资料)均写入审计日志。审计记录在事务内与业务变更原子提交,保证“业务成功则审计成功、业务失败则审计不产生”。每条审计记录包含操作类型、操作时间(毫秒精度)、操作人标识/用户名/真实姓名、操作人所在组织名、目标对象类型/标识/名称、操作前快照(部分敏感操作)、操作后快照(部分敏感操作)、来源IP、请求追踪标识、备注、前一条记录的哈希摘要、本条记录的哈希摘要等字段。审计记录之间以哈希链方式串联:每条记录在写入时同时计算其内容哈希并将上一条记录的哈希摘要一并纳入输入,使任何一条记录被事后篡改都会导致其后所有记录的哈希校验失败,从而具备“写入即不可篡改、不可删除、可验证”的特性。审计看板支持按多维度组合检索与导出,便于系统管理员与外部监督人员定期校验审计链的连续性与未被篡改性。
在传输加密层面,系统在生产部署中强制启用加密通道。后端服务通过部署单位密码基础设施签发的服务器证书对外提供加密接口,所有访问令牌、所有文件上传与下载、所有表单提交均在加密通道中传输,避免被中间人窃听或篡改。证书签发、信任链管理与密钥保管均由部署单位按涉密信息系统密码保障要求统一组织,本系统不引入任何外部认证服务。前端与后端之间的所有请求均通过同一加密通道,避免“接口走加密通道但文件走明文通道”的混合内容漏洞。
在存储隔离层面,系统对原始文件、预览缓存、日志文件、数据库文件进行物理目录隔离。原始文件按“业务类型、年月”分层存储,文件名使用随机生成的唯一标识而非用户上传的原文件名,避免通过文件名枚举攻击。预览缓存单独存储在专属子目录下,便于备份与清理。日志文件按“日期、进程”切分,避免单个日志文件过大。数据库文件存储在独立子目录下,与文件存储、日志目录互不干扰。所有目录的访问权限按银河麒麟操作系统文件系统的最小特权原则配置,运行账号仅具有对自身数据目录的读写权限,无系统目录的写入权限。
在应用层加密层面,系统在传输加密与存储隔离之上叠加一层信封加密,使原始文件即使被直接读取也无法还原出明文。系统在受控配置中持有一份主密钥(KEK),用于加密每份文档落盘时随机生成的数据密钥(DEK);DEK加密文档内容后与密文一同写入文件目录,KEK始终不落盘、不出进程,仅在系统启动时从受控配置或部署单位密码设施注入。数据库中的敏感字段(如审计日志中可能含敏感细节的备注、用户表的密码哈希之外的敏感属性等)同样按字段维度使用DEK加密、DEK由KEK包裹后存储。文件读取、字段读取、备份恢复时由应用服务按相反顺序解密,磁盘与备份介质上始终只存在密文,即便备份介质被带离专用网络也无法直接还原。密钥轮换由系统管理员在审批留痕后触发,新KEK生成后对存量DEK重新包裹,旧KEK在轮换窗口内保留以便解密历史数据,窗口结束后从内存中清除。
在运维安全层面,系统对自身运行所需的密钥、口令、连接串等敏感配置统一通过环境变量或专用配置文件注入,不硬编码在源码中、不写入版本控制。签名密钥、数据库连接串、初始管理员口令等配置项在系统启动时从受控来源读取,部署单位的运维管理员可以通过操作系统级的环境变量管理工具或专用密钥管理服务集中管理。系统的可执行产物附带完整性校验,运行启动时自校验关键资源文件的哈希值,发现异常立即中止并提示用户。系统默认不开放任何调试接口、不打印任何敏感日志。
本系统的可靠性设计从避免出错、容忍异常、快速恢复三个层次展开。避免出错方面:所有对外接口采用强类型入参校验,完成必填项、类型、长度、范围、枚举检查;所有写操作强制乐观锁版本号,避免并发覆盖;所有数据库操作经数据访问层与参数化查询执行,杜绝SQL注入;所有文件操作显式声明编码与字符集,避免编码异常崩溃。容忍异常方面:外部依赖调用(外部转换引擎、向量化服务、文件读写、摘要计算、加解密)均包裹异常捕获,异常返回错误码而非崩溃进程;外部转换引擎与向量化服务均设置独立超时与内存上限,异常不影响应用服务主进程;数据库连接池配置超时、回收与健康检查策略。快速恢复方面:应用服务、向量化服务、数据库主备、负载均衡器均按主备或集群方式部署,单节点故障可由备用节点或备用IP切换接管;设计备份机制,执行每周全量与每日增量备份,备份目录以只追加不覆盖方式写入,构成数据级兜底与防误删最后一道防线。
本系统的维修性设计体现在可观测、可定位、可修改、可回滚四个层面。可观测方面:响应中的请求追踪标识同时写入审计日志与运行日志,运维人员据此串联请求全链路;运行日志按日期、进程、级别切分,包含时间戳、级别、模块、行号、消息与上下文变量。可定位方面:错误码按业务域命名,运维人员据此快速锁定问题模块与场景;异常堆栈在开发模式输出到日志,在生产模式收敛到受控通道。可修改方面:分层与模块化设计使一处变更通常只影响一个模块。可回滚方面:所有变更通过版本控制管理,可快速回退历史版本。
本系统保障性设计核心是集群化部署、本地化运行、低门槛使用。集群化部署方面:采用5台银河麒麟服务器的集群部署方案,保证应用服务、向量化服务、数据库主备、负载均衡器的可靠运行。本地化运行方面:全部能力依托内部服务器资源完成,不依赖任何在线Office服务、在线PDF渲染服务、外部认证服务、在线大模型服务;备份恢复通过标准数据库管理工具与系统附带的备份执行脚本配合完成;提供正文回填与向量回填脚本,一键补齐历史数据的检索与语义匹配能力。低门槛使用方面:用户界面按简洁明了的标准设计,所有操作通过对话框与表单引导,无命令行交互;系统管理员的运维与管理操作均通过专用页面完成。
本系统测试性设计体现在可重复执行、持续集成四个层面。可重复执行方面:所有测试使用隔离的测试数据库或临时目录,互不污染、可任意顺序执行。持续集成方面:变更合并到主分支前必须通过全部自动化测试;每次提交后运行流水线测试。
本系统安全性设计体现在数据安全、操作安全、运行安全、保密安全四个层面。
数据安全方面,系统对所有原始文件、预览缓存、数据库文件按物理目录隔离并叠加应用层信封加密,磁盘与备份介质上始终只存在密文;备份策略遵循每周全量与每日增量备份,备份目录以只追加不覆盖方式写入,防止误删或恶意删除波及备份本身;数据库采用主备热备、同步双写机制。
操作安全方面,系统对销毁、密级调整、角色变更、权限批量授予与撤销、备份恢复、主备切换等高权限或不可逆操作统一要求“二次确认+二次认证”:前端弹出二次确认对话框、要求填写操作理由,后端再次校验登录密码并限定二次认证会话时间窗口;同时所有写操作携带乐观锁版本号,防止并发覆盖。
运行安全方面,系统对内部服务调用(外部转换引擎、向量化服务、文件读写、摘要计算、加解密)均包裹异常捕获并设置独立超时与内存上限,任一外部依赖异常都不会击穿应用服务主进程;应用服务、向量化服务、负载均衡器、数据库均按主备或集群方式部署,单节点故障由备用节点或备用IP接管;备份恢复与主备切换均由系统管理员在审批留痕后通过受控脚本执行,避免运维人员直接操作数据库或文件目录。
保密安全方面,系统通过密级管控、可见范围、细粒度授权、传输加密、应用层加密、敏感信息脱敏、错误信息收敛等多层机制叠加,形成“任何单一防线被突破都不会直接导致敏感信息泄露”的纵深格局;密钥、口令、连接串等敏感配置统一通过环境变量或专用配置文件注入,不硬编码在源码中、不写入版本控制;系统默认不开放任何调试接口、不打印任何敏感日志。系统研制与交付阶段同步开展安全漏洞扫描、渗透测试,确保系统在交付时满足安全性要求,降低运行后遭受攻击的风险。
本系统在研制过程中遇到若干关键技术问题,需要结合实际场景进行技术选型与工程攻关。
在本系统中,方案以PDF、DOC、DOCX、WPS等格式流转,但DOC、DOCX与WPS格式无法在浏览器中直接渲染,必须先转换为PDF。技术挑战方面,离线Office转换需要满足三个相互制约的条件:转换质量必须接近原始Office的渲染效果(保留字体、段落、表格、嵌入对象)、转换延迟必须控制在数秒内、转换依赖必须能够在专用网络内部署运行。解决途径方面,本系统选择成熟的开源办公套件作为离线转换引擎:开源办公套件跨平台、长期维护,转换质量在主流Office文档上接近原始效果;提供命令行转换接口,可被应用服务通过受控抽象层调用,无需常驻服务进程;安装包随服务器镜像一次性部署,不依赖任何在线服务。本系统在转换抽象层中将外部转换引擎的调用封装为“输入文件路径、输出目录,输出转换结果路径”的最小接口,并对外部进程设置独立的超时与内存上限;同时通过文件摘要缓存避免对同一份文件重复转换。验证效果方面,在数百份真实方案文档的样本上,转换成功率达到98%以上,平均转换时间为数秒级,缓存命中率在重复上传场景下接近100%。
在很多情形中,同一份方案可能会被多次上传。如果对每一次上传都重新执行转换与正文提取,将造成大量重复的CPU与磁盘开销。技术挑战方面,去重必须满足“语义等价的文件必须命中同一份缓存”,而语义等价的判定本身就是一个开放问题——同名但内容不同的文件不应命中、同内容但不同名的文件应该命中、内容仅空白差异的文件是否应该命中也需要决策。解决途径方面,本系统采用安全摘要算法计算出的文件摘要作为文件语义等价的判定标准:在文件落盘的同一事务中计算文件摘要,并将摘要写入文档表;预览缓存的键即为该摘要,缓存表记录摘要、预览PDF的相对路径、生成时间、引用计数;当上传件触发预览生成时,先按摘要查询缓存,命中则直接复用缓存的PDF,未命中才触发转换。这一策略保证了“内容相同的文件无论被上传多少次,只会被转换一次”,把转换成本从“上传次数线性增长”降为“唯一内容数线性增长”。验证效果方面,在大批量模拟上传(实际唯一内容远少于上传次数)的场景下,预览生成调用次数与唯一内容数一致,相比无缓存方案显著节省了转换开销,预览PDF的存储开销节省了同样的比例。
本系统承载的方案类业务需要在多人之间协同流转,需要持续在线可用,并需要抵御单机故障导致的服务中断与数据丢失。技术挑战方面,部署形态必须满足“任一应用节点故障不影响业务访问、任一数据库节点故障不丢失已提交事务、关键服务具备主备自动切换能力、关键数据具备多重备份兜底且备份介质不被误删与恶意删除波及”,同时所有组件必须能够在严格物理隔离的专用网络内部署运行。解决途径方面,本系统采用5台服务器的集群部署方案:第一、二、三台部署完全同构的应用服务包,组成无状态应用服务集群,由负载均衡器统一分发请求;第一台承担主负载均衡器与主向量化服务,第二台承担备用负载均衡器与备用向量化服务,主向量化服务不可达时由应用服务节点自动切换至备用向量化服务;第四、五台承担数据库主备集群,采用同步双写的热备方式,主库故障时由系统管理员通过主备切换脚本受控切换至备库;第三台作为集中备份目标,按每周日凌晨执行全量备份、每日凌晨执行增量备份,备份目录以只追加不覆盖方式落地,构成两台数据库同时损坏情况下的第三重保险与防误删的最后一道防线。前端构建产物由应用服务包以静态资源方式对外提供,无需独立部署。验证效果方面,应用服务集群支持任一节点故障下的业务连续,主备向量化服务支持主节点故障下的自动切换,数据库主备支持同步双写下的零数据丢失,备份策略支持多重故障下的数据兜底与误删可追溯恢复。
方案的检索需求是“既能按关键字精确命中标题、概述、标签、正文,又能按语义命中含义相近但用词不同的文档”,单一检索链路无法同时兼顾精确性与语义性。技术挑战方面,本系统需要在“不依赖在线大模型服务、不显著增加数据库负担、不破坏既有应用层协议”的前提下同时实现两类检索,并支持命中正文时给出上下文片段。因此,本系统采用“关键字合并检索+向量化语义检索”的双路混合方案:在文档记录上同时维护“完整正文存储字段”与“裁剪后的检索专用字段”,在文档分片表与文档向量表上分别记录每片文本与对应的向量表示;检索时并行启动两条召回链路:第一条对标题、概述、标签、检索专用字段执行模糊匹配合并查询,第二条将用户问句送至本地向量化服务得到查询向量、再在文档向量表上按相似度检索出Top-N候选片;两路结果按既定权重合并、去重、排序后分页返回;命中后,后端在正文存储字段中定位关键词或匹配片段首次出现的位置,截取前后各若干字符作为上下文片段;前端在结果行的下方延展一行展示片段,并使用高亮组件把关键词在片段中标出。这一方案在数千份文档的典型规模下响应时间控制在数百毫秒级别,且向量化依托本地资源完成、不依赖任何在线服务;数据规模增长后可平滑切换到专用全文检索引擎或专用向量数据库,前端与应用层协议均无需变更。
本系统质量控制聚焦核心门槛与回归验证。研制启动时明确硬性门槛:所有对外接口遵循统一响应结构、所有写操作支持乐观锁、所有迁移文件按版本号线性递增、所有审计记录与业务变更原子提交。代码合并到主分支前必须通过代码评审与自动化测试。发布前,在测试环境执行回归验证,确认未引入新缺陷。
本系统面临的主要技术风险可以归纳为“性能风险、兼容性风险、安全风险”,每一类风险均在研制过程中被识别、被评估、被缓解,剩余风险被显式记录并跟踪。
性能风险方面,系统的检索能力由“关键字多字段合并检索”与“向量化语义检索”双路召回构成,前者基于关系数据库的模糊匹配实现、后者基于文档向量表的相似度检索实现,在数据规模增长到数万份文档以上时,两路召回的响应时间均可能从当前的数百毫秒级别退化到秒级,影响用户体验。这一风险的缓解措施包括:在检索专用字段与文档向量表的相似度索引上建立合适索引、对常用筛选字段(分类、密级、状态)建立组合索引、对长字段做适度裁剪、对检索结果做合理分页,将“全表模糊扫描”与“全量向量比对”均控制在可接受范围内;同时,数据模型与对外接口在设计上即为切换到数据库自身的高级全文索引、专用全文检索引擎或专用向量数据库预留了平滑路径,未来如需切换,仅需替换后端实现而无需变更对外契约。。
兼容性风险方面,系统的离线格式转换依赖开源办公套件,而开源办公套件对部分复杂文档(包含复杂表格嵌套、宏、嵌入对象、特殊字体)的渲染可能存在偏差,与商用办公软件的呈现效果略有差异。这一风险的缓解措施包括:在样本库中收集各类典型文档并定期回归转换效果、对转换失败的文档显式提示用户“在线预览不可用,请下载后查看”、对关键文档提供“原文件下载”作为兜底通道。
安全风险方面,系统作为承载敏感方案文档的平台,自身始终是潜在的安全攻击目标。缓解措施包括分层鉴权、密级管控、操作审计、传输加密、存储隔离、敏感信息脱敏、错误信息收敛、依赖版本固定等。
进度风险方面,本系统采用迭代式研发,按“基础设施先行、核心功能优先、增强功能次之、辅助功能最后”的顺序推进。由于时间紧、任务重,故在进度方面可能存在滞后风险。
为控制进度风险,项目组采取三项措施:其一,每半周进行一次进度复盘,对照计划评估实际进度,发现偏差过大则立即分析根因并调整后续排期;其二,核心功能采用“垂直切片”方式开发,每个垂直切片包含“后端领域服务+应用层路由+前端界面+集成测试”的完整链路,使每个切片完成后即可由用户验收;其三,建立多阶段发布策略,每个阶段均有可演示的产出物,避免“全部完成才能演示”的整体性延期风险。
本系统研制团队,按“项目负责人、后端工程师、前端工程师、测试工程师”四个角色组织,项目负责人兼任架构师。
项目负责人对进度、范围与架构决策负责,承担需求对接、技术方案编写与维护、关键模块编码、代码评审与发版批准,兼顾现场支持。后端工程师负责后端业务层、数据层、基础设施层的编码与单元测试,并参与接口设计与错误码定义。前端工程师负责前端所有特性模块与公共组件的编码与组件测试,并参与接口设计与界面评审。测试工程师负责测试的编写与执行,同时维护自动化测试流水线与缺陷跟踪。
本系统研制周期约6周,其中开发约4周、安全测试与交付约2周。开发阶段按“基础期—核心期—增强期”三段推进:基础期(约0.5周)完成数据库初始化、迁移框架、鉴权框架、响应封装、分页协议、错误码体系、前后端接口客户端骨架;核心期(约2.5周)完成主方案、子方案、配套资料、文件上传、预览、关键字合并检索、文档分片与向量化等核心业务功能;增强期(约1周)完成审计、权限管理、标签筛选、批量回填、集群部署与主备切换等增强功能。安全测试与交付阶段(约2周)完成安全漏洞扫描、渗透测试、用户验收测试、用户手册与运维手册编写、试点部署、正式发版。