Files
AIclinicalresearch/docs/08-项目管理/下一阶段行动计划-V2.0-模块化架构优先.md
HaHafeng 66255368b7 feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
2026-01-16 13:42:10 +08:00

842 lines
21 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 下一阶段行动计划 V2.0 - 模块化架构优先
> **计划周期:** 2025-11-07 至 2025-12-135周
> **核心目标:** 建立可独立部署的模块化架构 + 完成ASL核心功能
> **制定时间:** 2025-11-07
> **版本:** V2.0(架构优先版)
---
## 🎯 战略调整说明
### 为什么要调整?
**原计划V1.0** 快速启动ASL开发暂缓Schema隔离
**新计划V2.0** 先打好架构基础,再开发业务功能
### 核心变化
| 项目 | V1.0 | V2.0 | 原因 |
|------|------|------|------|
| Schema隔离 | ❌ 暂缓 | ✅ 必做 | 独立部署的前提 |
| 模块独立性 | 📋 计划中 | ⭐ 最高优先级 | 90%独立部署需求 |
| 开发重点 | ASL单模块 | ASL+DC+RVW三模块 | 统一架构标准 |
| 时间分配 | 1周基础+3周开发 | 2周基础+3周开发 | 架构投入增加 |
---
## 📊 整体规划 - 五周五阶段
```
Week 1-2架构基础 Week 3-4核心功能 Week 5测试优化
Schema隔离+模块化架构 → ASL标题摘要初筛+全文复筛 → 多模块联调+测试
```
| 阶段 | 时间 | 核心任务 | 交付成果 | 优先级 |
|------|------|---------|---------|--------|
| **阶段1** | Week 1 | Schema隔离方案 | 8个Schema设计+迁移计划 | P0 ⭐⭐⭐ |
| **阶段2** | Week 2 | 模块化架构实施 | 代码分层+独立部署能力 | P0 ⭐⭐⭐ |
| **阶段3** | Week 3 | ASL标题摘要初筛 | 双模型筛选功能 | P0 ⭐⭐ |
| **阶段4** | Week 4 | ASL全文复筛 | PDF全文分析功能 | P0 ⭐⭐ |
| **阶段5** | Week 5 | 多模块联调测试 | 三模块协同工作 | P1 ⭐ |
---
## 🏗️ 核心架构设计
### 三大独立模块
```
┌─────────────────────────────────────────────────────────┐
│ 云端统一平台 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ ASL │ │ DC │ │ RVW │ │
│ │AI智能文献│ │ 数据清洗 │ │ 审稿系统 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ↓ ↓ ↓ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │asl_schema│ │dc_schema │ │rvw_schema│ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────┘
每个模块都可以独立部署 90%
```
### 模块独立性设计原则
**独立的90%**
- ✅ 独立的数据库Schema
- ✅ 独立的API路由/api/asl/*, /api/dc/*, /api/rvw/*
- ✅ 独立的前端页面
- ✅ 独立的部署包
- ✅ 独立的配置文件
**共享的10%**
- 🔗 用户认证platform_schema.users
- 🔗 LLM网关common层
- 🔗 基础UI组件
- 🔗 部署基础设施
---
## 🚀 阶段1Schema隔离方案Week 1
> **时间:** 2025-11-07 至 2025-11-137天
> **目标:** 完成8个Schema设计和数据库迁移
### 核心目标
**为什么这是Week 1的重中之重**
1. Schema隔离是独立部署的前提条件
2. 影响后续所有代码的数据访问方式
3. 越早做,后续改动成本越低
4. 为三大模块ASL、DC、RVW建立清晰边界
---
### Day 1-2Schema设计
#### 8个Schema划分方案
| Schema名称 | 用途 | 核心表 | 优先级 |
|-----------|------|--------|--------|
| **platform_schema** | 平台基础 | users, roles, permissions | P0 ⭐ |
| **aia_schema** | AI问答 | projects, conversations, messages | P1 |
| **asl_schema** | AI智能文献 | literature_projects, literature_items, screening_results | P0 ⭐⭐⭐ |
| **dc_schema** | 数据清洗 | cleaning_projects, datasets, cleaning_rules | P0 ⭐⭐ |
| **rvw_schema** | 审稿系统 | manuscripts, reviews,评估标准 | P0 ⭐⭐ |
| **pkb_schema** | 知识库 | knowledge_bases, documents | P1 |
| **admin_schema** | 运营管理 | system_logs, statistics | P2 |
| **common_schema** | 通用数据 | llm_usage, feature_flags | P1 |
#### 重点关注三大模块
**ASLAI智能文献Schema**
```sql
-- asl_schema
CREATE SCHEMA asl_schema;
-- 文献项目表
CREATE TABLE asl_schema.literature_projects (
id UUID PRIMARY KEY,
user_id UUID REFERENCES platform_schema.users(id),
name VARCHAR(200) NOT NULL,
description TEXT,
status VARCHAR(50),
created_at TIMESTAMP,
updated_at TIMESTAMP
);
-- PICO配置表
CREATE TABLE asl_schema.pico_configs (
id UUID PRIMARY KEY,
project_id UUID REFERENCES asl_schema.literature_projects(id) ON DELETE CASCADE,
population TEXT NOT NULL,
intervention TEXT NOT NULL,
comparison TEXT NOT NULL,
outcome TEXT NOT NULL,
study_design TEXT NOT NULL
);
-- 文献条目表
CREATE TABLE asl_schema.literature_items (
id UUID PRIMARY KEY,
project_id UUID REFERENCES asl_schema.literature_projects(id) ON DELETE CASCADE,
title TEXT NOT NULL,
abstract TEXT,
authors TEXT,
journal VARCHAR(200),
year INTEGER,
doi VARCHAR(200),
-- 筛选结果
screening_status VARCHAR(50) DEFAULT 'pending',
final_decision VARCHAR(50),
ai_model1_decision VARCHAR(50),
ai_model2_decision VARCHAR(50),
ai_reason TEXT,
-- 全文
fulltext_path TEXT,
fulltext_extracted TEXT,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
```
**DC数据清洗Schema**
```sql
-- dc_schema
CREATE SCHEMA dc_schema;
CREATE TABLE dc_schema.cleaning_projects (
id UUID PRIMARY KEY,
user_id UUID REFERENCES platform_schema.users(id),
name VARCHAR(200) NOT NULL,
dataset_type VARCHAR(100),
status VARCHAR(50),
created_at TIMESTAMP
);
CREATE TABLE dc_schema.datasets (
id UUID PRIMARY KEY,
project_id UUID REFERENCES dc_schema.cleaning_projects(id) ON DELETE CASCADE,
file_name VARCHAR(500),
file_path TEXT,
row_count INTEGER,
column_count INTEGER,
created_at TIMESTAMP
);
CREATE TABLE dc_schema.cleaning_rules (
id UUID PRIMARY KEY,
project_id UUID REFERENCES dc_schema.cleaning_projects(id) ON DELETE CASCADE,
rule_type VARCHAR(100),
rule_config JSONB,
apply_order INTEGER
);
```
**RVW审稿系统Schema**
```sql
-- rvw_schema
CREATE SCHEMA rvw_schema;
CREATE TABLE rvw_schema.manuscripts (
id UUID PRIMARY KEY,
user_id UUID REFERENCES platform_schema.users(id),
title TEXT NOT NULL,
abstract TEXT,
fulltext_path TEXT,
journal_target VARCHAR(200),
status VARCHAR(50),
created_at TIMESTAMP
);
CREATE TABLE rvw_schema.reviews (
id UUID PRIMARY KEY,
manuscript_id UUID REFERENCES rvw_schema.manuscripts(id) ON DELETE CASCADE,
review_type VARCHAR(100), -- methodology, journal_requirements
score DECIMAL(5,2),
comments TEXT,
suggestions TEXT,
created_at TIMESTAMP
);
CREATE TABLE rvw_schema.evaluation_criteria (
id UUID PRIMARY KEY,
type VARCHAR(100), -- methodology, journal
criteria_name VARCHAR(200),
criteria_content TEXT
);
```
#### Day 1任务清单
- [ ] 绘制完整的Schema关系图
- [ ] 设计8个Schema的表结构
- [ ] 重点详细设计ASL、DC、RVW三个Schema
- [ ] 设计跨Schema的外键引用规则
- [ ] 编写Schema设计文档
**输出文档:**
- `09-架构实施/01-Schema隔离详细设计.md`
---
#### Day 2数据迁移计划
**现有表分类:**
| 现有表 | 迁移到 | 优先级 |
|--------|--------|--------|
| users, roles | platform_schema | P0 |
| projects, conversations, messages | aia_schema | P1 |
| knowledge_bases, documents | pkb_schema | P1 |
| 新建literature_* | asl_schema | P0 |
| 新建cleaning_* | dc_schema | P0 |
| 新建manuscripts, reviews | rvw_schema | P0 |
**迁移策略:**
1. **阶段性迁移**
- Phase 1创建所有Schema5分钟
- Phase 2迁移platform核心表30分钟
- Phase 3迁移AIA和PKB表1小时
- Phase 4创建ASL/DC/RVW新表30分钟
2. **零停机迁移**
- 使用数据库视图作为过渡
- 逐步切换应用代码
- 保留旧表作为备份
**Day 2任务清单**
- [ ] 编写SQL迁移脚本
- [ ] 设计数据验证方案
- [ ] 准备回滚方案
- [ ] 在测试环境验证
**输出文档:**
- `09-架构实施/02-数据库迁移计划.md`
- `09-架构实施/migration-scripts/`
---
### Day 3-4执行Schema迁移
#### Day 3测试环境迁移
**上午:准备工作**
- [ ] 备份测试数据库
- [ ] 创建8个Schema
- [ ] 运行迁移脚本Platform + AIA + PKB
**下午:验证和测试**
- [ ] 数据完整性验证
- [ ] 现有功能测试AI问答、知识库
- [ ] 修复发现的问题
#### Day 4生产环境迁移 + 新Schema创建
**上午:生产环境迁移**
- [ ] 备份生产数据库
- [ ] 执行Schema迁移
- [ ] 数据验证
**下午创建ASL/DC/RVW Schema**
- [ ] 创建asl_schema及所有表
- [ ] 创建dc_schema及所有表
- [ ] 创建rvw_schema及所有表
- [ ] 创建必要的索引
**验收标准:**
- [ ] 8个Schema全部创建完成
- [ ] 现有功能正常运行
- [ ] 三大模块Schema准备就绪
---
### Day 5Prisma Schema更新
**核心任务:**
- [ ] 更新Prisma Schema配置支持多Schema
- [ ] 为ASL、DC、RVW创建Prisma模型
- [ ] 生成Prisma Client
- [ ] 更新现有代码的数据库查询
**Prisma多Schema配置示例**
```prisma
// schema.prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["multiSchema"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
schemas = ["platform_schema", "aia_schema", "asl_schema", "dc_schema", "rvw_schema", "pkb_schema", "admin_schema", "common_schema"]
}
// Platform Schema
model User {
id String @id @default(uuid())
email String @unique
password String
role String
createdAt DateTime @default(now())
@@map("users")
@@schema("platform_schema")
}
// ASL Schema
model LiteratureProject {
id String @id @default(uuid())
userId String
name String
description String?
status String @default("active")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
picoConfig PICOConfig?
items LiteratureItem[]
@@map("literature_projects")
@@schema("asl_schema")
}
model PICOConfig {
id String @id @default(uuid())
projectId String @unique
population String
intervention String
comparison String
outcome String
studyDesign String
project LiteratureProject @relation(fields: [projectId], references: [id], onDelete: Cascade)
@@map("pico_configs")
@@schema("asl_schema")
}
// ... 其他模型
```
**验收标准:**
- [ ] Prisma Schema支持8个Schema
- [ ] 生成的Client可以正确访问所有Schema
- [ ] 类型定义完整
---
### Week 1 总结
**交付成果:**
1. ✅ 8个Schema设计完成
2. ✅ 数据库迁移完成
3. ✅ Prisma Schema更新完成
4. ✅ ASL、DC、RVW三大模块数据库就绪
**验收标准:**
- [ ] 所有现有功能正常运行
- [ ] 数据库完整性100%
- [ ] Prisma Client正常工作
- [ ] 三大模块可以开始开发
---
## 🔧 阶段2模块化架构实施Week 2
> **时间:** 2025-11-14 至 2025-11-207天
> **目标:** 建立清晰的代码分层 + 实现模块独立部署能力
### 核心目标
**建立三层架构 + 模块独立性**
```
backend/
├── platform/ # 平台基础层
│ ├── auth/ # 认证授权(共享)
│ ├── permission/ # 权限管理
│ └── storage/ # 存储服务
├── common/ # 通用能力层
│ ├── llm/ # LLM网关 ⭐ 核心
│ ├── document/ # 文档处理
│ └── utils/ # 工具函数
├── modules/ # 业务模块层(独立)
│ ├── asl/ # AI智能文献 ⭐⭐⭐
│ │ ├── api/
│ │ ├── services/
│ │ ├── types/
│ │ └── standalone.config.ts # 独立部署配置
│ │
│ ├── dc/ # 数据清洗 ⭐⭐
│ │ └── standalone.config.ts
│ │
│ ├── rvw/ # 审稿系统 ⭐⭐
│ │ └── standalone.config.ts
│ │
│ ├── aia/ # AI问答
│ └── pkb/ # 知识库
└── shared/ # 共享代码
├── types/
└── interfaces/
```
---
### Day 1-2代码重构 + LLM网关
#### Day 1目录重构
**任务:**
- [ ] 创建三层目录结构
- [ ] 迁移现有代码到对应目录
- [ ] 为ASL、DC、RVW创建模块骨架
- [ ] 更新import路径
**ASL模块目录结构**
```
modules/asl/
├── api/
│ ├── projects.ts # 项目管理API
│ ├── screening.ts # 筛选API
│ └── exports.ts # 导出API
├── services/
│ ├── project.service.ts
│ ├── screening.service.ts
│ └── llm.service.ts # 封装LLM网关调用
├── types/
│ └── index.ts
├── config/
│ └── standalone.config.ts # 独立部署配置
└── index.ts # 模块入口
```
#### Day 2LLM网关实现 ⭐ 核心
**为什么LLM网关如此重要**
- ASL的标题摘要初筛完全依赖它
- DC的智能清洗建议需要它
- RVW的审稿评估需要它
- 统一管理所有AI调用
**实现任务:**
- [ ] 实现BaseLLMAdapter抽象类
- [ ] 实现DeepSeekAdapter
- [ ] 实现QwenAdapter
- [ ] 实现LLMGateway主服务
- [ ] Feature Flag集成
- [ ] 配额检查
**核心代码:**
```typescript
// common/llm/LLMGateway.ts
export class LLMGateway {
async call(
userId: string,
model: string,
messages: Message[],
options?: LLMOptions
): Promise<LLMResponse> {
// 1. Feature Flag检查
// 2. 配额检查
// 3. 调用适配器
// 4. 记录使用量
}
}
```
**验收标准:**
- [ ] 可以调用DeepSeek和Qwen3
- [ ] Feature Flag正常工作
- [ ] 配额检查正常
---
### Day 3-5模块独立部署能力
#### Day 3独立部署配置
**为每个模块创建独立配置:**
```typescript
// modules/asl/config/standalone.config.ts
export const ASLStandaloneConfig = {
moduleName: 'ASL',
moduleId: 'asl',
version: '1.0.0',
// 独立部署模式
standalone: {
enabled: process.env.ASL_STANDALONE === 'true',
port: process.env.ASL_PORT || 3001,
apiPrefix: '/api/asl',
},
// 依赖的共享服务
dependencies: {
auth: {
required: true,
endpoint: process.env.AUTH_SERVICE_URL || 'http://localhost:3000/api/auth',
},
llm: {
required: true,
endpoint: process.env.LLM_SERVICE_URL || 'http://localhost:3000/api/llm',
},
},
// 数据库配置
database: {
schema: 'asl_schema',
url: process.env.ASL_DATABASE_URL || process.env.DATABASE_URL,
},
};
```
**任务清单:**
- [ ] 为ASL创建standalone.config.ts
- [ ] 为DC创建standalone.config.ts
- [ ] 为RVW创建standalone.config.ts
- [ ] 创建模块启动脚本
#### Day 4API路由隔离
**统一API路由规范**
```
/api/asl/* - AI智能文献
/api/dc/* - 数据清洗
/api/rvw/* - 审稿系统
/api/aia/* - AI问答
/api/pkb/* - 知识库
```
**任务:**
- [ ] 重构API路由按模块划分
- [ ] 实现路由级别的权限检查
- [ ] 为每个模块创建独立的API文档
#### Day 5Docker化 + 独立部署测试
**为每个模块创建Dockerfile**
```dockerfile
# modules/asl/Dockerfile
FROM node:18-alpine
WORKDIR /app
# 只复制ASL模块需要的文件
COPY package*.json ./
COPY tsconfig.json ./
COPY platform/ ./platform/
COPY common/ ./common/
COPY modules/asl/ ./modules/asl/
COPY shared/ ./shared/
RUN npm install
RUN npm run build
ENV ASL_STANDALONE=true
ENV ASL_PORT=3001
EXPOSE 3001
CMD ["node", "dist/modules/asl/index.js"]
```
**任务:**
- [ ] 为ASL创建Dockerfile
- [ ] 为DC创建Dockerfile
- [ ] 为RVW创建Dockerfile
- [ ] 创建docker-compose配置
- [ ] 测试独立部署
**docker-compose.yml示例**
```yaml
version: '3.8'
services:
# 统一部署模式
platform:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://...
# 独立部署模式
asl-standalone:
build:
context: .
dockerfile: modules/asl/Dockerfile
ports:
- "3001:3001"
environment:
- ASL_STANDALONE=true
- ASL_DATABASE_URL=postgresql://...
- AUTH_SERVICE_URL=http://platform:3000/api/auth
```
---
### Week 2 总结
**交付成果:**
1. ✅ 三层代码架构建立完成
2. ✅ LLM网关实现完成
3. ✅ ASL、DC、RVW三模块支持独立部署
4. ✅ Docker化完成
**验收标准:**
- [ ] 代码结构清晰,依赖关系正确
- [ ] LLM网关可以正常调用
- [ ] 三大模块可以独立启动和运行
- [ ] Docker镜像可以正常构建
---
## 🎯 阶段3-4ASL核心功能开发Week 3-4
> **时间:** 2025-11-21 至 2025-12-042周
> **目标:** 完成ASL标题摘要初筛 + 全文复筛
**详细内容参考原计划,核心任务:**
- Week 3项目管理 + CSV导入 + 标题摘要初筛
- Week 4全文复筛 + PDF处理
---
## 🔗 阶段5多模块联调Week 5
> **时间:** 2025-12-05 至 2025-12-139天
> **目标:** 验证三大模块的协同工作能力
### 核心测试场景
**场景1用户跨模块使用**
- 用户登录 → 使用ASL筛选文献 → 使用DC清洗数据 → 使用RVW审稿
**场景2数据共享测试**
- ASL筛选出的文献 → 导出到DC进行数据提取
- DC清洗的数据 → 用于RVW的稿件准备
**场景3独立部署测试**
- ASL独立部署 → 调用平台认证服务 → 正常工作
- DC独立部署 → 调用LLM网关 → 正常工作
**任务清单:**
- [ ] 端到端测试
- [ ] 性能测试
- [ ] 独立部署验证
- [ ] 文档完善
---
## 📊 关键决策记录
### 决策001Schema隔离必须执行 ✅
**决策:** Week 1必须完成Schema隔离
**理由:**
1. 独立部署的前提条件
2. 模块边界清晰
3. 数据库级别的隔离
4. 支持未来独立销售
**影响:** Week 1全部用于架构改造
---
### 决策002三大模块优先 ✅
**决策:** 重点投入ASL、DC、RVW三大模块
**理由:**
1. 90%独立部署需求
2. 核心差异化产品
3. 统一架构标准
**优先级:** ASL > DC = RVW
---
### 决策003LLM网关Week 2实现 ✅
**决策:** LLM网关在Week 2实现不是Week 1
**理由:**
1. Week 1专注Schema隔离
2. LLM网关需要Schema完成后才能正确配置
3. Week 2有充足时间实现
---
## 📈 进度跟踪
### 关键指标
| 指标 | 目标 | Week 1 | Week 2 | Week 3-4 | Week 5 |
|------|------|--------|--------|----------|--------|
| Schema隔离 | 100% | 100% | - | - | - |
| 模块化架构 | 100% | 0% | 100% | - | - |
| LLM网关 | 100% | 0% | 100% | - | - |
| ASL功能 | 100% | 0% | 0% | 100% | - |
| 独立部署 | 100% | 0% | 80% | 80% | 100% |
---
## 🎯 成功标准
### 技术标准
- [ ] 8个Schema全部创建并正常工作
- [ ] 三大模块ASL、DC、RVW可以独立部署
- [ ] LLM网关稳定可靠
- [ ] ASL核心功能完整
- [ ] 模块间可以协同工作
### 业务标准
- [ ] ASL可以完成文献筛选全流程
- [ ] 筛选准确率 > 85%
- [ ] 支持独立部署并对外销售
- [ ] 用户体验流畅
---
## 🔄 风险管理
### 风险1Schema迁移复杂度高
**风险等级:**
**缓解措施:**
- 在测试环境充分验证
- 准备完善的回滚方案
- 分阶段迁移,降低风险
### 风险2模块独立部署调试困难
**风险等级:**
**缓解措施:**
- 先实现统一部署,再实现独立部署
- 充分的日志和监控
- 详细的部署文档
### 风险3时间延长到5周
**风险等级:**
**缓解措施:**
- 架构投入是必要的
- 长期来看节省时间
- Week 3-4可以并行多人开发
---
## 📚 相关文档
- [里程碑4 - 架构改造](./02-里程碑规划/04-里程碑4-架构改造.md)
- [Schema隔离方案](../00-系统总体设计/05-Schema隔离方案与成本分析.md)
- [模块独立部署方案](../00-系统总体设计/06-模块独立部署与单机版方案.md)
- [ASL快速上下文](../03-业务模块/ASL-AI智能文献/[AI对接]%20ASL快速上下文.md)
---
**制定人:** AI助手
**审核人:** 待审核
**批准人:** 待批准
**最后更新:** 2025-11-07
**版本:** V2.0