初始导入:PhoneRail 五路手机直供电源板
原理图/PCB 已在 EasyEDA 里做到 12 页跨页 0 漏接,固件刚完成骨架包 A1。 这次是把已有的一切一次性纳入版本控制,没有改动任何设计内容。 纳入: - 设计与需求文档、PROGRESS.md、小米8 参考原理图 PDF 与追脚脚本 - .claude/ 下的 EasyEDA 桥接工具链与几何/网表缓存(eda-parts.json、 pcb-parts.json、pcb-pads.json、p2-ch1.json 等,是重画各页的唯一事实来源) - 117 张验证截图(本项目所有方向问题都是靠人眼看截图发现的,属于证据不是垃圾) - firmware/ 的 A1 骨架与 site/ 文档站源码 .gitignore 排除:构建产物(firmware/build、host/build、sdkconfig)、 site/node_modules、__pycache__、桥接日志 _bridge.log、脚本自标的 *.stale。 .gitattributes 默认 `* -text`:现有 .py/.json 大多是 CRLF,原样存, 不让 git 重写行尾。唯一例外是 *.sh 强制 LF —— 带 \r 的 shell 脚本 bash 跑不了。 Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01QYuExfgyYa6DzRRcUso8M8
这个提交包含在:
@@ -0,0 +1,289 @@
|
||||
/* PhoneRail 需求文档站 —— 主题定制
|
||||
取色:品牌青(板子的阻焊)+ 警示琥珀(铜箔)。
|
||||
两处非默认的排版决定:
|
||||
1) 正文加宽到 1080px —— 文档里 5~6 列的需求表在 688px 下会被压成一堆折行;
|
||||
2) ⚠️ / ✅ 开头的引用块渲染成告警卡片(转换在 config.mts 的 markdown 插件里)。 */
|
||||
|
||||
:root {
|
||||
--vp-c-brand-1: #0d8074;
|
||||
--vp-c-brand-2: #0f766e;
|
||||
--vp-c-brand-3: #115e59;
|
||||
--vp-c-brand-soft: rgba(13, 148, 136, 0.14);
|
||||
|
||||
--vp-layout-max-width: 1560px;
|
||||
--vp-sidebar-width: 300px;
|
||||
|
||||
--rail-warn: #b45309;
|
||||
--rail-warn-bg: rgba(245, 158, 11, 0.09);
|
||||
--rail-warn-border: #f59e0b;
|
||||
--rail-ok: #15803d;
|
||||
--rail-ok-bg: rgba(34, 197, 94, 0.09);
|
||||
--rail-ok-border: #22c55e;
|
||||
|
||||
--vp-font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
||||
'PingFang SC', 'Microsoft YaHei', 'Noto Sans CJK SC', 'Source Han Sans SC',
|
||||
sans-serif;
|
||||
}
|
||||
|
||||
.dark {
|
||||
--vp-c-brand-1: #2dd4bf;
|
||||
--vp-c-brand-2: #14b8a6;
|
||||
--vp-c-brand-3: #0d9488;
|
||||
--vp-c-brand-soft: rgba(45, 212, 191, 0.16);
|
||||
|
||||
--rail-warn: #fbbf24;
|
||||
--rail-warn-bg: rgba(245, 158, 11, 0.12);
|
||||
--rail-warn-border: #b45309;
|
||||
--rail-ok: #4ade80;
|
||||
--rail-ok-bg: rgba(34, 197, 94, 0.11);
|
||||
--rail-ok-border: #15803d;
|
||||
}
|
||||
|
||||
/* ---------- 版心 ---------- */
|
||||
|
||||
.VPDoc.has-aside .content-container {
|
||||
max-width: 1080px;
|
||||
}
|
||||
.VPDoc:not(.has-sidebar) .content {
|
||||
max-width: 1080px;
|
||||
}
|
||||
|
||||
/* ---------- 表格:这份文档主要就是表 ---------- */
|
||||
|
||||
.vp-doc table {
|
||||
display: block;
|
||||
width: max-content;
|
||||
min-width: 100%;
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.vp-doc th {
|
||||
background: var(--vp-c-bg-soft);
|
||||
font-size: 13px;
|
||||
letter-spacing: 0.02em;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.vp-doc th,
|
||||
.vp-doc td {
|
||||
padding: 7px 12px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* 需求编号(表格首列里的 **FR-1**)等宽显示,便于扫读与引用 */
|
||||
.vp-doc table td:first-child > strong {
|
||||
font-family: var(--vp-font-family-mono);
|
||||
font-size: 0.92em;
|
||||
font-weight: 600;
|
||||
color: var(--vp-c-brand-1);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* 首列是编号 / 短标签,别让它折行 */
|
||||
.vp-doc table td:first-child {
|
||||
white-space: nowrap;
|
||||
}
|
||||
/* …但纯文字的首列(术语表、风险表)允许折 */
|
||||
.vp-doc table td:first-child:not(:has(> strong)) {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/* ---------- 告警卡片(config.mts 里给 blockquote 打的 class) ---------- */
|
||||
|
||||
.vp-doc blockquote.callout {
|
||||
margin: 20px 0;
|
||||
padding: 14px 18px;
|
||||
border-radius: 8px;
|
||||
border-left-width: 4px;
|
||||
border-left-style: solid;
|
||||
}
|
||||
|
||||
.vp-doc blockquote.callout > p {
|
||||
margin: 0;
|
||||
color: var(--vp-c-text-1);
|
||||
}
|
||||
.vp-doc blockquote.callout > p + p {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.vp-doc blockquote.callout-warn {
|
||||
background: var(--rail-warn-bg);
|
||||
border-left-color: var(--rail-warn-border);
|
||||
}
|
||||
.vp-doc blockquote.callout-warn strong {
|
||||
color: var(--rail-warn);
|
||||
}
|
||||
|
||||
.vp-doc blockquote.callout-ok {
|
||||
background: var(--rail-ok-bg);
|
||||
border-left-color: var(--rail-ok-border);
|
||||
}
|
||||
.vp-doc blockquote.callout-ok strong {
|
||||
color: var(--rail-ok);
|
||||
}
|
||||
|
||||
/* ---------- 矢量框图(config.mts 把 ```diagram=xxx 换成内联 SVG) ---------- */
|
||||
|
||||
:root {
|
||||
--dg-panel-fill: #f4f7f7;
|
||||
--dg-panel-line: #ccd8d5;
|
||||
--dg-box-fill: #ffffff;
|
||||
--dg-box-line: #9aaeaa;
|
||||
--dg-line: #7d918c;
|
||||
--dg-key-fill: #e3f4f1;
|
||||
--dg-key-line: #0d8074;
|
||||
--dg-hot-fill: #fdf3e3;
|
||||
--dg-hot-line: #d99b3a;
|
||||
--dg-hard-fill: #f0f5ea;
|
||||
--dg-hard-line: #7fa05e;
|
||||
}
|
||||
|
||||
.dark {
|
||||
--dg-panel-fill: #1a2220;
|
||||
--dg-panel-line: #33413d;
|
||||
--dg-box-fill: #222d2b;
|
||||
--dg-box-line: #4d5f5a;
|
||||
--dg-line: #8aa19b;
|
||||
--dg-key-fill: #113029;
|
||||
--dg-key-line: #2dd4bf;
|
||||
--dg-hot-fill: #302516;
|
||||
--dg-hot-line: #b57f2e;
|
||||
--dg-hard-fill: #1e2a1a;
|
||||
--dg-hard-line: #6f8d52;
|
||||
}
|
||||
|
||||
.vp-doc figure.dg {
|
||||
margin: 24px 0;
|
||||
padding: 0;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
/* 太窄的屏幕上让图横向滚动而不是把字压成一团 */
|
||||
.vp-doc figure.dg svg {
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-width: 560px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.vp-doc figure.dg .dg-panel {
|
||||
fill: var(--dg-panel-fill);
|
||||
stroke: var(--dg-panel-line);
|
||||
stroke-width: 1.2;
|
||||
}
|
||||
.vp-doc figure.dg .dg-box {
|
||||
fill: var(--dg-box-fill);
|
||||
stroke: var(--dg-box-line);
|
||||
stroke-width: 1.2;
|
||||
}
|
||||
.vp-doc figure.dg .dg-key {
|
||||
fill: var(--dg-key-fill);
|
||||
stroke: var(--dg-key-line);
|
||||
stroke-width: 1.6;
|
||||
}
|
||||
.vp-doc figure.dg .dg-hot {
|
||||
fill: var(--dg-hot-fill);
|
||||
stroke: var(--dg-hot-line);
|
||||
stroke-width: 1.4;
|
||||
}
|
||||
.vp-doc figure.dg .dg-hard {
|
||||
fill: var(--dg-hard-fill);
|
||||
stroke: var(--dg-hard-line);
|
||||
stroke-width: 1.4;
|
||||
}
|
||||
|
||||
.vp-doc figure.dg .dg-wire {
|
||||
stroke: var(--dg-line);
|
||||
stroke-width: 1.4;
|
||||
fill: none;
|
||||
}
|
||||
.vp-doc figure.dg .dg-dash {
|
||||
stroke-dasharray: 4 3;
|
||||
}
|
||||
.vp-doc figure.dg .dg-bus {
|
||||
stroke: var(--dg-key-line);
|
||||
stroke-width: 1.4;
|
||||
fill: none;
|
||||
}
|
||||
.vp-doc figure.dg .dg-pins path {
|
||||
stroke: var(--dg-box-line);
|
||||
stroke-width: 2.2;
|
||||
fill: none;
|
||||
}
|
||||
.vp-doc figure.dg .dg-head {
|
||||
fill: var(--dg-line);
|
||||
stroke: none;
|
||||
}
|
||||
|
||||
.vp-doc figure.dg text {
|
||||
font-family: var(--vp-font-family-base);
|
||||
fill: var(--vp-c-text-1);
|
||||
}
|
||||
.vp-doc figure.dg .dg-th {
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.vp-doc figure.dg .dg-t {
|
||||
font-size: 13px;
|
||||
}
|
||||
.vp-doc figure.dg .dg-s {
|
||||
font-size: 11.5px;
|
||||
fill: var(--vp-c-text-2);
|
||||
}
|
||||
.vp-doc figure.dg .dg-c {
|
||||
text-anchor: middle;
|
||||
}
|
||||
.vp-doc figure.dg .dg-r {
|
||||
text-anchor: end;
|
||||
}
|
||||
|
||||
/* ---------- 标题与正文细节 ---------- */
|
||||
|
||||
.vp-doc h2 {
|
||||
margin-top: 44px;
|
||||
padding-top: 22px;
|
||||
border-top-color: var(--vp-c-divider);
|
||||
}
|
||||
|
||||
.vp-doc h3 {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
/* 文档里用 `---` 分节,VitePress 默认 hr 太重,压淡一点 */
|
||||
.vp-doc hr {
|
||||
border-top: 1px solid var(--vp-c-divider);
|
||||
opacity: 0.55;
|
||||
margin: 36px 0;
|
||||
}
|
||||
|
||||
/* ASCII 框图:等宽 + 不换行,横向滚动 */
|
||||
.vp-doc div[class*='language-'] pre {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* 行内代码里的网络名 / 位号,稍微收一点 */
|
||||
.vp-doc :not(pre) > code {
|
||||
font-size: 0.86em;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
/* ---------- 侧边栏 ---------- */
|
||||
|
||||
.VPSidebarItem.level-1 > .item > .text {
|
||||
font-size: 13px;
|
||||
color: var(--vp-c-text-2);
|
||||
}
|
||||
|
||||
.VPSidebarItem.level-1 .VPSidebarItem.is-link > .item > .link > .text {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* ---------- 首页顶部:文档头部那张 元信息表 更像一张卡片 ---------- */
|
||||
|
||||
.vp-doc h1 + table {
|
||||
margin-top: 18px;
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户