fix(doc): resolve URS viewing and private-to-shared workflow in document pane for 10 review projects
This commit is contained in:
@@ -343,6 +343,62 @@ PROJECT_DEFS = [
|
||||
def sha256_text(text: str) -> str:
|
||||
return hashlib.sha256(text.encode("utf-8")).hexdigest()
|
||||
|
||||
def generate_urs_markdown(p, urs_title: str) -> str:
|
||||
code = p["code"]
|
||||
name = p["name"]
|
||||
cust = p["customer"]
|
||||
dtype = p["device_type"]
|
||||
iuse = p["intended_use"]
|
||||
tmarket = p["target_market"]
|
||||
htech = p["highlight_tech"]
|
||||
|
||||
return f"""# {urs_title}
|
||||
|
||||
> **文件编号**:{code}-URS-01
|
||||
> **受控密级**:商用机密 / 内部受控
|
||||
> **当前版本**:V1.0
|
||||
> **编制人**:张工(临床工程部)
|
||||
> **审核人**:李主管(技术与法规部)
|
||||
> **批准人**:王总监(研发总监)
|
||||
> **编制日期**:2026-09-11
|
||||
> **归属项目**:{name} ({code})
|
||||
> **归属客户/临床科室**:{cust}
|
||||
> **文档空间**:🔒 个人私密文档库 (支持一键共享至项目协作参考库)
|
||||
|
||||
---
|
||||
|
||||
## 1. 引言与适用范围
|
||||
本《用户需求说明书》(User Requirements Specification, 简称 URS) 旨在明确由【{cust}】与水木东方研发团队联合界定的【{name}】系统级功能、技术指标、临床使用流程及强制性安全准则。本文件作为产品经理工作流编制《系统需求规格书》(SRS) 与测试经理工作流构建验证矩阵的原始受控输入基线。
|
||||
|
||||
## 2. 临床背景与预期用途
|
||||
- **预期用途**:{iuse}。
|
||||
- **设备类型定位**:{dtype}。
|
||||
- **目标监管市场与分类**:{tmarket}。
|
||||
- **主要使用科室与操作者**:由具备专业资质的主治医师、专科护士或技师在医院受控临床环境中使用。
|
||||
|
||||
## 3. 核心临床诉求与用户痛点
|
||||
结合前期临床调研与专家论证,提炼以下核心诉求与技术突破点:
|
||||
1. **关键技术指标突破**:{htech}。
|
||||
2. **操作便捷性与防呆机制**:人机交互提示明确,具备声光工作指示与故障自检,关键风险动作具备硬件级物理防护与二次确认。
|
||||
3. **连续运行稳定性**:适应医院高负荷运转要求,电气与散热结构经过严苛冗余考核。
|
||||
|
||||
## 4. 关键功能与工程性能指标
|
||||
依据临床诉求,提炼并要求产品满足以下工程指标约束:
|
||||
- **功能特性**:涵盖设备主控、信号采集/驱动输出、人机交互与状态监测;
|
||||
- **精度界限**:核心指标公差必须控制在工程可用范围内,严禁出现无法计量的模糊描述;
|
||||
- **安全切断机制**:遇有超温、超压、断电、过流等异常工况,硬件必须在毫秒级执行安全封波或物理断开。
|
||||
|
||||
## 5. 强制性标准与安全法规要求
|
||||
产品研发生命周期全流程必须严格满足并遵从以下强制性标准:
|
||||
- {tmarket} 相关条款;
|
||||
- GB 9706.1-2020 医用电气设备第一部分:基本安全和基本性能的通用要求;
|
||||
- YY 0505-2012 / GB 9706.102 电磁兼容要求与试验。
|
||||
|
||||
## 6. 个人私密与协作共享声明
|
||||
- 本文档当前归档于张工的【个人私密文档库】。
|
||||
- 编制人可在右侧文档操作栏点击「一键共享给项目组」,将本 URS 共享至项目协作参考库,供李主管、王总监及下游团队成员共同评审查阅。
|
||||
"""
|
||||
|
||||
def build_data():
|
||||
print("开始整合 10 个项目的元数据、文档与多角色对话记录...")
|
||||
|
||||
@@ -390,8 +446,14 @@ def build_data():
|
||||
"updatedAt": "刚刚"
|
||||
})
|
||||
|
||||
doc_urs_id = f"doc-proj{pid}-urs"
|
||||
doc_srs_id = f"doc-proj{pid}-system_reqs"
|
||||
doc_svp_id = f"doc-proj{pid}-test_manager"
|
||||
urs_title = p["urs_file"]["name"].replace(".docx", "").replace(".pdf", "")
|
||||
|
||||
# 生成真实高质量 URS 文档正文
|
||||
urs_md = generate_urs_markdown(p, urs_title)
|
||||
urs_hash = sha256_text(urs_md)
|
||||
|
||||
# 读取真实高质量 Markdown 交付物
|
||||
srs_file = os.path.join(p["path"], "01-系统需求规格书.md")
|
||||
@@ -427,9 +489,11 @@ def build_data():
|
||||
"authorName": "张工"
|
||||
}
|
||||
|
||||
# 第一轮对话为上传 URS 需求文档
|
||||
# 第一轮对话为上传 URS 需求文档 (挂载真实文件附件及可点击 docId)
|
||||
if pair_idx == 0:
|
||||
user_msg["attachments"] = [p["urs_file"]]
|
||||
urs_att = dict(p["urs_file"])
|
||||
urs_att["docId"] = doc_urs_id
|
||||
user_msg["attachments"] = [urs_att]
|
||||
user_msg["category"] = "file"
|
||||
user_msg["intentTag"] = "📤 上传用户需求说明书 (URS)"
|
||||
|
||||
@@ -655,6 +719,28 @@ def build_data():
|
||||
})
|
||||
|
||||
# 交付物元数据
|
||||
# 0) 用户需求说明书 (URS) 交付物 (作为张工上传的个人私密文档,带一键共享)
|
||||
deliverables.append({
|
||||
"docId": doc_urs_id,
|
||||
"projectId": pid,
|
||||
"taskKey": "user_requirements",
|
||||
"title": urs_title,
|
||||
"stage": "V0.5",
|
||||
"category": "private",
|
||||
"creatorId": 1,
|
||||
"creatorName": "张工",
|
||||
"isFixedWorkflow": False,
|
||||
"isTemplateOnly": False,
|
||||
"lifecycleState": "approved",
|
||||
"isClaimed": True,
|
||||
"author": "张工",
|
||||
"reviewer": "李主管",
|
||||
"approver": "王总监",
|
||||
"updatedAt": "2026-09-11 09:00",
|
||||
"summary": f"由临床科室与研发团队联合编制的《{p['name']}》用户需求说明书 (URS),已由张工上传至个人私密文档库,可一键共享至项目参考库。",
|
||||
"space": "my_private",
|
||||
"governanceMode": "freeform"
|
||||
})
|
||||
deliverables.append({
|
||||
"docId": doc_srs_id,
|
||||
"projectId": pid,
|
||||
@@ -695,6 +781,29 @@ def build_data():
|
||||
})
|
||||
|
||||
# 存储文档正文 (完全对齐 MockDocumentMeta 契约)
|
||||
documents[doc_urs_id] = {
|
||||
"docId": doc_urs_id,
|
||||
"projectId": pid,
|
||||
"taskKey": "user_requirements",
|
||||
"title": urs_title,
|
||||
"stage": "V0.5",
|
||||
"category": "private",
|
||||
"creatorId": 1,
|
||||
"creatorName": "张工",
|
||||
"version": "V1.0",
|
||||
"lifecycleState": "approved",
|
||||
"isClaimed": True,
|
||||
"author": "张工",
|
||||
"reviewer": "李主管",
|
||||
"approver": "王总监",
|
||||
"updatedAt": "2026-09-11 09:00:00",
|
||||
"summary": f"{p['name']}用户需求说明书 (URS),已归档至个人私密文档库,支持一键共享至项目参考库。",
|
||||
"markdown": urs_md,
|
||||
"content": urs_md,
|
||||
"sha256": urs_hash,
|
||||
"space": "my_private",
|
||||
"governanceMode": "freeform"
|
||||
}
|
||||
documents[doc_srs_id] = {
|
||||
"docId": doc_srs_id,
|
||||
"projectId": pid,
|
||||
|
||||
Reference in New Issue
Block a user