@shanyucoder/flowgrid 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/nextjs/codegen/runners/lib/resolve-hub-id.mjs +7 -4
- package/adapters/nextjs/unitgen/runners/README.md +4 -4
- package/adapters/nextjs/unitgen/runners/generate.mjs +1 -1
- package/adapters/nuxt4/codegen/runners/lib/resolve-hub-id.mjs +7 -4
- package/adapters/nuxt4/unitgen/runners/README.md +4 -4
- package/adapters/nuxt4/unitgen/runners/generate.mjs +1 -1
- package/adapters/shared/common-gen.mjs +1 -1
- package/adapters/shared/resolve-hub-id.mjs +7 -4
- package/bin/flowgrid.mjs +43 -9
- package/bin/lib/audit-run.mjs +5 -1
- package/bin/lib/docs-hub-locale.mjs +9 -0
- package/bin/lib/init-scaffold.mjs +30 -2
- package/dist/docs/mcp/tools.js +4 -4
- package/dist/docs/mcp/tools.js.map +1 -1
- package/dist/docs/scan/ids.d.ts +1 -1
- package/dist/docs/scan/ids.js +9 -8
- package/dist/docs/scan/ids.js.map +1 -1
- package/dist/docs/scan/route.js +2 -2
- package/dist/docs/scan/route.js.map +1 -1
- package/dist/graph/mcp/tools.js +1 -1
- package/dist/graph/mcp/tools.js.map +1 -1
- package/engines/cases/render-cases.mjs +34 -26
- package/engines/docs/lib/audit-hub-prd.mjs +136 -0
- package/engines/docs/lib/audit-risks-catalog.mjs +142 -0
- package/engines/docs/lib/docs-hub-locale.mjs +100 -0
- package/engines/docs/lib/render-bundle-markdown.mjs +8 -1
- package/engines/docs/vitepress/config.ts +4 -4
- package/engines/spec/lib/audit-bundle-gaps.mjs +38 -7
- package/engines/spec/lib/audit-flow-gaps.mjs +2 -2
- package/engines/spec/lib/audit-legacy-gaps.mjs +10 -0
- package/engines/spec/lib/bundle-schema.mjs +3 -1
- package/engines/testcase/_staging-from-portal/runners/README.md +3 -3
- package/engines/testcase/_staging-from-portal/runners/generate.mjs +2 -2
- package/engines/testcase/_staging-from-portal/runners/lib/read-testcase.mjs +1 -1
- package/engines/testcase/runners/README.md +3 -3
- package/engines/testcase/runners/generate.mjs +2 -2
- package/engines/testcase/runners/lib/read-testcase.mjs +1 -1
- package/engines/testcase/runners/lib/resolve-hub-id.mjs +6 -6
- package/harness/be/skills/audit-api/SKILL.md +1 -1
- package/harness/be/skills/grill-api-unit/SKILL.md +1 -1
- package/harness/common/skills/legacy/SKILL.md +2 -2
- package/harness/docs/extracts/architecture-core.md +2 -0
- package/harness/docs/extracts/common-scope.md +8 -8
- package/harness/docs/extracts/extract-registry.docs.json +7 -3
- package/harness/docs/extracts/product-id-convention.md +58 -0
- package/harness/docs/extracts/spec-core.md +1 -1
- package/harness/docs/extracts/spec-prd-lite.md +11 -13
- package/harness/docs/extracts/spec-requirement.md +1 -1
- package/harness/docs/extracts/tpl-adoption-inventory.md +32 -0
- package/harness/docs/extracts/tpl-module.md +9 -40
- package/harness/docs/extracts/tpl-overview-prd.md +11 -0
- package/harness/docs/extracts/tpl-risk-register.md +28 -0
- package/harness/docs/extracts/tpl-surface-prd.md +7 -0
- package/harness/docs/rules/agent-compliance.mdc +1 -1
- package/harness/docs/rules/docs-hub.mdc +1 -1
- package/harness/docs/rules/flowgrid-process.mdc +1 -1
- package/harness/docs/skills/adopt/SKILL.md +43 -11
- package/harness/docs/skills/api-update/SKILL.md +1 -1
- package/harness/docs/skills/background-logic/SKILL.md +1 -1
- package/harness/docs/skills/common-spec/SKILL.md +1 -1
- package/harness/docs/skills/cross-service/SKILL.md +1 -1
- package/harness/docs/skills/db-erd/SKILL.md +1 -1
- package/harness/docs/skills/grill/SKILL.md +2 -0
- package/harness/docs/skills/grill-hub-prd/SKILL.md +38 -0
- package/harness/docs/skills/module/SKILL.md +9 -6
- package/harness/docs/skills/overview/SKILL.md +7 -6
- package/harness/docs/skills/risk-register/SKILL.md +29 -0
- package/harness/docs/skills/spec/SKILL.md +5 -4
- package/harness/docs/skills/surfaces/SKILL.md +4 -1
- package/harness/docs/skills/{business-process → user-flow}/SKILL.md +8 -8
- package/harness/fe/skills/gen-common/SKILL.md +1 -1
- package/harness/fe/skills/grill-prototype/SKILL.md +1 -1
- package/harness/fe/skills/prototype/SKILL.md +6 -6
- package/harness/fe/skills/unit/SKILL.md +4 -4
- package/harness/shared/SSOT_AGENT_PROTOCOL.md +1 -1
- package/harness/tests/extracts/grill-scenario-flow.md +2 -2
- package/harness/tests/skills/grill-testcase/SKILL.md +2 -2
- package/harness/tests/skills/scenario/SKILL.md +11 -11
- package/harness/tests/skills/testcase/SKILL.md +2 -2
- package/harness/tests/templates/SC.example.md +26 -26
- package/harness/tests/templates/TC.example.yaml +3 -3
- package/lexicon/registry-tags.en.txt +2 -2
- package/package.json +1 -1
- package/templates/project-skeleton/architecture/03-business-process/index.md +3 -0
- package/templates/project-skeleton/architecture/{03-business-process → 03-user-flows}/FLOW-login.md +16 -16
- package/templates/project-skeleton/architecture/{03-business-process → 03-user-flows}/FLOW-template.md +6 -7
- package/templates/project-skeleton/architecture/04-solution-strategy/index.md +1 -1
- package/templates/project-skeleton/architecture/08-cross-cutting/security.md +1 -1
- package/templates/project-skeleton/architecture/11-risks/index.md +7 -17
- package/templates/project-skeleton/architecture/11-risks/risk-register.md +34 -0
- package/templates/project-skeleton/architecture/12-glossary/index.md +5 -3
- package/templates/project-skeleton/architecture/model/workspace.dsl +7 -7
- package/templates/project-skeleton/overview/index.md +21 -43
- package/templates/project-skeleton/overview/operational-areas/_template.md +15 -22
- package/templates/project-skeleton/surfaces/_module-index.template.md +40 -0
- package/templates/project-skeleton/surfaces/_surface-index.template.md +44 -0
- package/templates/shared/bundle-authoring.md +6 -3
- package/templates/shared/default-layout.ejs +108 -62
- package/templates/shared/feature.bundle.yaml +15 -6
- package/templates/shared/ir/generated/spec.md +24 -24
- package/templates/shared/tpl-api-contract.md +5 -5
- package/templates/tests-skeleton/cases/README.md +1 -1
- package/templates/tests-skeleton/catalog/locale.yaml +16 -15
- package/templates/tests-skeleton/tpl-testcase-plan.md +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/docs/scan/route.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAS9E,MAAM,MAAM,GAAwC;IAClD;QACE,IAAI,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC;QAC1D,GAAG,EAAE;YACH,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,kBAAkB;SACzB;KACF;IACD;QACE,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;QAC1B,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,eAAe,EAAE;KACrF;IACD;QACE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC;QACtD,GAAG,EAAE;YACH,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/docs/scan/route.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/mcp/tools.js
CHANGED
|
@@ -127,7 +127,7 @@ export function registerTools(server) {
|
|
|
127
127
|
moduleDir: z
|
|
128
128
|
.string()
|
|
129
129
|
.optional()
|
|
130
|
-
.describe('CMP module root, e.g. surfaces/admin-web/CMP-01
|
|
130
|
+
.describe('CMP module root, e.g. surfaces/admin-web/CMP-ADM-AUTH-01/ (legacy .../modules/CMP-ADM-AUTH-01/ also accepted)'),
|
|
131
131
|
findingsPath: z.string().optional().describe('YAML/JSON with parityFindings[] from cloud'),
|
|
132
132
|
findingsJson: z.string().optional().describe('Inline JSON: { parityFindings: [...] }'),
|
|
133
133
|
}, async ({ moduleDir, findingsPath, findingsJson }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/graph/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/graph/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,24 +2,32 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Render tests hub case YAML → Markdown (member-first, locale-aware).
|
|
4
4
|
* Usage: pnpm cases:render
|
|
5
|
-
* pnpm cases:render -- cases/W-
|
|
5
|
+
* pnpm cases:render -- cases/W-ADM-AUTH-01
|
|
6
6
|
*/
|
|
7
7
|
import { readdir, readFile, writeFile } from 'node:fs/promises'
|
|
8
8
|
import path from 'node:path'
|
|
9
9
|
import { parse, stringify } from 'yaml'
|
|
10
|
+
import { TESTS_HUB_HEADINGS_EN } from '../docs/lib/docs-hub-locale.mjs'
|
|
10
11
|
|
|
11
12
|
const root = process.cwd()
|
|
12
13
|
const casesRoot = path.join(root, 'cases')
|
|
13
14
|
const args = process.argv.slice(2).filter((a) => a !== '--')
|
|
14
15
|
const only = args[0] ? path.resolve(root, args[0]) : null
|
|
15
|
-
|
|
16
|
+
|
|
17
|
+
function emptyLabel() {
|
|
18
|
+
return '_None_'
|
|
19
|
+
}
|
|
16
20
|
|
|
17
21
|
async function loadLocale() {
|
|
18
22
|
const raw = await readFile(path.join(root, 'catalog/locale.yaml'), 'utf8')
|
|
19
23
|
const doc = parse(raw) ?? {}
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
24
|
+
const contentLocale = doc.contentLocale || doc.memberLocale || 'vi'
|
|
25
|
+
const legacyNested = doc.headings?.vi || doc.headings?.en
|
|
26
|
+
const h = {
|
|
27
|
+
...TESTS_HUB_HEADINGS_EN,
|
|
28
|
+
...(legacyNested ? {} : doc.headings || {}),
|
|
29
|
+
}
|
|
30
|
+
return { contentLocale, h, none: emptyLabel() }
|
|
23
31
|
}
|
|
24
32
|
|
|
25
33
|
async function main() {
|
|
@@ -56,11 +64,11 @@ async function main() {
|
|
|
56
64
|
console.log(`cases:render: OK (${n} file(s))`)
|
|
57
65
|
}
|
|
58
66
|
|
|
59
|
-
export function renderCaseMarkdown(tc, { h }) {
|
|
67
|
+
export function renderCaseMarkdown(tc, { h, none = '_None_' }) {
|
|
60
68
|
const shortTitle = tc.title || tc.name || tc.summary || 'case'
|
|
61
69
|
const title = tc.id ? `${tc.id}: ${shortTitle}` : shortTitle
|
|
62
70
|
const story = tc.story?.trim()
|
|
63
|
-
const coverage = Array.isArray(tc.coverage) ? tc.coverage.map((c) => `\`${c}\``).join(', ') :
|
|
71
|
+
const coverage = Array.isArray(tc.coverage) ? tc.coverage.map((c) => `\`${c}\``).join(', ') : none
|
|
64
72
|
|
|
65
73
|
const member = [
|
|
66
74
|
`# ${title}`,
|
|
@@ -79,15 +87,15 @@ export function renderCaseMarkdown(tc, { h }) {
|
|
|
79
87
|
'',
|
|
80
88
|
`## ${h.preconditions || 'Preconditions'}`,
|
|
81
89
|
'',
|
|
82
|
-
bullets(tc.preconditions),
|
|
90
|
+
bullets(tc.preconditions, none),
|
|
83
91
|
'',
|
|
84
92
|
`## ${h.steps || 'Steps'}`,
|
|
85
93
|
'',
|
|
86
|
-
stepsNarrative(tc),
|
|
94
|
+
stepsNarrative(tc, none),
|
|
87
95
|
'',
|
|
88
96
|
`## ${h.expected || 'Expected'}`,
|
|
89
97
|
'',
|
|
90
|
-
bullets(Array.isArray(tc.expected) ? tc.expected : tc.expected ? [tc.expected] : []),
|
|
98
|
+
bullets(Array.isArray(tc.expected) ? tc.expected : tc.expected ? [tc.expected] : [], none),
|
|
91
99
|
'',
|
|
92
100
|
traceabilitySection(tc, h),
|
|
93
101
|
testMatrixSection(tc, h),
|
|
@@ -96,7 +104,7 @@ export function renderCaseMarkdown(tc, { h }) {
|
|
|
96
104
|
'<details>',
|
|
97
105
|
`<summary>${h.technical || 'Technical details'}</summary>`,
|
|
98
106
|
'',
|
|
99
|
-
`- **title
|
|
107
|
+
`- **title:** ${tc.title ?? ''}`,
|
|
100
108
|
tc.refs ? `- **refs:** \`${JSON.stringify(tc.refs)}\`` : null,
|
|
101
109
|
'',
|
|
102
110
|
`### ${h.testData || 'Test data'}`,
|
|
@@ -105,11 +113,11 @@ export function renderCaseMarkdown(tc, { h }) {
|
|
|
105
113
|
'',
|
|
106
114
|
'### Steps (machine)',
|
|
107
115
|
'',
|
|
108
|
-
stepsMachine(tc.steps),
|
|
116
|
+
stepsMachine(tc.steps, none),
|
|
109
117
|
'',
|
|
110
118
|
'### Test IDs',
|
|
111
119
|
'',
|
|
112
|
-
bullets(tc.testIds?.required),
|
|
120
|
+
bullets(tc.testIds?.required, none),
|
|
113
121
|
'',
|
|
114
122
|
tc.a11y ? '### a11y\n\n' + code(tc.a11y) : null,
|
|
115
123
|
'',
|
|
@@ -152,9 +160,9 @@ function testMatrixSection(tc, h) {
|
|
|
152
160
|
return `| ${id} | \`${facet}\` | ${desc} |`
|
|
153
161
|
})
|
|
154
162
|
return [
|
|
155
|
-
`## ${h.testMatrix || '
|
|
163
|
+
`## ${h.testMatrix || 'Test matrix (equivalence)'}`,
|
|
156
164
|
'',
|
|
157
|
-
'| Case | Facet |
|
|
165
|
+
'| Case | Facet | Description |',
|
|
158
166
|
'| --- | --- | --- |',
|
|
159
167
|
...rows,
|
|
160
168
|
'',
|
|
@@ -165,9 +173,9 @@ function docsCrossRefSection(tc, h) {
|
|
|
165
173
|
const screen = tc.refs?.screen || tc.traceability?.bundleScreen
|
|
166
174
|
if (!screen) return ''
|
|
167
175
|
return [
|
|
168
|
-
`## ${h.crossRefDocs || '
|
|
176
|
+
`## ${h.crossRefDocs || 'Docs hub cross-reference'}`,
|
|
169
177
|
'',
|
|
170
|
-
`- **Function:** \`${screen}\` —
|
|
178
|
+
`- **Function:** \`${screen}\` — align with docs hub \`ir/generated/spec.md\` and bundle \`*.bundle.yaml\` (SSOT).`,
|
|
171
179
|
tc.refs?.scenario ? `- **Scenario:** \`${tc.refs.scenario}\`` : null,
|
|
172
180
|
'',
|
|
173
181
|
]
|
|
@@ -175,23 +183,23 @@ function docsCrossRefSection(tc, h) {
|
|
|
175
183
|
.join('\n')
|
|
176
184
|
}
|
|
177
185
|
|
|
178
|
-
function stepsNarrative(tc) {
|
|
186
|
+
function stepsNarrative(tc, none) {
|
|
179
187
|
const steps = tc.steps || []
|
|
180
|
-
if (!steps.length) return
|
|
188
|
+
if (!steps.length) return none
|
|
181
189
|
return steps
|
|
182
190
|
.map((step, i) => {
|
|
183
191
|
if (typeof step === 'string') return `${i + 1}. ${step}`
|
|
184
192
|
if (step.as || step.label) return `${i + 1}. ${step.as || step.label}`
|
|
185
|
-
if (step.action === 'goto') return `${i + 1}.
|
|
186
|
-
if (step.action === 'fill') return `${i + 1}.
|
|
187
|
-
if (step.action === 'click') return `${i + 1}.
|
|
193
|
+
if (step.action === 'goto') return `${i + 1}. Open \`${step.path ?? ''}\``
|
|
194
|
+
if (step.action === 'fill') return `${i + 1}. Fill \`${step.testId ?? 'field'}\``
|
|
195
|
+
if (step.action === 'click') return `${i + 1}. Click \`${step.testId ?? 'control'}\``
|
|
188
196
|
return `${i + 1}. ${step.action ?? 'step'}`
|
|
189
197
|
})
|
|
190
198
|
.join('\n')
|
|
191
199
|
}
|
|
192
200
|
|
|
193
|
-
function stepsMachine(items = []) {
|
|
194
|
-
if (!items?.length) return
|
|
201
|
+
function stepsMachine(items = [], none = '_None_') {
|
|
202
|
+
if (!items?.length) return none
|
|
195
203
|
return items
|
|
196
204
|
.map((step, i) => {
|
|
197
205
|
const parts = Object.entries(step)
|
|
@@ -202,8 +210,8 @@ function stepsMachine(items = []) {
|
|
|
202
210
|
.join('\n')
|
|
203
211
|
}
|
|
204
212
|
|
|
205
|
-
function bullets(items = []) {
|
|
206
|
-
return items?.length ? items.map((i) => `- ${inline(i)}`).join('\n') :
|
|
213
|
+
function bullets(items = [], none = '_None_') {
|
|
214
|
+
return items?.length ? items.map((i) => `- ${inline(i)}`).join('\n') : none
|
|
207
215
|
}
|
|
208
216
|
|
|
209
217
|
function code(value) {
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* PRD hub Markdown audit — section titles must be English (structureLocale: en).
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
|
|
10
|
+
const PLACEHOLDER_RE = /\[[^\]]{4,}\]/;
|
|
11
|
+
|
|
12
|
+
function hubKind(filePath) {
|
|
13
|
+
const norm = filePath.split(path.sep).join('/');
|
|
14
|
+
if (norm.endsWith('overview/index.md')) return 'overview';
|
|
15
|
+
if (norm.endsWith('_surface-index.template.md')) return 'surface';
|
|
16
|
+
if (norm.endsWith('_module-index.template.md')) return 'module';
|
|
17
|
+
if (/\/surfaces\/[^/]+\/index\.md$/.test(norm) && !norm.includes('/CMP-')) return 'surface';
|
|
18
|
+
if (/\/CMP-[^/]+\/index\.md$/.test(norm)) return 'module';
|
|
19
|
+
if (norm.includes('/operational-areas/') && norm.endsWith('.md')) return 'operational';
|
|
20
|
+
return 'unknown';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function hasEnglishGoals(text) {
|
|
24
|
+
return /##\s+Goals\b/i.test(text);
|
|
25
|
+
}
|
|
26
|
+
function hasEnglishBackground(text) {
|
|
27
|
+
return /##\s+Background\b/i.test(text);
|
|
28
|
+
}
|
|
29
|
+
function hasEnglishScope(text) {
|
|
30
|
+
return /##\s+Scope\b/i.test(text);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function auditHubPrdContent(rawText, filePath) {
|
|
34
|
+
const gaps = [];
|
|
35
|
+
const warnings = [];
|
|
36
|
+
const kind = hubKind(filePath);
|
|
37
|
+
|
|
38
|
+
function addGap(code, fieldPath, message, suggestedFix) {
|
|
39
|
+
gaps.push({ code, severity: 'critical', path: fieldPath, message, suggestedFix });
|
|
40
|
+
}
|
|
41
|
+
function addWarning(code, fieldPath, message, suggestedFix) {
|
|
42
|
+
warnings.push({ code, path: fieldPath, message, suggestedFix });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const needsGoals = kind === 'overview' || kind === 'surface' || kind === 'module';
|
|
46
|
+
const needsBackground = kind === 'overview' || kind === 'surface';
|
|
47
|
+
const needsScope = kind !== 'unknown';
|
|
48
|
+
|
|
49
|
+
if (needsGoals && !hasEnglishGoals(rawText)) {
|
|
50
|
+
addGap(
|
|
51
|
+
'HUB_MISSING_GOALS',
|
|
52
|
+
'section.goals',
|
|
53
|
+
'Missing `## Goals` (English section key).',
|
|
54
|
+
'Add ## Goals {#goals} with business bullets (prose in contentLocale).'
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (needsBackground && !hasEnglishBackground(rawText)) {
|
|
59
|
+
addGap(
|
|
60
|
+
'HUB_MISSING_BACKGROUND',
|
|
61
|
+
'section.background',
|
|
62
|
+
'Missing `## Background`.',
|
|
63
|
+
'Add ## Background {#background}.'
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (needsScope && !hasEnglishScope(rawText)) {
|
|
68
|
+
addGap(
|
|
69
|
+
'HUB_MISSING_SCOPE',
|
|
70
|
+
'section.scope',
|
|
71
|
+
'Missing `## Scope`.',
|
|
72
|
+
'Add ## Scope {#scope} with In scope / Out of scope bullets.'
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (/##\s+Mục tiêu/i.test(rawText) || /##\s+Bối cảnh/i.test(rawText) || /##\s+Phạm vi/i.test(rawText)) {
|
|
77
|
+
addWarning(
|
|
78
|
+
'HUB_VI_SECTION_TITLE',
|
|
79
|
+
'section.locale',
|
|
80
|
+
'Vietnamese section titles detected — use English keys (Goals, Background, Scope).',
|
|
81
|
+
'Rename headings to English; keep Vietnamese in body only.'
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (kind === 'module' && !/Features overview|Goals/i.test(rawText)) {
|
|
86
|
+
addWarning(
|
|
87
|
+
'HUB_MODULE_FEATURES_THIN',
|
|
88
|
+
'section.features',
|
|
89
|
+
'Module index missing Features overview / Goals.',
|
|
90
|
+
'Add ## Features overview and link function folders.'
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (PLACEHOLDER_RE.test(rawText)) {
|
|
95
|
+
addWarning(
|
|
96
|
+
'HUB_PLACEHOLDER',
|
|
97
|
+
'body',
|
|
98
|
+
'Template placeholders `[...]` remain.',
|
|
99
|
+
'Replace with real copy in contentLocale before sign-off.'
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (/##\s+Personas/i.test(rawText) || /Success metrics/i.test(rawText)) {
|
|
104
|
+
addWarning(
|
|
105
|
+
'HUB_DEPRECATED_SECTION',
|
|
106
|
+
'body',
|
|
107
|
+
'Personas or Success metrics sections — not SSOT on hub.',
|
|
108
|
+
'Remove or manage outside hub.'
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
target: filePath,
|
|
114
|
+
hubKind: kind,
|
|
115
|
+
structureLocale: 'en',
|
|
116
|
+
totalGaps: gaps.length,
|
|
117
|
+
totalWarnings: warnings.length,
|
|
118
|
+
gaps,
|
|
119
|
+
warnings,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const args = process.argv.slice(2);
|
|
124
|
+
if (args.length === 0) {
|
|
125
|
+
console.log('Usage: node engines/docs/lib/audit-hub-prd.mjs <path-to-hub.md>');
|
|
126
|
+
process.exit(0);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const targetFile = path.resolve(process.cwd(), args[0]);
|
|
130
|
+
if (!fs.existsSync(targetFile)) {
|
|
131
|
+
console.error(JSON.stringify({ error: `File not found: ${targetFile}` }));
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const rawText = fs.readFileSync(targetFile, 'utf8');
|
|
136
|
+
console.log(JSON.stringify(auditHubPrdContent(rawText, targetFile), null, 2));
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Audit risk SSOT: architecture/11-risks/risk-register.md (member register)
|
|
5
|
+
* or legacy short catalog on index.md.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import fs from 'node:fs';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
|
|
11
|
+
function isRiskRegister(filePath) {
|
|
12
|
+
return path.basename(filePath) === 'risk-register.md';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function auditRisksCatalogContent(rawText, filePath) {
|
|
16
|
+
const gaps = [];
|
|
17
|
+
const warnings = [];
|
|
18
|
+
const register = isRiskRegister(filePath);
|
|
19
|
+
|
|
20
|
+
function addGap(code, fieldPath, message, suggestedFix) {
|
|
21
|
+
gaps.push({ code, severity: 'warning', path: fieldPath, message, suggestedFix });
|
|
22
|
+
}
|
|
23
|
+
function addWarning(code, fieldPath, message, suggestedFix) {
|
|
24
|
+
warnings.push({ code, path: fieldPath, message, suggestedFix });
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const hasRiskCol = /\|\s*Rủi ro\s*\|/i.test(rawText) || /\|\s*Mô tả\s*\|/i.test(rawText);
|
|
28
|
+
const hasTable =
|
|
29
|
+
/\|\s*Risk\s*\|/i.test(rawText) ||
|
|
30
|
+
/\|\s*ID\s*\|/i.test(rawText) ||
|
|
31
|
+
hasRiskCol;
|
|
32
|
+
|
|
33
|
+
if (!hasTable) {
|
|
34
|
+
addGap(
|
|
35
|
+
'RISK_CATALOG_NO_TABLE',
|
|
36
|
+
'risks.table',
|
|
37
|
+
register
|
|
38
|
+
? 'Chưa có bảng sổ rủi ro (risk register).'
|
|
39
|
+
: 'Chưa có bảng rủi ro (cột Risk/Rủi ro + Phương án).',
|
|
40
|
+
register
|
|
41
|
+
? 'Dùng template risk-register.md: cột Hạn mức, Nhu cầu, Chênh lệch.'
|
|
42
|
+
: 'Thêm bảng markdown hoặc link sang risk-register.md.'
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (register) {
|
|
47
|
+
const needCols = [
|
|
48
|
+
{ re: /\bLimit\b/i, code: 'RISK_REG_MISSING_LIMIT_COL', label: 'Limit' },
|
|
49
|
+
{ re: /\bNeed\b/i, code: 'RISK_REG_MISSING_NEED_COL', label: 'Need' },
|
|
50
|
+
{ re: /\bGap\b/i, code: 'RISK_REG_MISSING_GAP_COL', label: 'Gap' },
|
|
51
|
+
{ re: /Mitigation/i, code: 'RISK_REG_MISSING_MITIGATION_COL', label: 'Mitigation' },
|
|
52
|
+
];
|
|
53
|
+
for (const col of needCols) {
|
|
54
|
+
if (!col.re.test(rawText)) {
|
|
55
|
+
addGap(
|
|
56
|
+
col.code,
|
|
57
|
+
'riskRegister.columns',
|
|
58
|
+
`Thiếu cột «${col.label}» trong bảng risk register.`,
|
|
59
|
+
`Thêm cột ${col.label} để so sánh quota/hạn mức với nhu cầu peak.`
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const hasRiskId = /RISK-[A-Z0-9_-]+/i.test(rawText);
|
|
65
|
+
if (!hasRiskId) {
|
|
66
|
+
addWarning(
|
|
67
|
+
'RISK_REG_NO_ID',
|
|
68
|
+
'riskRegister.ids',
|
|
69
|
+
'Chưa có mã RISK-* trong sổ (chỉ placeholder mẫu?).',
|
|
70
|
+
'Thêm ít nhất một dòng rủi ro thật với mã RISK-….'
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const rows = rawText.match(/^\|[^|]+\|[^|]+\|[^|]+\|/gm) || [];
|
|
75
|
+
const dataRows = rows.filter(
|
|
76
|
+
(r) => !r.includes('---') && !/^\|\s*[-:]+\s*\|/.test(r) && !/^\|\s*Mã\s*\|/i.test(r)
|
|
77
|
+
);
|
|
78
|
+
const realRows = dataRows.filter((r) => /RISK-/i.test(r) && !/RISK-EXAMPLE/i.test(r));
|
|
79
|
+
if (hasTable && realRows.length < 1) {
|
|
80
|
+
addWarning(
|
|
81
|
+
'RISK_REG_EMPTY',
|
|
82
|
+
'riskRegister.rows',
|
|
83
|
+
'Sổ rủi ro chưa có dòng nghiệp vụ (ngoài ví dụ RISK-EXAMPLE).',
|
|
84
|
+
'Thêm rủi ro thật — vd. quota email, rate limit API, license.'
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
const rows = rawText.match(/^\|[^|]+\|[^|]+\|/gm) || [];
|
|
89
|
+
const dataRows = rows.filter((r) => !r.includes('---') && !/^\|\s*[-:]+\s*\|/.test(r));
|
|
90
|
+
if (hasTable && dataRows.length < 2) {
|
|
91
|
+
addWarning(
|
|
92
|
+
'RISK_CATALOG_EMPTY',
|
|
93
|
+
'risks.rows',
|
|
94
|
+
'Bảng rủi ro chưa có dòng nghiệp vụ (chỉ header).',
|
|
95
|
+
'Ưu tiên điền architecture/11-risks/risk-register.md.'
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
if (!/risk-register\.md/i.test(rawText)) {
|
|
99
|
+
addWarning(
|
|
100
|
+
'RISK_INDEX_NO_REGISTER_LINK',
|
|
101
|
+
'risks.index',
|
|
102
|
+
'index.md chưa trỏ sang risk-register.md.',
|
|
103
|
+
'Link [risk-register.md](./risk-register.md) là SSOT member.'
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (/\[(?:\.\.\.|TBD|Tên|VD:)/i.test(rawText)) {
|
|
109
|
+
addWarning(
|
|
110
|
+
'RISK_PLACEHOLDER',
|
|
111
|
+
'body',
|
|
112
|
+
'Còn placeholder template trong file rủi ro.',
|
|
113
|
+
'Điền rủi ro thật hoặc defer qa/.'
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
target: filePath,
|
|
119
|
+
documentKind: register ? 'risk-register' : 'risks-index',
|
|
120
|
+
totalGaps: gaps.length,
|
|
121
|
+
totalWarnings: warnings.length,
|
|
122
|
+
gaps,
|
|
123
|
+
warnings,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const args = process.argv.slice(2);
|
|
128
|
+
if (args.length === 0) {
|
|
129
|
+
console.log(
|
|
130
|
+
'Usage: node engines/docs/lib/audit-risks-catalog.mjs <architecture/11-risks/risk-register.md|index.md>'
|
|
131
|
+
);
|
|
132
|
+
process.exit(0);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const targetFile = path.resolve(process.cwd(), args[0]);
|
|
136
|
+
if (!fs.existsSync(targetFile)) {
|
|
137
|
+
console.error(JSON.stringify({ error: `File not found: ${targetFile}` }));
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const rawText = fs.readFileSync(targetFile, 'utf8');
|
|
142
|
+
console.log(JSON.stringify(auditRisksCatalogContent(rawText, targetFile), null, 2));
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { parse } from 'yaml';
|
|
4
|
+
|
|
5
|
+
/** Headings / YAML keys / audit anchors — always English. */
|
|
6
|
+
export const STRUCTURE_LOCALE = 'en';
|
|
7
|
+
|
|
8
|
+
/** @param {string} [code] @param {string} [fallback] */
|
|
9
|
+
export function normalizeContentLocale(code, fallback = 'vi') {
|
|
10
|
+
const s = String(code ?? '').trim();
|
|
11
|
+
if (!s) return fallback;
|
|
12
|
+
return s.replace(/\s+/g, '-').toLowerCase();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @param {{ text: Function, isCancel: Function, cancel: Function }} clack
|
|
17
|
+
* @returns {Promise<string>}
|
|
18
|
+
*/
|
|
19
|
+
export async function promptDocsContentLocale(clack) {
|
|
20
|
+
const { text, isCancel, cancel } = clack;
|
|
21
|
+
const ans = await text({
|
|
22
|
+
message:
|
|
23
|
+
'Member prose locale for document spec + test documents (BCP-47 tag, e.g. vi, en, ja — keys/headings stay English):',
|
|
24
|
+
defaultValue: 'vi',
|
|
25
|
+
placeholder: 'vi',
|
|
26
|
+
});
|
|
27
|
+
if (isCancel(ans)) {
|
|
28
|
+
cancel('Cancelled.');
|
|
29
|
+
process.exit(0);
|
|
30
|
+
}
|
|
31
|
+
return normalizeContentLocale(ans, 'vi');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @param {string} docsRootAbs
|
|
36
|
+
* @param {{ structureLocale: string, contentLocale: string }} locales
|
|
37
|
+
*/
|
|
38
|
+
export function writeDocsHubLocaleManifest(docsRootAbs, locales) {
|
|
39
|
+
const file = path.join(docsRootAbs, 'docs-hub.locale.yaml');
|
|
40
|
+
const body = `# SSOT — structureLocale is always en (headings/keys). Prose follows contentLocale.\nstructureLocale: ${locales.structureLocale}\ncontentLocale: ${locales.contentLocale}\n`;
|
|
41
|
+
fs.writeFileSync(file, body, 'utf8');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** English section labels for tests-docs render (never translated per locale). */
|
|
45
|
+
export const TESTS_HUB_HEADINGS_EN = {
|
|
46
|
+
home: 'Home',
|
|
47
|
+
cases: 'Test cases',
|
|
48
|
+
scenarios: 'Scenarios',
|
|
49
|
+
plans: 'Test plans',
|
|
50
|
+
preconditions: 'Preconditions',
|
|
51
|
+
steps: 'Steps',
|
|
52
|
+
expected: 'Expected results',
|
|
53
|
+
traceability: 'Traceability (docs SSOT)',
|
|
54
|
+
testMatrix: 'Test matrix (equivalence)',
|
|
55
|
+
crossRefDocs: 'Docs hub cross-reference',
|
|
56
|
+
technical: 'Technical details',
|
|
57
|
+
testData: 'Test data',
|
|
58
|
+
coverage: 'Coverage',
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @param {string} testsRootAbs
|
|
63
|
+
* @param {{ structureLocale: string, contentLocale: string }} locales
|
|
64
|
+
*/
|
|
65
|
+
export function writeTestsHubLocaleCatalog(testsRootAbs, locales) {
|
|
66
|
+
const catalogDir = path.join(testsRootAbs, 'catalog');
|
|
67
|
+
if (!fs.existsSync(catalogDir)) {
|
|
68
|
+
fs.mkdirSync(catalogDir, { recursive: true });
|
|
69
|
+
}
|
|
70
|
+
const file = path.join(catalogDir, 'locale.yaml');
|
|
71
|
+
const lines = [
|
|
72
|
+
'# SSOT — headings are English; TC prose in YAML follows contentLocale.',
|
|
73
|
+
`structureLocale: ${locales.structureLocale}`,
|
|
74
|
+
`contentLocale: ${locales.contentLocale}`,
|
|
75
|
+
'headings:',
|
|
76
|
+
...Object.entries(TESTS_HUB_HEADINGS_EN).map(([k, v]) => ` ${k}: ${v}`),
|
|
77
|
+
];
|
|
78
|
+
fs.writeFileSync(file, `${lines.join('\n')}\n`, 'utf8');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @param {string} projectRoot
|
|
83
|
+
* @param {string} [docsRootRel]
|
|
84
|
+
*/
|
|
85
|
+
export function loadDocsHubLocale(projectRoot, docsRootRel) {
|
|
86
|
+
const rel = docsRootRel || process.env.FLOWGRID_DOCS_ROOT || 'docs';
|
|
87
|
+
const manifest = path.join(path.resolve(projectRoot), rel, 'docs-hub.locale.yaml');
|
|
88
|
+
if (!fs.existsSync(manifest)) {
|
|
89
|
+
return { structureLocale: STRUCTURE_LOCALE, contentLocale: 'vi' };
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
const data = parse(fs.readFileSync(manifest, 'utf8')) ?? {};
|
|
93
|
+
return {
|
|
94
|
+
structureLocale: data.structureLocale || STRUCTURE_LOCALE,
|
|
95
|
+
contentLocale: normalizeContentLocale(data.contentLocale, 'vi'),
|
|
96
|
+
};
|
|
97
|
+
} catch {
|
|
98
|
+
return { structureLocale: STRUCTURE_LOCALE, contentLocale: 'vi' };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -6,6 +6,7 @@ import { renderSpecMarkdown } from './render-spec-markdown.mjs'
|
|
|
6
6
|
import { renderDataModelMarkdown } from './render-data-model-markdown.mjs'
|
|
7
7
|
import { renderApiSummaryMarkdown } from './render-api-summary-markdown.mjs'
|
|
8
8
|
import { resolveBackendSpecForBundle } from '../../spec/lib/audit-db-tables.mjs'
|
|
9
|
+
import { loadDocsHubLocale } from './docs-hub-locale.mjs'
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Flatten bundle → spec shape (tests / fallback). Prefer ir/spec.yaml for site MD.
|
|
@@ -17,7 +18,11 @@ export function bundleToSpecShape(bundle) {
|
|
|
17
18
|
status: bundle.status,
|
|
18
19
|
owner: bundle.owner,
|
|
19
20
|
summary: bundle.summary ?? bundle.review?.summary,
|
|
20
|
-
|
|
21
|
+
scopeIn: bundle.scopeIn,
|
|
22
|
+
nonGoals: bundle.nonGoals,
|
|
23
|
+
userFlows: bundle.userFlows,
|
|
24
|
+
nfr: bundle.nfr,
|
|
25
|
+
userStories: bundle.userStories ?? bundle.spec?.userStories,
|
|
21
26
|
}
|
|
22
27
|
return {
|
|
23
28
|
...meta,
|
|
@@ -158,11 +163,13 @@ export async function writeIrSpecMarkdownFile(specFile, mdOut, context = {}) {
|
|
|
158
163
|
const design = existsSync(designFile) ? parse(await readFile(designFile, 'utf8')) ?? {} : {}
|
|
159
164
|
const specShape = mergeDesignIntoSpecForRender(spec, design)
|
|
160
165
|
const projectRoot = context.projectRoot ?? process.cwd()
|
|
166
|
+
const { contentLocale: docsContentLocale } = loadDocsHubLocale(projectRoot)
|
|
161
167
|
const markdown = renderIrSpecMarkdown(specShape, {
|
|
162
168
|
testcases: [],
|
|
163
169
|
output: { specFile: path.basename(mdOut), testcasesDir: 'testcases' },
|
|
164
170
|
devAppBaseUrl: context.devAppBaseUrl ?? '',
|
|
165
171
|
projectRoot,
|
|
172
|
+
docsContentLocale,
|
|
166
173
|
})
|
|
167
174
|
await mkdir(path.dirname(mdOut), { recursive: true })
|
|
168
175
|
await writeFile(mdOut, markdown, 'utf8')
|