docs+framework: canon, system-profile, gdd, registry, 6a framework

This commit is contained in:
2026-09-30 12:57:28 +08:00
commit e030f69591
31 changed files with 1334 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>卷库房 · 案卷目录 — 临川县正衡律师事务所</title>
<link rel="stylesheet" href="../../assets/css/base.css">
<link rel="stylesheet" href="../../assets/css/secret.css">
<script defer src="../../assets/js/components.js"></script>
<script defer src="../../assets/js/vendor/alpine.min.js"></script>
</head>
<body data-page="15" data-total="19">
<header>
<nav>
<a class="brand" href="login.html">卷库房</a>
<a href="query.html">案卷查询</a><a href="results.html">检索结果</a>
</nav>
</header>
<!-- 卷宗详情页模板(access-protected 形,assets/templates/html/access-protected.html):
6b 按触达表逐卷复制为 s01-dossier.html … 编号式不剧透文件名;
每页 data-access 只写该卷承办的账号,无级别阶梯(R10);正文=公文表格排版(R6)。 -->
<main x-data="access" data-access="handler">
<div x-show="!unlocked">
<p>本卷仅限承办人员查阅。请先登录。</p>
<p><a href="login.html">卷库房登录</a></p>
</div>
<div x-show="unlocked" x-cloak>
<h1>案卷目录</h1>
<article class="sheet">
<div class="doc-head"><span class="doc-no">〔档号占位〕</span><h2>〔案卷标题占位〕</h2><p class="doc-meta">立档单位:临川县正衡律师事务所 | 状态:在库</p></div>
<p>〔卷内文书清单占位——6b 按触达表填入,一文书一深页〕</p>
</article>
</div>
</main>
<footer x-data="progress"><div class="footer-inner">
<span>© 2015 临川县正衡律师事务所 · 卷库房</span><span class="progress" x-text="seen.length + '/' + document.body.dataset.total">15/19</span>
</div></footer>
</body>
</html>
+35
View File
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>卷库房 · 登录 — 临川县正衡律师事务所</title>
<link rel="stylesheet" href="../../assets/css/base.css">
<link rel="stylesheet" href="../../assets/css/secret.css">
<script defer src="../../assets/js/components.js"></script>
<script defer src="../../assets/js/vendor/alpine.min.js"></script>
</head>
<body data-page="12" data-total="19">
<header>
<nav>
<a class="brand" href="login.html">卷库房</a>
</nav>
</header>
<!-- Shape C 登录门(assets/templates/html/login-multi.html):一个登录框、多个身份,不拆两个表单(R10)。
data-grant = 走查看到的身份平列;data-grants = 运行时 账号→身份 映射。账号哈希与密码哈希由步骤 3/5 设计、
6b 填入;此处只落壳,不贴任何真实凭据(R3/R4)。账号格式可照实贴出,密码推导永不出现(R4)。 -->
<main x-data="gate" data-grant="handler,intern" data-next="query.html" data-fail-hint="账号或密码有误"
data-grants='{"<hash:account-1>":{"id":"handler","pw":["<hash:pw-1>"]},
"<hash:account-2>":{"id":"intern","pw":["<hash:pw-2>"],"reskin":"secret"}}'>
<form class="gate" @submit.prevent="submit">
<label for="u">账号</label><input id="u" type="text" name="account" placeholder="工号" data-expect-hash="<hash:account-1>,<hash:account-2>">
<label for="p">密码</label><input id="p" type="password" name="password" placeholder="密码" data-expect-hash="<hash:pw-1>,<hash:pw-2>">
<p class="gate-error" x-show="error" x-text="error" x-cloak></p>
<button type="submit">登录</button>
</form>
<p><a href="../home.html">返回所网首页</a></p>
</main>
<footer x-data="progress"><div class="footer-inner">
<span>© 2015 临川县正衡律师事务所 · 卷库房</span><span class="progress" x-text="seen.length + '/' + document.body.dataset.total">12/19</span>
</div></footer>
</body>
</html>
+34
View File
@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>卷库房 · 案卷查询 — 临川县正衡律师事务所</title>
<link rel="stylesheet" href="../../assets/css/base.css">
<link rel="stylesheet" href="../../assets/css/secret.css">
<script defer src="../../assets/js/components.js"></script>
<script defer src="../../assets/js/vendor/alpine.min.js"></script>
</head>
<body data-page="13" data-total="19">
<header>
<nav>
<a class="brand" href="login.html">卷库房</a>
<a href="query.html">案卷查询</a><a href="results.html">检索结果</a>
</nav>
</header>
<!-- 嵌套 D 查询壳(references/structure/form-system.md §4):多字段查询 = 多 data-expect-hash 门,
全部字段命中才提交到 results.html。各字段接受值(当事人/编号等)由步骤 3/5 设计、6b 填入;
输入只名其字段(R4)。表单 action 是检查器跟走的真实跳转(form-system.md §5)。 -->
<main x-data="gate" data-next="results.html" data-fail-hint="未检索到匹配案卷">
<form class="gate" action="results.html" method="get" @submit.prevent="submit">
<label for="party">当事人</label><input id="party" type="text" name="party" placeholder="当事人" data-expect-hash="<hash>">
<label for="docket">案号</label><input id="docket" type="text" name="docket" placeholder="案号" data-expect-hash="<hash>">
<label for="year">年度</label><input id="year" type="text" name="year" placeholder="立案年度" data-expect-hash="<hash>">
<p class="gate-error" x-show="error" x-text="error" x-cloak></p>
<button class="btn" type="submit">查询</button>
</form>
</main>
<footer x-data="progress"><div class="footer-inner">
<span>© 2015 临川县正衡律师事务所 · 卷库房</span><span class="progress" x-text="seen.length + '/' + document.body.dataset.total">13/19</span>
</div></footer>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>卷库房 · 检索结果 — 临川县正衡律师事务所</title>
<link rel="stylesheet" href="../../assets/css/base.css">
<link rel="stylesheet" href="../../assets/css/secret.css">
<script defer src="../../assets/js/components.js"></script>
<script defer src="../../assets/js/vendor/alpine.min.js"></script>
</head>
<body data-page="14" data-total="19">
<header>
<nav>
<a class="brand" href="login.html">卷库房</a>
<a href="query.html">案卷查询</a><a href="results.html">检索结果</a>
</nav>
</header>
<!-- 结果页(D 型):查询命中经账号矩阵解析(form-system.md §1/R10)——
每行目录条目 = 发文/立档单位 + 案卷类别 + 档号(R9,6b 填);
不可开行只出纯锁定告示,永不直接开文档(R8);
M14 补录行用 read-entry 形:锚点带 CONFIG.afterAttr 属性、值为来源页根相对路径,未读前该行整体不渲染
(assets/templates/html/read-entry.html,profile 记录共 2 条边,6b 定页)。 -->
<main x-data="access" data-access="*">
<h1>检索结果</h1>
<div x-show="!unlocked">
<p>请先登录。</p>
<p><a href="login.html">卷库房登录</a></p>
</div>
<div x-show="unlocked" x-cloak>
<table class="sheet">
<thead><tr><th>档号</th><th>案卷类别</th><th>状态</th></tr></thead>
<tbody>
<tr><td>〔6b 填目录条目〕</td><td>—</td><td>—</td></tr>
</tbody>
</table>
<!-- M14 读后出现边(profile 记录 2 条,6b 定页):条目行用 read-entry.html 形——
锚点带 CONFIG.afterAttr 属性、值为来源页根相对路径,x-show 读 readState.has(同一页路径);
未读前该行整体不渲染。示例 markup 见 skill 的 assets/templates/html/read-entry.html。 -->
</div>
</main>
<footer x-data="progress"><div class="footer-inner">
<span>© 2015 临川县正衡律师事务所 · 卷库房</span><span class="progress" x-text="seen.length + '/' + document.body.dataset.total">14/19</span>
</div></footer>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>卷库房 · 扫描件 — 临川县正衡律师事务所</title>
<link rel="stylesheet" href="../../assets/css/base.css">
<link rel="stylesheet" href="../../assets/css/secret.css">
<script defer src="../../assets/js/components.js"></script>
<script defer src="../../assets/js/vendor/alpine.min.js"></script>
</head>
<body data-page="16" data-total="19">
<header>
<nav>
<a class="brand" href="login.html">卷库房</a>
<a href="query.html">案卷查询</a><a href="results.html">检索结果</a>
</nav>
</header>
<!-- 文书扫描件门(M2 Shape B,gate-b.html):就地解锁、不跳转;
解锁后正文块必须以 x-show="unlocked" 开头(check-solvable 的边界标记)。
密钥凭据三元组由步骤 3/5 设计(生活痕迹,永不随机串,R3);占位符只名字段(R4)。
6b 按 GDD 复制为各扫描件页;此模板页本身不接入触达链。 -->
<main x-data="gate">
<div class="sheet narrow" x-show="!unlocked">
<h1>扫描件调阅</h1>
<p>本件为已归档文书扫描件,调阅需验证密钥。</p>
<form class="gate" @submit.prevent="submit">
<label for="k">密钥</label>
<input id="k" type="password" name="key" placeholder="密钥" data-expect-hash="<hash>">
<p class="gate-error" x-show="error" x-text="error" x-cloak></p>
<button class="btn" type="submit">解锁</button>
</form>
</div>
<div x-show="unlocked" x-cloak>
<article class="sheet narrow">
<div class="doc-head"><span class="doc-no">〔文号占位〕</span><h2>〔文书标题占位〕</h2><p class="doc-meta">〔发文单位 / 日期 / 主送 — 6b 填〕</p></div>
<p>〔扫描件文书正文占位,零形容词公文语域〕</p>
<p class="doc-seal">〔印〕</p>
</article>
</div>
</main>
<footer x-data="progress"><div class="footer-inner">
<span>© 2015 临川县正衡律师事务所 · 卷库房</span><span class="progress" x-text="seen.length + '/' + document.body.dataset.total">16/19</span>
</div></footer>
</body>
</html>