# AARC
**Repository Path**: au114514/aarc
## Basic Information
- **Project Name**: AARC
- **Description**: 基于vue3+dotnet的web端线路图绘制工具
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 42
- **Forks**: 18
- **Created**: 2024-08-21
- **Last Updated**: 2026-09-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
先进型抽象线路图画布
Advanced Abstract Route Canvas
## ⚠重大架构调整⚠
本项目于`2026/9/3`发生了重大架构调整,原`aarc`目录被**拆分**为`aarc-core`和`aarc-web`。Fork 项目如果需要同步更新,详情请查看 https://aarc.jowei19.com/#/decoupling-upstream-alert
aarc 核心部分已分离,可自由移植到各种外围实现,例如 electron 或 tauri,或接入自己设计的保存/权限控制/分享/评论功能。
外围实现适配指南:`aarc-core\README.md`
## 使用地址
http://aarc.jowei19.com
## 项目地址
[Gitee(本体)](https://gitee.com/au114514/aarc)
[Github(自动同步镜像)](https://github.com/Aurouscia/aarc)
- 参与贡献:请查看本文件下面的[贡献代码](#贡献代码)部分
- 寻求帮助:请查看本文件下面的[帮助](#帮助)部分
- 给予鼓励:请在github上给我点个⭐️star,非常感谢!
## 主要功能
- 绘制线条角度为45度整数倍的线路图,以及车站、水体、出站换乘、线路列表等内容
- 客户端跨平台:支持在所有类型设备(PC/平板/手机)上进行编辑,可双指或滚轮缩放视角
- 服务端跨平台:支持在 linux 或 windows 服务器部署
## Roadmap
见 http://aarc.jowei19.com 的首页
## 架构
- 前端:vue3 + vite + ts
- 后端:aspNetCore
- 双向即时通讯:signalR
- ORM:entityFrameworkCore
- api文档和客户端代码生成:NSwag
## 开发和部署
### 前提条件
1. (必需)后端开发环境(二选一),确保`dotnet sdk 10.0`可用(ide一般会为你安装)
- [Visual Studio](https://visualstudio.microsoft.com/zh-hans/) 尽可能新版+web应用开发负载
- [JetBrains Rider](https://www.jetbrains.com/zh-cn/rider/) 尽可能新版
2. (必需)[node客户端](https://nodejs.org/en) 尽可能新版,并确认命令行中有npm命令可用
3. [git客户端](https://git-scm.com/downloads) 用来下载代码和提交更新
4. [visual studio code](https://code.visualstudio.com/download)(和第一条是两个东西)用来编辑前端代码
5. 一台服务器,以及关于“如何开网站”的基本常识(docker+nginx 或 iis)
### 开发步骤
过程中遇到任何问题,请看本文[帮助](#帮助)部分
1. 下载代码文件
- 如果使用git,在命令行中输入`git clone 【本仓库链接】`
2. 进入前端目录(`/aarc-web`),按照该目录下的`README.md`文件进行操作,编译前端代码
- 编译完成后,会自动输出到后端的`wwwroot`目录下
3. 双击项目根目录的sln文件,进入vs或rider
4. 生成/更新数据库架构
- 使用ef工具更新数据库架构之前,必须先将配置中的`Db:Type`和`Db:ConnStr`设置好
- 默认使用 sqlite 无需动配置
- db 文件会创建到 /Data 目录
- vs:顶部栏-工具-Nuget包管理器-包管理器控制台,在控制台中输入`update-database`
- rider:资源管理器-右键AARC项目(注意是项目不是解决方案)-EntityFrameworkCore-更新数据库
5. 修改配置(资源管理器中找到`appsettings.json`)
- 如果需要保存配置到git,直接修改(注意其中“必须修改”的部分)
- 如果不想保存配置到git,可选择新建:
- `appsettings.Development.json`(git忽略、仅本地调试)
- `appsettings.Production.json`(git忽略、仅生产环境)
- `appsettingsLocal.json`(git忽略)
上述四个文件格式完全一样
6. 点击顶部绿色启动按钮启动调试
7. 开发
### 部署步骤(linux 服务器)
1. 服务器上安装 [Docker](https://docs.docker.com/engine/install/)
2. 克隆代码到服务器
```bash
git clone 【本仓库链接】
cd aarc
```
3. 构建镜像
```bash
docker build -t aarc .
```
4. 启动容器(示例:映射到主机的 8080 端口)
```bash
docker run -d \
--name aarc \
-p 8080:8080 \
-v $(pwd)/data:/app/Data \
--restart unless-stopped \
aarc
```
- `-v $(pwd)/data:/app/Data`:将数据库等数据持久化到主机目录(自行选择合适的位置)
- 首次启动后,必须进行一次[更新数据库架构](#更新数据库架构)
5. 使用 nginx 反向代理到 8080 端口,配置 SSL 证书
### 部署步骤(windows 服务器)
1. 停止调试,选择导出位置和方式
- vs:点击顶部栏`生成-发布`
- rider:资源管理器-右键AARC项目-发布
2. windows服务器上安装`.net10.0 hosting bundle`(dotnet官网可以下载到)
3. 把导出的程序移动到服务器上(建议使用webDeploy,也可以直接用远程桌面的复制粘贴),并给予Users用户组该文件夹的控制权限,用IIS新建网站并指向该文件夹
- 服务器上第一次启动后,必须进行一次[更新数据库架构](#更新数据库架构)
4. 尝试启动并进入网站
5. 特别注意:不要让 IIS 的 Idle Time-out(默认20分钟)小于 AARC 的心跳机制间隔(默认3分钟)确保有人在编辑时,进程不被回收
### 初始化账号
1. 记住在`appsettings.json`(或其变体)中填写的`MasterKey`
2. 在地址栏中输入`<域名>/#/sudo`,进入管理页面
3. 点击“初始化管理员账号”
4. 输入管理员账号名称和`MasterKey`,即可初始化账号
5. 复制或记住生成的密码后,才能关闭页面
### 更新数据库架构
如果更新代码后,发现“xx列/xx表不存在”的错误,说明数据库架构版本落后
1. 记住在`appsettings.json`(或其变体)中填写的`MasterKey`
2. 在地址栏中输入`<域名>/#/sudo`,进入管理页面
3. 点击“更新数据库架构”
4. 输入`MasterKey`,即可更新数据库架构
## 贡献代码
- 本项目可以单独启动前端调试,请参考前端目录中的README.md文件
- 请**与作者充分qq沟通后**再修改代码和提出pr,避免做浪费时间的无用功,作者有义务避免代码库野蛮生长,所以会拒绝计划之外的pr
- 请查看项目根目录的`commit-msg.mjs`,并按照其中的指示设置git钩子,确保提交信息符合conventional commits规范
- 与作者交流,请加本文件[帮助](#帮助)部分中可以联系作者的那个qq群
## 法律风险
**本部分仅需“部署者”阅读,使用者无需关心**
### AutoMapper
本项目的依赖项`AutoMapper`(15.0.0+)属于`Lucky Penny Software LLC.`,使用dual commercial/OSS许可证
详情请访问 https://automapper.io 并检查其中“免费使用”的条件
- 可:在上述链接获取许可证key并填入配置文件的`AutoMapper:LicenseKey`处
- 或:确认自己满足“免费使用”条件并自行承担法律风险
## 帮助
**部署/开发遇到问题,请加qq群 798877093 联系作者**
**使用遇到问题,请加qq群 1083848751 联系作者或其他用户**
## 许可证
- **Apache-2.0**
- 可修改源码
- 无需开源衍生版本
- 可商用
- 必须保留版权信息
- 作者免责