FullAccess———Beta阶段代码规范
FullAccess——Myriad Beta 代码规范
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2601_FZU_SE 软件工程实践 |
| 这个作业要求在哪里 | 团队作业——Beta 冲刺与事后诸葛亮 |
| 团队名称 | FullAccess |
| 项目名称 | Myriad 校园问题上报与处理系统 |
| 这个作业的目标 | 统一三端的接口、状态、权限和交付约定,按变更范围选择回归检查,覆盖课程目标 4 |
| 其他参考文献 | FullAccess Alpha 代码规范与冲刺计划、Myriad 仓库的 AGENTS.md 和 docs/engineering-rules.md |
Myriad 由 React 管理端、React Native / Expo 移动端、FastAPI 服务和 PostgreSQL/PostGIS 数据库组成。本篇整理 Beta 开发沿用的工程规则,并把 Alpha 遇到的跨端问题写成可复验的场景。配置和执行命令以 Myriad CodeArts 仓库 中的实际文件为准。
目录
- FullAccess——Myriad Beta 代码规范
- 一、从 Alpha 复盘到 Beta 检查
- 二、目录、命名与工具
- 三、接口、状态与前端写入
- 四、事务、数据库与附件
- 五、AI 建议与配置
- 六、按改动范围做验证
- 七、提交与集成
一、从 Alpha 复盘到 Beta 检查
| Alpha 遇到的情况 | Beta 核对的结果 |
|---|---|
| 历史相关提示已显示,管理员还需要从当前事件打开旧工单和完工凭证。 | 从真实界面打开旧照片、时间和完工人员,返回当前事件,核对当前工单状态。 |
| 管理员采纳 AI 分类后还要继续派工,批量派工也可能出现部分失败。 | 验证采纳时分类与建单一起提交。逐项核对批量结果、已成功项和待处理项。 |
| 上报已经写入,但客户端收不到响应,应用重启后仍需知道这次操作的结果。 | 保留原幂等键、请求内容和版本,重试后核对只生成一条业务记录。 |
| Windows 实测中,默认启动下的 WebSocket 与 5 秒轮询表现不同。 | 分别记录 WebSocket 握手、消息和轮询结果。附件访问验证同时核对业务权限及目标环境的文件系统权限。 |
二、目录、命名与工具
| 位置 | 职责 |
|---|---|
apps/admin/ | 管理端列表、事件详情、派工、人员和权限相关交互 |
apps/mobile/app/、apps/mobile/src/ | Expo 路由及上报者、工作者功能,会话、草稿、地图和媒体等共用逻辑 |
services/backend/src/myriad/ | FastAPI 路由、请求与响应校验、领域规则、事务和后台任务 |
contracts/openapi.json、packages/api-client/ | HTTP 契约、生成类型和两个前端共用的客户端 |
services/backend/migrations/、services/backend/tests/ | 数据库版本迁移及后端回归用例 |
- 文本使用 UTF-8、LF,保留文件末尾换行。Python 缩进 4 个空格,其他文件默认 2 个空格,具体配置见
.editorconfig。Python 使用 Ruff 和 basedpyright,TypeScript 使用仓库的 strict 配置。 - Python 函数、变量及数据库字段使用
snake_case。TypeScript 函数和局部变量使用camelCase,组件和类型使用PascalCase,自定义 Hook 使用use前缀。HTTP 字段遵循生成契约,例如expected_event_version。 - 环境使用仓库指定的 Node 24、pnpm 11.18.0、Python 3.13 和 uv。依赖变更同步更新对应锁文件。新增代码沿用所在模块的目录和格式,注释优先说明权限、状态变化或加锁原因。
三、接口、状态与前端写入
- 从同一份契约生成客户端。 修改请求或响应时,先更新 FastAPI 路由和 Pydantic DTO,再生成 OpenAPI 与 TypeScript 客户端。管理端和移动端通过
@myriad/api-client调用接口,按服务端返回的allowed_actions、版本与回执状态展示操作。 - 保留三类记录的含义。
report保存上报人的原始描述和附件,event保存管理员组织处理的事件,work_order保存工作者的任务。重复上报可归入同一事件。一起派工可以创建多张独立工单。历史关联只提供查阅入口,当前事件继续按自己的状态流转。 - 写入成功以服务端响应或回查为准。 请求等待期间展示处理中。响应丢失时保留该账号的草稿、原请求内容、版本和幂等键,再用原键确认。收到明确的版本冲突后刷新数据,由用户根据最新状态重新提交。退出或切换账号时清理上一账号的私有草稿和缓存。
- 按错误码处理。 后端统一返回
code、message、details。会话失效引导重新认证,版本冲突引导刷新,参数不合法时保留可修改的输入。访问未授权对象时按接口约定返回404。
以工单完工为例,客户端按契约传入事件版本、工单版本、附件 ID 和 Idempotency-Key。服务端确认成功后,再更新工作者界面并刷新上报者回执。回归时核对工单、照片权限和上报者看到的结果。
四、事务、数据库与附件
- 写操作由调用方管理事务。 内部服务共用同一事务。状态、证据、修订记录、outbox 和幂等成功记录一起提交。派工确认分类和创建工单也按同一事务处理。批量派工按逐项事务返回每项结果。
- 统一加锁与版本检查。 按区域、按 ID 排序的事件、工单、人员及上报、请求或附件的顺序加锁。关系、合并和人员配置写入使用区域排他锁,普通业务使用区域共享锁。持锁后重新核对版本、当前工单和人员资格。一个事件最多保留一张有效工单。
- 幂等覆盖实际操作对象。 幂等范围包含操作者、操作名和键,请求指纹包含路径资源 ID 和请求内容。同键同内容返回已保存结果,同键异内容返回冲突。
- 结构变更用新迁移。 保留已采用的
0001_foundation.sql,新增迁移描述结构变化。数据库回归使用独立的_test库,清理和恢复演练也在独立环境执行。 - 图片通过受控接口读写。 服务端解码、校验大小与格式、重新编码,再写入私有磁盘,写入完成后标记为
ready。绑定随业务事务提交。每次读取按账号、区域和记录归属检查权限,历史完工凭证保留原来的证据。清理候选先排除业务和历史引用,事务提交后再删除文件。
五、AI 建议与配置
模型提供候选、证据和分类草案。服务端校验结构、候选、事件版本和配置,管理员确认后才执行合并、派工或分类变更。人工分类优先。建议过期、模型失败或额度耗尽时保留人工流程。关闭模型后,含图上报、人工派工、完工和回执仍应通过回归。
管理端使用 HttpOnly Cookie,移动端通过共用客户端携带会话令牌。模型密钥留在后端环境。提交、日志、测试截图和课程博客使用合成数据或脱敏材料。AI 辅助生成的代码与测试由提交者核对,交付记录以实际执行结果为准。
六、按改动范围做验证
下表的命令从仓库根目录执行。先检查改动及直接使用该能力的页面,再按影响扩大回归。
| 改动范围 | 验证方式 | 记录内容 |
|---|---|---|
| 公共接口、DTO 或客户端 | pnpm contract:generate 后执行 pnpm contract:check | OpenAPI 与生成类型一致,直接使用该接口的页面通过检查 |
| 管理端、移动端或共享 TypeScript | pnpm check,再复测受影响的页面 | 类型、前端回归与管理端构建结果 |
| 后端及工程脚本 | uv run python scripts/check.py | Ruff、basedpyright、契约和无数据库测试,以及脚本中的前端检查 |
| 数据库迁移、权限、事务或并发 | 配置 MYRIAD_TEST_DATABASE_URL 指向已准备的独立 _test 库,执行 uv run python scripts/check.py --database | 迁移、结构漂移检查、数据库回归与关键失败路径 |
| 真实三端流程与移动 Web | 启动测试服务并准备合成账号后运行 node scripts/check-full-browser.mjs,按改动补跑对应浏览器脚本 | 上报、派工、完工、回执和照片读取的实际结果 |
| 原生权限、定位、相机或安装 | 在对应模拟器或真机实际操作 | 设备、系统版本、运行版本、权限结果与未测项 |
测试记录分别写明 HTTP 与数据库、浏览器、原生构建、模拟器和真机的结果。页面截图等服务端状态更新后再取证。候选版本发布或答辩演示时,代码版本、运行材料和测试证据相互对应。
七、提交与集成
提交按可独立说明的改动拆分,标题沿用仓库的 类型(模块): 说明 格式,关联实际 Issue 或任务编号。例如 fix(reporting): 恢复上报响应丢失后的原键确认。成员自行完成实现与自测,集成负责人统一审核公共契约、数据库迁移和跨端影响,再按团队流程合入。
交付时写清楚改了什么、影响哪些角色、执行了哪些命令、结果如何、还有哪些环境待验。启动步骤、配置或接口行为发生变化时,同步更新对应手册。跨端问题以报修最后一步为准,例如完工后上报者能打开自己的回执和完工照片。
相关推荐
电池、AA‑CAES 与抽水蓄能多目标优化调度研究(三目标:成本、峰谷差、碳排放)(Matlab代码实现)
内容概要:本文针对电池、先进绝热压缩空气储能(AA-CAES)与抽水蓄能三种储能技术,构建了一个多目标优化调度模型,旨在协同优化电力系统的运行成本、负荷峰谷差和碳排放三个关键指标。研究采用Matlab进行代码实现,建立了综合考虑各类储能系统运行特性的精细化数学模型,并通过多目标优化算法求解Pareto最优前沿,深入分析了不同优化目标间的内在权衡与博弈关系。文中系统阐述了各储能单元的数学建模方法、系统运行约束条件的设定以及多目标优化问题的规范化处理流程,最终通过详细的仿真算例验证了所提模型与方法的有效性,充分展示了该调度策略在促进新能源消纳、降低系统综合运行成本和减少碳排放方面的巨大潜力与应用价值。; 适合人群:具备电力系统、能源经济或优化理论基础知识的研究生、科研人员及从事能源规划与调度的工程技术人员。; 使用场景及目标:①研究包含多种新型储能技术的综合能源系统协调调度问题;②学习如何建立电力系统多目标优化模型(涵盖经济性、环保性和运行稳定性);③掌握利用Matlab实现多目标优化算法并进行结果可视化分析与决策的方法。; 阅读建议:此资源以Matlab代码为核心,不仅提供了严谨的理论模型,更有完整的可运行代码实现。读者在学习时应结合代码深入理解模型构建的每一个细节,包括变量的定义、复杂约束的处理以及目标函数的加权聚合方法,并建议尝试修改模型参数或调整目标权重,以观察系统行为的动态变化,从而深化对多目标优化本质和工程应用的理解。
产业园区运营负责人如何精准匹配企业技术需求与科研成果?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
A股分钟数据涵盖股票、ETF、可转债及指数四大类 每条数据记录包含精确到分钟的时间戳,以及开盘价、最高价、最低价、收盘价、成交量、成交额六个核心字段 部分数据还提供前收盘价作为参考 股票与ETF数据细
A股分钟数据涵盖股票、ETF、可转债及指数四大类。每条数据记录包含精确到分钟的时间戳,以及开盘价、最高价、最低价、收盘价、成交量、成交额六个核心字段。部分数据还提供前收盘价作为参考。股票与ETF数据细分至1分钟、5分钟等周期,可转债在交易时段内逐笔生成分钟快照,指数数据则同步覆盖上证、深证等主要宽基指数,便于观察市场整体走势。 数据源:CMES金融数据库
产业园区运营负责人如何借助平台实现创新资源的动态配置与精准对接?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
国央企创新负责人如何实现科技创新资源的系统化管理和高效配置?.docx
国央企创新负责人如何实现科技创新资源的系统化管理和高效配置?



