@ aeolus- fleet/ 控制台
这个 欧洛斯语Name 运营商网络应用(Next.js). 它只能通过其 TRPC API 到达服务器 /trpc。 。 。 .
前五一:预计小版本之间会有所变化. 它的主页; 每条路线,其余的 /sign-in/* 和操纵台自己的 /api/* 列入,列在下 app/数字 :
| 路径 | 什麽 |
|---|---|
/sign-in | 使用 argo 的电子邮件和密码签名, 或是从 aeolus-core sign-in;在控制台通过pagasae进行签名时,代之以签入,以sign as argo作为允许的账户. 一个主控台派你到托管服务的登录。 会议人员 argo; 浏览器中只保留一个会话 cookie |
/ | 舰队概况,在WebSocket上直播:每艘有状态且船员会议运行地或等待舰艇迅速状态的舰艇,未经重载而更新(舰艇类型是滤波器,没有排队显示;有中队成员显示其中队);搜索并过滤URL;委托舰艇;每艘舰艇在对话后的行动:为等待船员的舰艇获得新的起动快讯(用船员行驶一次;在无人称号出动时先询问),释放或重载船员的舰艇(重载人员显示一次新鲜快讯),并让任何船只退役,但 argo (船名打出,以确认何时仍有露天交货;退役船在Show下显示已退役;从账户菜单上签出. 没有会议,它派你去 /sign-in当你在别的地方签了字 |
/ships/[shipId] | 船舶的一页,活口:状态,类型,会话运行地点,自何时,何时,何时受委托,何时的ID,如何进行最后的接线,如何用Resend and Dispission处理不处理的送出; 平,获得启动,再编组,放出,重命名(活口名检查并打出确认)或退役; 时间线标签,每对船舶的更改,最先更新,以及带有其消息的标签,通过回复被分组成线索. 在副工作表中打开信件( E)?message=及其信封、有效载荷(格式化的JSON或原始)及其交货历史和答复,其中打开了以发送者为接收者并回答的信息 |
/fleet-health | 健康,活地:分娩是否可行,分娩因由和地点被卡住,每一步一个,7天的趋势,24小时内被承认,电脑和无声中队成员. 它在每一页的侧边栏和TabBar上都出现了卡住的计数显示. /needs-attention 打开它 |
/fleet-health/[cause] | 一个原因打开了:每个地方的事实和交付。 一个无法完成的人提供 续发和解散, 与敬酒 |
/inbox | argo的一个收件箱,活(# 849):顶上的问题,打开最古老的问题,先用选取的驴取出;然后是消息,最新的信息,先用线程将其身体(markdown,链接)制成;再由插件船的消息用一个Done折成一行. 在电话中打开并完成, 全部放在桌面上( T)?filter=);桌面上两个有密钥(J、K、E、R)的平面板和电话上一个自己的页面(?message=) (中文(简体) ). 打开一个读取的标记; 标记为未读取该标记; 完成、 回复或回答确认 。 它的开放式计数,提问和消息一起,在每个页面的 Sidebar 和 TabBar 显示 |
/health | 上网,加上服务器的健康。 舰队什么也没有 |
/version | 没有会话:网页进程的版本,加上服务器从其中解答的版本 /api/version (其本身的和共同的),或 server: null 当它不回答。 只有版本:没有插件、迁移、配置或机队 |
从 npm 运行
软件包持有已建的控制台,作为Next.js的独立输出(.next/standalone:服务器,浏览器的文件,只有服务器运行的模块,Next.js和React在其中. 安装它不会安装其他任何设备: 大约30 MB, 其中Next.js及其构建工具耗用300 MB 以上. 它在运行前不会知道服务器地址:
npm install @aeolus-fleet/console
AEOLUS_SERVER_URL=https://fleet.example.com AEOLUS_CONSOLE_URL=https://fleet.example.com PORT=3000 npx aeolus-console start
aeolus-console start 运行独立的服务器( e).next/standalone/packages/console/server.js),没有Next.js遥测,直到 SIGINT 或者说 SIGTERM。图像可以复制 .next/standalone 独自运行 server.js 与 node设置 PORT, (中文(简体) ), HOSTNAME 财务报告和审定财务报表 AEOLUS_CONSOLE_URL。第三方代码的许可通知,以及控制台船只随行的字体 .next/standalone/THIRD_PARTY_NOTICES。 。 。 .
配置
环境变量,当应用运行时读取,在构建时从未读取 :
| 变量 | 默认 | 含义 |
|---|---|---|
AEOLUS_SERVER_URL | http://localhost:4000 | Aeolus服务器. 浏览器调用它 /trpc 在那里,有证书, 并跟随舰队 通过一个WebSocket到同一路径(ws:// 或者说 wss://),和网络应用程序 /health 询问其 /health (单位:千美元) AEOLUS_SERVER_INTERNAL_URL 因此,两者必须达到它。 在服务器的一个主机后,它是服务器的公共URL. 在另一个主机上,服务器需要 COOKIE_DOMAIN 财务报告和审定财务报表 CONSOLE_ORIGIN 用于控制台(参见服务器 README) |
AEOLUS_SERVER_INTERNAL_URL | AEOLUS_SERVER_URL | 网络应用程序的服务器到达服务器时, 需要自己的呼叫 : /health, (中文(简体) ), /version,操作员的主题和连接中队. 仅服务器侧; 浏览器总是使用 AEOLUS_SERVER_URL。设置当公共地址路径通过网络应用程序前的代理程序返回时,例如 http://server:4000 内作曲,所以 /health 网络上不循环 |
AEOLUS_CONSOLE_URL | 无:需要 | 控制台自己的公共地址,例如: https://fleet.example.com,与服务器的源代码相同 CONSOLE_ORIGIN。web app的服务器只看到它绑定的地址,所以pagasae的签入重定向,控制台检查的来源以及它显示服务器的一个来源. 制作开始没有它,或没有http(s) URL,立即停止并说; npm run dev 使用请求的地址 |
AEOLUS_HOSTED_SIGN_IN_URL | 未设定 | 主机控制台在托管服务(Pagasae for host Eeolus)的登录. 准备, /sign-in 一次重定向到那里( 与 ?notice=signed-in-elsewhere 它显示通知和链接在那里),没有提供密码表;托管服务以一次性机票将操作员交回到 /sign-in/ticket?ticket=...,这里的交接链接失败。 取消设置, 控制台带有密码 |
AEOLUS_HOSTED_ACCOUNT_URL | 未设定 | 一个主机运营商的账户页,其中列出车队的限额. 设定, 账户菜单 您的账户, 打开它, 以及控制台的限值通知( 船舶限值的委员会, 每日信件限值的概览和编译) 以及 限值的公尺链接 ; 未设置, 没有您的账户和限值链接 |
AEOLUS_HOSTED_ANALYTICS_PROVIDER | 未设定 | 控制台用于主机安装的用法分析(第0025号决定): posthog 这是唯一的提供者。 取消设置, 或缺少密钥或主机, 控制台不会发送分析 |
AEOLUS_HOSTED_ANALYTICS_KEY | 未设定 | 提供者的项目密钥, 仅由 Web app 的服务器读取 |
AEOLUS_HOSTED_ANALYTICS_HOST | 未设定 | 提供者的 https 地址, 例如 https://eu.i.posthog.com。Web app的服务器发送到那里;浏览器只发布到Web app自己的 /api/analytics |
AEOLUS_SQUADRONS_URL | 未设定 | 在中队运行的地方,仅由网络应用的服务器阅读:浏览器从不调用中队. unset表示控制台没有中队. 设置然后连接它: Web app的服务器委托管理船(squadrons,与 fleet:read, (中文(简体) ), fleet:commission, (中文(简体) ), fleet:manage, (中文(简体) ), labels:define, (中文(简体) ), labels:assign, (中文(简体) ), fleet:on-behalf 财务报告和审定财务报表 scopes:declare)或给予它一个新的起步快取,并将其秘密交给中队服务器交给服务器;没有人看到这个秘密. 它到达服务器在 AEOLUS_SERVER_INTERNAL_URL (或 AEOLUS_SERVER_URL) 从网络应用程序的服务器也 |
AEOLUS_TRIERARCH_PLUGIN_URL | 未设定 | 三进制插件运行的地方,仅由网络app的服务器读取:浏览器从不调用. 取消设置表示控制台没有三重管插件. 设置然后连接它: Web app的服务器委托它的飞船(trierarch-plugin,与 fleet:read, (中文(简体) ), fleet:commission, (中文(简体) ), crew:assign, (中文(简体) ), crew:run, (中文(简体) ), labels:define 财务报告和审定财务报表 labels:assign) 或赋予它一个新的启动提示, 并将其秘密交给三进制插件服务器给服务器; 没有人看到这个秘密 |
AEOLUS_GATEWAY_URL | 未设定 | 网关运行的地方,仅由网络app的服务器阅读:浏览器从不调用. 未设置表示控制台没有网关. 设置然后连接它: Web app的服务器委托它的飞船(gateway,与 fleet:read, (中文(简体) ), fleet:commission, (中文(简体) ), fleet:on-behalf, (中文(简体) ), scopes:declare 财务报告和审定财务报表 fleet:verify)或给它一个新的起步提示,并将其秘密交给网关服务器到服务器;没有人看到这个秘密. 网关为自己的网页服务 |
AEOLUS_PAGASAE_URL, (中文(简体) ), AEOLUS_PAGASAE_CLIENT_ID, (中文(简体) ), AEOLUS_PAGASAE_CLIENT_SECRET | 未设定 | pagasae的地址和操纵台的应用证书(APP_CLIENTS客户端 console),仅由网络app的服务器阅读. 设置, 帐号通过 pagasae 的共享登录到控制台上 /sign-in/start, (中文(简体) ), /sign-in/done, (中文(简体) ), /sign-in/enter, (中文(简体) ), /sign-in/renew, (中文(简体) ), /sign-in/out);一个账户pagasae允许作为舰队标志的argo从avatar菜单或登录页面中作为argo输入(/sign-in/argo,首先警告 /sign-in/argo/confirm 当有人持有argo, 和指示从argo返回自己的时候/sign-in/argo/out; 账户菜单显示一个名为 pagasae 的账户, 每次显示且从未存储( 第0054, 0058号决定) , 账户头列出通过 pagasae 签名的账户可能打开的应用程序和车队( 标题设计 H1); 未设置, 或 当 pagasae 给出任何账户时, 账户的代码和标题分别显示控制台和自己的车队 |
PORT | 3000 | 要监听的端口 |
HOST | 127.0.0.1 | 要监听的界面 |
OTEL_EXPORTER_OTLP_ENDPOINT 以及其它问题 OTEL_* 设置 | 未设定 | OpenTeleometry上的追踪和度量衡,至于服务器:参见服务器README的"遥测". 未设置, 控制台没有发送 |
npm run dev 正在建设 @aeolus-fleet/common 财务报告和审定财务报表 @aeolus-fleet/ui 首先:控制台将两个已建软件包捆绑在一起,在网络应用程序的服务器上安装了 common's schemas, 并且只有 @aeolus-fleet/common/rules (没有zod)在浏览器中,用于活的形式提示(第0033号决定).
超越本地主机
在本地主机上,Plain http工作。 在任何其他主机上,请在 https: over plain 上为控制台服务 http 浏览器丢弃 Secure 会话 cookie, 因此签入失败( 签入页表示签入需要 https), 密码以清晰的文本行走 。 在前面设置一个 TLS 代理服务器, 设置 AEOLUS_SERVER_URL 转到服务器的 https 地址( 当启动时, 控制台会发出警告, 因为它是 plain http 超越本地主机),以及 HOST 仅当代理运行在另一台机器或容器上时。 服务器README的"Beyond localhost"有服务器的设置,以及一个主机背后的Caddy两个例子.
设计系统
控制台是来自 tokens.css 内 @aeolus-fleet/ui (单位:千美元)packages/ui/src),设计符号的单拷贝,旁边是标题和它所站的原子(灯光在 :root暗着 .dark,它遵循系统设置). app/globals.css 将其映射到 Tailwind v4 上。 每个功能的部分都生活在 features/<feature>/ (播放:CLAUDE.md,Web),共享的在 components/; 原子在 Base UI 有阴影/ ui (components.jsonGeist和Geist Mono自编自导 app/fonts/ 在 SIL 开放字体许可证下.
npm run storybook -w @aeolus-fleet/console 显示每个部分,每个有意义的状态都有一个故事和一个光和暗的工具栏. npm run build-storybook -w @aeolus-fleet/console 构建它;CI对每一个拉取请求都这样做.
作曲,在每一页的"头"(和"电话上"的"根"TopBar")中,以"argo"(argo)身份向一艘正在执行任务的舰艇发送了简写信息,其名称或任何类型的舰只;每条信息在发送前都保留了"一能"密钥.
账户Menu(Sidebar的账户按钮在桌面上,root TopBar的"Avatar"作为手机上的一个底页)显示谁被签入和本会话设备,主题(Light, Dark, System),并签名出局. 主题被存储在操作员的账户上;根版式在制作会话 cookie时会用它向服务器询问,因此页面从不闪出错误的主题,而登录的页面遵循系统.
船名和类型无论如何会被打入控制台的字段(commission, rename, the Compose acident):大写会随着打入而变成小写,因此HemmaFeature读取了hemmafeature. API保持严格,拒绝大写.
CommandPalette在Cmd+K(Ctrl+K)上或头部在桌面上搜索时打开,从root TopBar的手机搜索图标上打开了全屏:动作(Commission ship,作曲),按名称或类型排列的活舰,以及页面. 委员会的船舶在舰队上着陆,并开放委员会迪亚洛格/?commission=new) (中文(简体) ).
克勒德克勒德克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克勒斯克 一通电话不写事件,所以开放的一页每30秒再次读取快照,相对时间则每10秒读取.
平(分舰队一行和分舰队一行,船员代理船只;在一艘船等待船员时被禁用)要求该船的会话用"乒乓"回答. 在"最后被看到"下,飞船再放出"3分前平起平起平起地,还没有答案","4 s后答",或"收起平起平起地来,没有用平起地来答". 当一平等来时,平在祝酒中说出,而不是再送出一分. 一个确认或无法实现的交付重新装入了快照现场,所以答案立即显示.